arduino错误:在数字常量之前预期','或'...'

时间:2014-04-09 23:08:30

标签: c++ arduino arduino-uno

我是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),boolean是原始数据类型(http://en.wikipedia.org/wiki/Primitive_data_type

EDIT2:我在下图中为示例(binaryOut)中的shiftOut建模了。
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

我最初认为&#34; 111&#34;和&#34; 112&#34;对应于行号,但我的代码少于90行。

2 个答案:

答案 0 :(得分:3)

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);

答案 1 :(得分:1)

这个答案仅供记录之用。

我发现这个例子http://arduino.cc/en/Tutorial/PlayMelody?action=sourceblock&num=1可以播放旋律。

示例代码中的以下行也会向我抛出相同的错误 expect&#39;,&#39;或者&#39; ...&#39;在数字常量之前

#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 

虽然定义你不能使用小写单字母。