#arduino #arduino-c
Вопрос:
Я закодировал на C так, чтобы он принимал ввод от пользователя, а затем загорался соответствующий светодиод.Это мой код..
int rPin = 13;`
int gPin = 12;
int yPin = 11;
int dTime = 500;
String input;
//Strings
//String red = "red";
String prompt1 = "Enter the color : ";
String conformation = "Entered color is ";
void setup(){
pinMode(rPin,OUTPUT);
pinMode(gPin,OUTPUT);
pinMode(yPin,OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.println(prompt1);
input = Serial.readString();
while(Serial.available() == 0) {
}
if (input == "red"){
digitalWrite(rPin,HIGH);
delay(dTime);
digitalWrite(rPin,LOW);
delay(dTime);
} else if (input == "green"){
digitalWrite(gPin,HIGH);
delay(dTime);
digitalWrite(gPin,LOW);
delay(dTime);
} else if (input == "yellow"){
digitalWrite(yPin,HIGH);
delay(dTime);
digitalWrite(yPin,LOW);
delay(dTime);
}
// digitalWrite(gPin,HIGH);
// digitalWrite(yPin,HIGH);
С подключением моей схемы arduino проблем нет ,я трижды проверяю ее …
Комментарии:
1.Разве вам не нужно звонить
Serial.readString()
после цикла, который вызываетSerial.available()
? Вы вызываете его до того, как будет доступен ввод.2. мой код c для arduino не работает — это не очень хорошее описание проблемы. Вы должны описать, чего вы ожидаете от ввода и что вы получаете.
3. Что такое
String
? Если это typedef для строк в стиле C, вы должны использоватьstrcmp()
его для сравнения, а не==
. Но если это похоже на Cstd::string
, тогда==
все в порядке.4. Вы можете получить более полезную помощь, разместив сообщение на Arduino
5. Попробуйте распечатать значение
input
после того, как вы его прочитаете.