Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« on: October 28, 2012, 04:11:23 am » |
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?
|
|
|
|
|
Logged
|
|
|
|
|
Torino
Offline
God Member
Karma: 2
Posts: 723
|
 |
« Reply #1 on: October 28, 2012, 04:28:36 am » |
Ho fatto una cosa simile utilizzando due cicli while dai un'occhiata al mio topic .
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2445
|
 |
« Reply #2 on: October 28, 2012, 05:49:04 am » |
Ho fatto una cosa simile utilizzando due cicli while dai un'occhiata al mio topic .
se ci mettevi un link magari http://arduino.cc/forum/index.php/topic,128862.0.html
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Torino
Offline
God Member
Karma: 2
Posts: 723
|
 |
« Reply #3 on: October 28, 2012, 05:52:11 am » |
Hai ragione ma gli ho risposto appena ha fatto la domanda ed i due topic erano uno sotto l'altro 
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #4 on: October 28, 2012, 11:01:17 am » |
Si infatti l'avevo trovato. Grazie lo stesso pablos
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #5 on: October 28, 2012, 01:25:02 pm » |
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.
|
|
|
|
« Last Edit: October 28, 2012, 02:04:30 pm by erpomata »
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16470
Don't know what I do
|
 |
« Reply #6 on: October 28, 2012, 03:18:42 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #7 on: October 29, 2012, 12:43:11 am » |
Sisi ma non sono riuscito ad impiegarlo per il mio scopo. Ritenterò.
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #8 on: October 29, 2012, 01:19:52 am » |
Intanto questo è il codice che ho scritto. Se qualcuno ha voglia di darci un'occhiata....  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); }
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #9 on: October 29, 2012, 02:39:44 pm » |
Nessuno? 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16470
Don't know what I do
|
 |
« Reply #10 on: October 29, 2012, 03:21:53 pm » |
Intanto questo è il codice che ho scritto. Se qualcuno ha voglia di darci un'occhiata....  La domanda è: ti funziona? Fa cioè quello che volevi tu?
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #11 on: October 29, 2012, 10:32:54 pm » |
E no altrimenti.... Sisi ma non sono riuscito ad impiegarlo per il mio scopo. Ritenterò.
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #12 on: October 30, 2012, 07:19:29 am » |
Ok non mi volete aiutare. 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16470
Don't know what I do
|
 |
« Reply #13 on: October 30, 2012, 08:53:50 am » |
Ok non mi volete aiutare.  Forse confondi il forum con il corso di informatica  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.
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #14 on: October 30, 2012, 10:00:36 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
|