Go Down

Topic: [Risolto] - Problema comunicazione seriale (Read 426 times) previous topic - next topic

EnigmaAren92

Feb 06, 2013, 08:10 pm Last Edit: Feb 07, 2013, 03:33 pm by EnigmaAren92 Reason: 1
Salve a tutti, son qui per spiegarvi in parole povere che cosa ho intenzione di fare, in modo tale che così anche voi avete un'idea delle mie idee xD (Ok questa era pessima).
Ad ogni modo, quello che intendo realizzare, è un semplice programma che, a seconda di cosa riceve tramite infrarossi, invii determinate strighe sulla seriale.

Posto qui di seguito il mio sketch:

Code: [Select]
#include "IRremote.h"

int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
 Serial.begin(9600);
 irrecv.enableIRIn(); // Start the receiver
 pinMode(11, OUTPUT);
}

void loop() {
 if (irrecv.decode(&results)) {
   Serial.println(results.value);
   digitalWrite(11, HIGH);
   delay(500);
   digitalWrite(11, LOW);
   irrecv.resume();
 }
 
  if ( results.value == 551520375 ){ //tasto 1 sul telecomando
 Serial.println("Ciao");
 delay(500);
 }
 
}


Cosa fa questo sketch?
-Tramite un sensore ad infrarossi capta se vengono premuti dei tasti su un telecomando, e li visualizza sulla seriale accendendo un led.

Cosa vorrei fare io?
-Come vedete ho inserito un if con un codice esadecimale: 551520375, ovvero il codice che corrisponde al tasto 1 del mio telecomando.
-Ora vorrei fare in modo che quando esso viene premuto, esso stampi sulla seriale "Ciao".
Usando il codice sopracitato tutto questo avviene, ma non perfettamente, quello che vorrei fare io infatti è far in modo che si visualizzi "Ciao" solo esclusivamente quando viene effettivamente premuto il pulsante..

Cosa fa il codice ora come ora?
Quando viene premuto il pulsante, sulla seriale mi ritrovo:

Code: [Select]
551520375
Ciao
Ciao
Ciao
Ciao
Ciao


Praticamente all'infinito.. Come posso ovviare a questo problema? Avevo pensato di inserire un irrecv.resume(); Subito dopo al Serial.Println Ma non funziona.. Idee?

tonid

Modificalo così
Code: [Select]
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value);
    digitalWrite(11, HIGH);
    delay(500);
    digitalWrite(11, LOW);
    irrecv.resume();

   if ( results.value == 551520375 ){ //tasto 1 sul telecomando
  Serial.println("Ciao");
  delay(500);
  }

}

Ti stamperà "ciao" ogni volta che premi il pulsante del telecomando che corrisponde a 551520375.

tonid

Aaaa....ecco a cosa ti serviva  :)

EnigmaAren92

Ahahah tu si che sei un genio ;) Si, hai notato? Carino vero? :) Grazie ancora una volta comunque, chiedo ai mod di chiudere ormai questo treadh xD

Madwriter


Ahahah tu si che sei un genio ;) Si, hai notato? Carino vero? :) Grazie ancora una volta comunque, chiedo ai mod di chiudere ormai questo treadh xD

puoi chiuderlo tu stesso in fondo a sinistra ma non credo ce ne sia bisogno piu che altro metti [Risolto] all'inizio del titolo del topic  ;)
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Go Up