Go Down

Topic: Accendere pin dopo tot secondi di un evento (Read 1 time) previous topic - next topic

erpomata

Avrei la necessità di fare quanto segue:

leggo lo stato alto su un pin (x) se non ne segue un altro dopo tot secondi, sempre sul pin x, attivare un altro pin (y).

Qualche suggerimento?
http://www.paologiammarco.it
http://www.valentinamagni.it

tonid

Ho fatto una cosa simile utilizzando due cicli while dai un'occhiata al mio topic .

pablos


Ho fatto una cosa simile utilizzando due cicli while dai un'occhiata al mio topic .

se ci mettevi un link magari  :smiley-roll:
http://arduino.cc/forum/index.php/topic,128862.0.html
no comment

tonid

Hai ragione ma gli ho risposto appena ha fatto la domanda ed i due topic erano uno sotto l'altro  ;)

erpomata

Si infatti l'avevo trovato.
Grazie lo stesso pablos
http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

#5
Oct 28, 2012, 07:25 pm Last Edit: Oct 28, 2012, 08:04 pm by erpomata Reason: 1
Ci ho provato ma non ci sono riuscito o non ho capito come fare dal topic che mi avete segnalato o mi sono spiegato male io.
Ricapitolo quello che devo fare.

Impulso sul pin x
Allo spegnimento del primo impulso controllo che non arrivi un altro impulso sul pin x in s millisecondi (da poter regolare)
Se arriva all'interno dell'intervallo s attivo pin y altrimenti ricomincio da capo.
Se arriva un altro impulso sul pin x quando il pin y è attivo disattivo pin y.

Spero di essermi spiegato.
http://www.paologiammarco.it
http://www.valentinamagni.it

leo72

Ma l'hai guardato l'esempio che ti hanno linkato?

Un ciclo while imbriglia l'esecuzione in un loop da cui se ne può uscire solo al verificarsi di un evento.
Tu vuoi controllare che arrivi un impulso, attivare un contatore e poi controllare prima del timeout che non arrivi un altro impulso. Se entrambe le condizioni si verificano, attivi un altro pin.
Come vedi sono 2 condizioni annidate quindi un while dentro l'altro. E' ciò che ha fatto tonid nel suo codice.
http://arduino.cc/forum/index.php/topic,128862.msg969566.html#msg969566

erpomata

Sisi ma non sono riuscito ad impiegarlo per il mio scopo.
Ritenterò.
http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

Intanto questo è il codice che ho scritto.
Se qualcuno ha voglia di darci un'occhiata....  :P

Code: [Select]

byte x = 8;
byte y = 13;
byte xVal = LOW;
byte yVal = LOW;

boolean xAccesa = false;
boolean appo = false;
unsigned long interval=200000;
unsigned long tempoSpenta;

void setup() 
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.println("Pronti");

  pinMode(x, INPUT);
  pinMode(y, OUTPUT);
  digitalWrite(y, LOW); // Spengo il led L sulla scheda
}

void loop()

  xVal = digitalRead(x);  // Leggo lo stato del pin x, finchè è off non faccio nulla.
  xAccesa=xVal;

  // Quando è on blocco l'esecuzione del loop finchè non diventa off
  while(xAccesa){
    yVal=LOW;
    digitalWrite(y, yVal);

    xVal = digitalRead(x);  // read input value
    xAccesa=xVal;
    appo=true;
    Serial.println("qui");
  }
 
  // Uscito dal loop prendo il tempo di uscita
  tempoSpenta=millis();

  if ( appo ){
// Se è entrato nel while precedente vuol dire che c'è stato un impulso
    appo=false;

// Attendo per vedere se c'è un secondo impulso
    while(millis()<(tempoSpenta + interval)){
      xVal = digitalRead(x);  // read input value
      xAccesa=xVal;
      Serial.println("qui1");
      if ( xAccesa ){
        yVal=LOW;
        break;
      }
      else{
        yVal=HIGH;
      }
    }
  }

  digitalWrite(y, yVal);
}
http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

leo72


Intanto questo è il codice che ho scritto.
Se qualcuno ha voglia di darci un'occhiata....  :P

La domanda è: ti funziona? Fa cioè quello che volevi tu?

erpomata

E no altrimenti....


Sisi ma non sono riuscito ad impiegarlo per il mio scopo.
Ritenterò.
http://www.paologiammarco.it
http://www.valentinamagni.it

erpomata

http://www.paologiammarco.it
http://www.valentinamagni.it

leo72


Ok non mi volete aiutare.
=(

Forse confondi il forum con il corso di informatica  :P
Qui nessuno ti insegna a programmare, devi farlo da solo. Se hai un problema puoi pubblicare il tuo sketch, dire cosa fa e cosa invece dovrebbe fare.

Ti sono stati dati dei link, ti è stato dato un codice corrispondente a quello che devi fare tu, se non ho capito male, e poi ti sono state date delle dritte.
Hai pubblicato un tuo programma e chiedi se va bene. Alla mia domanda se il codice funziona, hai risposto citando un tuo post in cui dici che non ti funziona. E cos'è che non funziona? Siamo al cane che si morde la coda.

erpomata

Non chiedo un corso, ma una idea per la soluzione.
Ho letto il topic che mi avete suggerito, però, secondo me non centra nulla col mio problema.

http://www.paologiammarco.it
http://www.valentinamagni.it

Go Up