Pages: [1]   Go Down
Author Topic: [Risolto] - Problema comunicazione seriale  (Read 342 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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:
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?
« Last Edit: February 07, 2013, 09:33:31 am by EnigmaAren92 » Logged

Torino
Offline Offline
God Member
*****
Karma: 2
Posts: 753
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Modificalo così
Code:
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.
Logged

Torino
Offline Offline
God Member
*****
Karma: 2
Posts: 753
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aaaa....ecco a cosa ti serviva  smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Edison Member
*
Karma: 24
Posts: 2032
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ahahah tu si che sei un genio smiley-wink Si, hai notato? Carino vero? smiley 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  smiley-wink
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Pages: [1]   Go Up
Jump to: