Ciao.
Ho provato a creare questo sketch:
[#include <IRremote.h>
const int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;// simile al discorso che facevamo per la variabile "motore" nel progetto 8
int avantib = 13;
int frenob = 8;
int velocitab = 11;
int avantia = 12;
int frenoa = 9;
int velocitaa = 3;
void setup()
{
Serial.begin(9600); //Initialize serial communication with Bluetooth module at 115200 btu.
irrecv.enableIRIn(); //Avvia ricezione
pinMode(avantib, OUTPUT);
pinMode(frenob, OUTPUT);
pinMode(velocitab, OUTPUT);
pinMode(avantia, OUTPUT);
pinMode(frenoa, OUTPUT);
pinMode(velocitaa, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results)) // se il sensore infrarosso riceve un'informazione ARDUINO fa quello che c'è in queste parentesi graffe
{
Serial.println(results.value); // scrive sul monitor seriale il valore in un codice numerico numerico del tasto del telecomando che è stato premuto: ogni tasto di ogni telecomando ha un codice
if(results.value==3268063311){ // AVANTI
digitalWrite(avantib, LOW);
digitalWrite(frenob, LOW);
analogWrite(velocitab,255);
delay (200);
analogWrite(velocitab,0);}
if(results.value==3268061271){ // INDIETRO
digitalWrite(avantib, HIGH);
digitalWrite(frenob, LOW);
analogWrite(velocitab,255);
delay (200);
analogWrite(velocitab,0);}
if(results.value==3268060251){ // sinistra
digitalWrite(avantia, HIGH);
digitalWrite(frenoa, LOW);
analogWrite(velocitaa,255);
delay (200);
analogWrite(velocitaa,0);}
if(results.value==3268065351){ // DESTRA
digitalWrite(avantia, LOW);
digitalWrite(frenoa, LOW);
analogWrite(velocitaa,255);
delay (200);
analogWrite(velocitaa,0);}
irrecv.resume(); //Attesa ricezione prossimo valore
}
}
]
solo che in questo modo la macchina và a scatti perchè ho inserito il delay (200).
se integro la funzione while al posto di if il motore gira e poi non risponde più ai comandi.
come potrei fare?