помилка 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<

EDIT: у Arduino HIGH і LOW визначені константи ), а логічний тип - примітивний тип даних ()

EDIT2: I modeled the binaryOut from the example (shiftOut) in the image below.
enter image description here

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 SE (arduino.stackexchange.com)
додано Автор naren, джерело
Перемістіть це питання до Arduino SE (arduino.stackexchange.com)
додано Автор naren, джерело
Повне повідомлення про помилку, де?
додано Автор Ignacio Vazquez-Abrams, джерело
Він міститься у файлі, вказаному в повідомленні про помилку. Або принаймні ви були б ближче знайти його
додано Автор Ignacio Vazquez-Abrams, джерело
Він міститься у файлі, вказаному в повідомленні про помилку. Або принаймні ви були б ближче знайти його
додано Автор Ignacio Vazquez-Abrams, джерело
Файли в повідомленні про помилку.
додано Автор Ignacio Vazquez-Abrams, джерело
Файли в повідомленні про помилку.
додано Автор Ignacio Vazquez-Abrams, джерело
Файли в повідомленні про помилку.
додано Автор Ignacio Vazquez-Abrams, джерело
Ви помітили, як повідомлення про помилку не вказує на ваш вихідний код?
додано Автор Ignacio Vazquez-Abrams, джерело
Ви помітили, як повідомлення про помилку не вказує на ваш вихідний код?
додано Автор Ignacio Vazquez-Abrams, джерело
Ви помітили, як повідомлення про помилку не вказує на ваш вихідний код?
додано Автор Ignacio Vazquez-Abrams, джерело
Повне повідомлення про помилку, де?
додано Автор Ignacio Vazquez-Abrams, джерело
Як сказав @ IgnacioVazquez-Abrams, ви повинні включити повне повідомлення про помилку, оскільки це буде вказувати номер рядка, де виникає помилка.
додано Автор Ben Smith, джерело
Як сказав @ IgnacioVazquez-Abrams, ви повинні включити повне повідомлення про помилку, оскільки це буде вказувати номер рядка, де виникає помилка.
додано Автор Ben Smith, джерело
Як сказав @ IgnacioVazquez-Abrams, ви повинні включити повне повідомлення про помилку, оскільки це буде вказувати номер рядка, де виникає помилка.
додано Автор Ben Smith, джерело
Я думаю, що нам потрібно більше інформації про це. Існують константи, які використовуються, але не визначені у вашому зразку (логічне, байта, LOW, HIGH, і т.д.). Знання цих констант може допомогти. Також дюйми визначається як довгий, але ви передаєте його binaryOut , який очікує байт . Може статися втрата даних. Якщо повідомлення про помилку дійсно включало "...", то я б схилявся до нього, будучи проблемою з визначенням функції, оскільки єдине місце, яке я знаю в C, що використовує "...", є визначення функції variadic.
додано Автор Velox, джерело
Ви пробували змінити Serial.println (dataOut); на Serial.print (dataOut); ? Схоже, println призначений для рядків, а dataOut - це байт.
додано Автор Velox, джерело
Ви пробували змінити Serial.println (dataOut); на Serial.print (dataOut); ? Схоже, println призначений для рядків, а dataOut - це байт.
додано Автор Velox, джерело
Ви пробували змінити Serial.println (dataOut); на Serial.print (dataOut); ? Схоже, println призначений для рядків, а dataOut - це байт.
додано Автор Velox, джерело
Я думаю, що нам потрібно більше інформації про це. Існують константи, які використовуються, але не визначені у вашому зразку (логічне, байта, LOW, HIGH, і т.д.). Знання цих констант може допомогти. Також дюйми визначається як довгий, але ви передаєте його binaryOut , який очікує байт . Може статися втрата даних. Якщо повідомлення про помилку дійсно включало "...", то я б схилявся до нього, будучи проблемою з визначенням функції, оскільки єдине місце, яке я знаю в C, що використовує "...", є визначення функції variadic.
додано Автор Velox, джерело
@Velox, я редагував повідомлення, щоб відповісти на деякі з ваших запитань. Будь ласка, дайте мені знати, якщо є щось інше.
додано Автор user2755399, джерело
'println' додає новий символ рядка після друку або тексту ( arduino.cc/en/Serial/ Println )
додано Автор user2755399, джерело
позначається мод з запитом на переміщення.
додано Автор user2755399, джерело
@Velox, я редагував повідомлення, щоб відповісти на деякі з ваших запитань. Будь ласка, дайте мені знати, якщо є щось інше.
додано Автор user2755399, джерело
Відповідь нижче.
додано Автор user2755399, джерело
'println' додає новий символ рядка після друку або тексту ( arduino.cc/en/Serial/ Println )
додано Автор user2755399, джерело
'println' додає новий символ рядка після друку або тексту ( arduino.cc/en/Serial/ Println )
додано Автор user2755399, джерело
Я знайшов файли. Як я можу діагностувати помилку спочатку і виявив проблему? Чи буде це у файлі ".H"?
додано Автор user2755399, джерело
Я знайшов файли. Як я можу діагностувати помилку спочатку і виявив проблему? Чи буде це у файлі ".H"?
додано Автор user2755399, джерело
Я знайшов файли. Як я можу діагностувати помилку спочатку і виявив проблему? Чи буде це у файлі ".H"?
додано Автор user2755399, джерело
Відповідь нижче.
додано Автор user2755399, джерело
Відповідь нижче.
додано Автор user2755399, джерело

