2

私は 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行未満です。

4

2 に答える 2

1

この回答は記録目的です。

この例を見つけました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 文字を使用できません。

于 2014-07-19T08:12:21.370 に答える