プロが教えるわが家の防犯対策術!

次のプログラムを実行したら、
: In function 'void loop()':

sketch_nov03a:46:14: error: switch quantity not an integer

sketch_nov03a:53:11: error: expected ':' before ';' token

exit status 1

switch quantity not an integer
と表示されました。何がダメなのでしょう?教えてください。

#define TRIGPIN1 8
#define ECHOPIN1 9
#define TRIGPIN2 12
#define ECHOPIN2 13
#define CTM 10
void setup() {
Serial.begin(9600);
pinMode(TRIGPIN1, OUTPUT);
pinMode(ECHOPIN1, INPUT);
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(11,LOW);
}

void loop() {
int dur;
float dis1, dis2, NVT = 5.00, sens;
digitalWrite(TRIGPIN1, HIGH);
delayMicroseconds(CTM);
digitalWrite(TRIGPIN1, LOW);
dur = pulseIn(ECHOPIN1, HIGH);
dis1 = (float)dur * 0.017;
delay(500);

digitalWrite(TRIGPIN2, HIGH);
delayMicroseconds(CTM);
digitalWrite(TRIGPIN2, LOW);
dur = pulseIn(ECHOPIN2, HIGH);
dis2 = (float)dur * 0.017;
delay(500);

sens = 0;
if (dis1 < NVT)sens = sens + 1;
if (dis2 < NVT)sens = sens + 2;
Serial.print(dis1);
Serial.print("/");
Serial.print(dis2);
Serial.print("/");
Serial.println(sens);

switch(sens){
case 0:
analogWrite(3,100);
analogWrite(5,0);
analogWrite(6,100);
analogWrite(11,0);
break;
case 3;
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
analogWrite(11,0);

}
}

A 回答 (3件)

float dis1, dis2, NVT = 5.00, sens;



float dis1, dis2, NVT = 5.00;
int sens;
に分けるのでは。
case 3;
  は
case 3: では
    • good
    • 0

>>switch quantity not an integer



このエラーメッセージのとおりでしょう。
「switchの値がintegerになっていない」と怒られているようです。
    • good
    • 0

>sketch_nov03a:46:14: error: switch quantity not an integer


使ってる変数を整数型にしてみては。

>sketch_nov03a:53:11: error: expected ':' before ';' token
セミコロンじゃなく、コロンにしてみては。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!