Ваша проблема заключается в том, что вы используете символ, Вы должны объявить строку, так что вы можете сравнить эту строку на вход, парень выше дал хорошо/очень slacky/слишком сложным для вас ответ (извините нет я просто пытаюсь показать контраст между сложным и легким ответом, не пытаясь оскорбить вас), а отчасти потому, что он не объяснил, что он делает, и потому, что он делает ненужную/бесполезную работу. Существует функция в C++, называемая Serial.readString(), намного проще, чем там. Если предположить, что уровень программирования (без обид) из вашего вопроса здесь быстрый обзор по типам данных:
String = «»
INT = целое число {1,2,3,4,5 , 6, ...}
символ = '' < - Обратите внимание на отличие от String = ""
поплавок = число с плавающей точкой {1.2,4.5, ...}
(Это не все из них, есть еще как байты и так далее, но только убедитесь, что вы знаете, как использовать выше первый)
/*
Simple LED sketch
*/
int led = 7; // Pin 13
String ser; //Declare the string that is going to store what your are going to
//write in the serial
void setup(){
// Start up serial connection
//It's good convention to start the serial before pinMode or any other thing
//in setup
Serial.begin(9600); //I don't know why you need such an high baud rate in
//your thing, 9600 for what you have to do is more than fine, this is just at
//what speed the serial is read (in a very general explanation)
pinMode(led, OUTPUT); // Set pin 13 as digital out
//make sure you put in here wheter you want to start the led "on" or "off"
//Eg you want it to start on, then digitalWrite(led, HIGH);
}
void loop(){
ser = Serial.readString();
if(Serial.available() == 0) { //You can also use a while loop if you want to
//This is telling the arduino: if there is something in the serial, then do...
if(ser == "on"){
Serial.println("on");
digitalWrite(led, HIGH);
}else if(ser == "off"){
Serial.println("off");
digitalWrite(led, LOW);
}
}
}
Надеется, что это помогло! заметить также, как приведенный выше код с
if(Serial.available())
Это довольно странно и SHADY заявление и не может работать. Это потому, что вы на самом деле не говорит INT значение в функции Serial.available
Как Arduino руководств указать:
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
просматриваться here
Есть ли вариант использования, который требует и оправдать увеличение размера и сложности полезной нагрузки? –