Aqui está um código muito simples...
void setup() {
Serial.begin(9600);
pinMode(A0, OUTPUT);
}
void loop() {
char c = Serial.read();
if(Serial.read() == '1'){
digitalWrite(A0, HIGH);
}
if(Serial.read() == '2'){
digitalWrite(A0, LOW);
}
}
Ao envia-lo para o Arduino, abro meu Serial Monitor, e ao inserir o caracter 1, nada é feito, para funcionar tenho que inserir vários 11111 para A0 acionar, alguém sabe como proceder?
Se apagares esta linha:
char c = Serial.read();
Isso deixa de acontecer tantas vezes, mas ainda vai acontecer na mesma por causa do if a testar se o caracter é 2.
Não quererás algo assim:
void setup() {
Serial.begin(9600);
pinMode(A0, OUTPUT);
}
void loop() {
if (Serial.available() >0) { //existe algo para ler...
char c = Serial.read(); //lê para aqui...
if(c == '1'){ // testa o que foi lido...
digitalWrite(A0, HIGH);
}
if(Serial.read() == '2'){ // se não era um 1, será um 2?
digitalWrite(A0, LOW);
}
}
}
Sempre que fazes read, tiras um valor do array. Se fizeres read naquele if que testa o 2 e tiveres escrito um 1, esse 1 é ignorado.