6 Відповіді

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

  недійсний 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
додано
Це було. Як не дивно, в книзі я теж позначав їх "dataPin" і "clockPin", тому я думав, що це безпечно. Дякуємо за допомогу.
додано Автор user2755399, джерело

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

  недійсний 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
додано
Це було. Як не дивно, в книзі я теж позначав їх "dataPin" і "clockPin", тому я думав, що це безпечно. Дякуємо за допомогу.
додано Автор user2755399, джерело

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

  недійсний 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
додано
Це було. Як не дивно, в книзі я теж позначав їх "dataPin" і "clockPin", тому я думав, що це безпечно. Дякуємо за допомогу.
додано Автор user2755399, джерело

Ця відповідь призначена лише для запису.

I found this example http://arduino.cc/en/Tutorial/PlayMelody?action=sourceblock&num=1 to play melody.

Below lines in the example code also throws me the same error expected ',' or '…' before numeric constant

#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
додано
Але це відбувається лише для однієї літери у нижньому регістрі. #define cc 3830//Це добре працює
додано Автор naren, джерело
Це добре відзначити. Я знаю, що прийнятий синтаксис для констант полягає в тому, щоб написати їх у всіх шапках, але не знали, що ви отримаєте помилку для запуску назви константи в нижньому регістрі.
додано Автор user2755399, джерело

Ця відповідь призначена лише для запису.

I found this example http://arduino.cc/en/Tutorial/PlayMelody?action=sourceblock&num=1 to play melody.

Below lines in the example code also throws me the same error expected ',' or '…' before numeric constant

#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
додано
Але це відбувається лише для однієї літери у нижньому регістрі. #define cc 3830//Це добре працює
додано Автор naren, джерело
Це добре відзначити. Я знаю, що прийнятий синтаксис для констант полягає в тому, щоб написати їх у всіх шапках, але не знали, що ви отримаєте помилку для запуску назви константи в нижньому регістрі.
додано Автор user2755399, джерело

Ця відповідь призначена лише для запису.

I found this example http://arduino.cc/en/Tutorial/PlayMelody?action=sourceblock&num=1 to play melody.

Below lines in the example code also throws me the same error expected ',' or '…' before numeric constant

#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
додано
Але це відбувається лише для однієї літери у нижньому регістрі. #define cc 3830//Це добре працює
додано Автор naren, джерело
Це добре відзначити. Я знаю, що прийнятий синтаксис для констант полягає в тому, щоб написати їх у всіх шапках, але не знали, що ви отримаєте помилку для запуску назви константи в нижньому регістрі.
додано Автор user2755399, джерело
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147