ошибка arduino: ожидается ‘,’ или ‘…’ перед числовой константой

Я новичок в Arduino и C ++ и сталкиваюсь с вышеуказанной ошибкой. Это кажется довольно очевидным, однако я не могу найти пропущенную запятую в коде. Код работал нормально, прежде чем я добавил binaryOut функция, поэтому я верю, что это там.

Было бы хорошо, если бы Arduino дал указание о том, где происходит ошибка.

Любая помощь будет принята с благодарностью.

#define ultrasonic 6
#define buzzer 3
#define latchPin 8
#define clockPin 12
#define dataPin 11

int sound = 250;

void setup(){
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop(){
long duration, inches;

pinMode(ultrasonic, OUTPUT);
digitalWrite(ultrasonic, LOW);
delayMicroseconds(2);
digitalWrite(ultrasonic, HIGH);
delayMicroseconds(5);
digitalWrite(ultrasonic, LOW);

pinMode(ultrasonic, INPUT);
duration = pulseIn(ultrasonic, HIGH);
inches = microsecondsToInches(duration);

if(inches > 36 || inches <= 0){
Serial.print("Out of range. ");
Serial.println(inches);
}else{
Serial.print(inches);
Serial.println(" in.");
}
binaryOut(inches);
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
delay(1000);
}

long microsecondsToInches(long microseconds){
/* 73.746 microseconds per inch
* Sound travels at 1130 ft/s */
return microseconds/73.746/2;
}

void binaryOut(byte dataOut){
Serial.println(dataOut);
boolean pinState;
for(int i = 0; i <= 7; i++){
digitalWrite(clockPin, LOW);
if(dataOut & (1<<i)){
pinState = HIGH;
}else{
pinState = LOW;
}
digitalWrite(dataPin, pinState);
digitalWrite(clockPin, HIGH);
}
digitalWrite(clockPin, LOW);
}

РЕДАКТИРОВАТЬ: в Arduino HIGH и LOW определены константы (http://arduino.cc/en/Reference/Constants) и логический тип данных является примитивным (http://en.wikipedia.org/wiki/Primitive_data_type)

EDIT2: я смоделировал binaryOut из примера (shiftOut) на изображении ниже.
введите описание изображения здесь

EDIT3: точная ошибка:

In file included from UltrasonicRangeSensorAJ.ino:7:
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:111: error: expected ',' or '...' before numeric constant
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:112: error: expected ',' or '...' before numeric constant

Сначала я думал, что «111» и «112» соответствуют номеру строки, но мой код содержит менее 90 строк.

2

Решение

Библиотеки Arduino используют идентификаторы dataPin и clockPin для своих собственных целей. Определив их с фактическими значениями в вашем коде, вы сделали код Arduino некомпилируемым. Переименуй их.

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
3

Другие решения

Этот ответ только для целей записи.

Я нашел этот пример http://arduino.cc/en/Tutorial/PlayMelody?action=sourceblock&Num = 1 играть мелодию.

Ниже строки в примере кода также выдает мне ту же ошибку ожидается ‘,’ или ‘…’ перед числовой константой

#define  c     3830    // 261 Hz
#define  d     3400    // 294 Hz
#define  e     3038    // 329 Hz

Но когда я изменил строки выше, что-то вроде этого (ниже) работает нормально.

#define  C     3830    // 261 Hz
#define  D     3400    // 294 Hz
#define  E     3038    // 329 Hz

при определении вы не можете использовать строчные буквы.

1