Salve ragazzi, tempo fà ho realizzato un contapunti automatico per il biliardino servendomi semplicemente di 2 diodi led, uno che mandava un segnale fisso e l'altro che leggeva, in modo tale che la passaggio della pallina, il fascio di luce si interrompesse e lo sketch incrementasse di un punto alla squadra vincitrice.
il tutto funziona in maniera + o - buona ma la cosa che nn va bene è il fatto che nn ho modulato i raggi infrarossi e di conseguenza a volte segna qualke punto in più a seconda del sole e della temperatura e anche leggendo i valori nella seriale, nn ottengo mai valori precisi. Ora vorrei far si che il progetto diventasse migliore e quindi vorrei modulare il segnale degli infrarossi. Sto facendo delle prove con la breadboard per mandare un segnale modulato in una qualsiasi codifica (NEC,SONY, ECC) e nello stesso sketch riceverlo e stamparlo sulla seriale mettendo uno di fronte all'altro il led che manda e il ricevitore dall'altra parte in modo tale che al passaggio della pallina sulla seriale si interrompi il codice modulato e mi dia un valore diverso necessario x apprendere la variazione e incrementare il punteggio. ad esempio mando un codice tipo 20DF00FF e sulla seriale voglio che si stampi in continuazione questo. Al passaggio della pallina, siccome si interrompe il raggio, voglio che sulla seriale si stampi ad esempio 0 in modo tale da far accorgere allo sketch, una variazione.
Sto lavorando con i vari esempi della libreria ir e altro ma nn riesco a far fare ciò che voglio in un unico sketch..ad esempio questo sketch sotto, nn funziona. dove sbaglio? grazie in anticipo ragazzi
#include <IRremote.h>
IRsend irsend;
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop(){
scrittura();
lettura();
}
void lettura() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}
void scrittura() {
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0x20DF10EF,32);
delay(100);
}
}