2016-05-17 27 views
1

Ich bin neu bei Arduino. Momentan arbeite ich an einem Projekt, das einen Telefon-Gyro-Sensor verwendet, um die Bewegung des RC-Autos zu steuern. Das ist mein Code bisher;Fehler bei der Verwendung der IF-Anweisung

char blueToothVal;   //value sent over via bluetooth 
char lastValue;    //stores last state of device (on/off) 
String str,x,y,z; 
int value = 0; 


void setup() 
{ 
Serial.begin(9600); 

} 


void loop() 
{ 
if(Serial.available() >0 && value == 0) { 
str= Serial.readStringUntil('A'); 
value = 1; 

if(value == 1){ 
    x= Serial.readStringUntil(';'); 
    Serial.print("x = "); 
    Serial.print(x.toFloat()); 
    Serial.print(" "); 
    y=Serial.readStringUntil(';'); 
    Serial.print("y = "); 
    Serial.print(y.toFloat()); 
    Serial.print(" "); 
    z= Serial.readStringUntil('A'); 
    Serial.print("z = "); 
    Serial.print(z.toFloat()); 
    Serial.println('\n'); 
    value = 0; 
    delay(10); 
} 
} 
if(y >=5){ //car forward 
//CODING MOTOR HERE 
} 

if(y <= -3){ //car backward 
//CODING MOTOR HERE 
} 

if(y >=5 && z >= 5){ //car steer to the left 
//CODING MOTOR HERE 
} 

if(y >=5 && z <= -10){ //car steer to the right 
//CODING MOTOR HERE 
} 

if(y <= -3 && z >=5){ //car reverse to the left 
//CODING MOTOR HERE 
} 

if(y <= -3 && z <= -10){ //car reverse to the right 
//CODING MOTOR HERE 
} 

if(x >= 330.00){ // only left tyre go forward 
//CODING MOTOR HERE 
} 

if(x <= 300.00){ // only right tyre go forward 
//CODING MOTOR HERE 
} 
} 

Ich benutze Arduino Uno R3 und DF Roboter Motorschild. Mein Problem hier ist, dass diese Codierung nicht kompiliert werden kann. Kann mir jemand etwas Licht auf meinen Fehler geben und was soll ich tun?

Die Fehlermeldung:

error: converting to 'const String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

Angabe der Linie

if (y >= 5){ //car forward 
+0

Ja der Fehlerstatus unten wie @ Ben Kommentar. –

Antwort

1

Compilation Nachrichten sollten hilfreich sein.

Erste von ihnen ist:

sketch_may17a:37: error: converting to 'const String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

Der Grund ist y ein String ist und Sie mit ihm tun numerischen Comparaisons (zum Beispiel):

if(y >=5) 

Ersetzen Sie ihn durch:

if(y.toInt() >= 5) 
+0

Ja, ich dachte, ich kann das machen. Hast du eine Idee, was ich ändern sollte? –

+1

@ZikriIrfan: Sie müssen eine Umwandlung von String zu Int: Sie können .toInt() verwenden https://www.arduino.cc/en/Reference/StringToInt => zum Beispiel y.toInt() –

+1

Danke @ Benoît . Da meine Daten in dezimaler Form sind, sollte ich sie durch ersetzen, wenn (y.toFloat()> = 5) richtig? –

Verwandte Themen