salve a tutti, ho realizzato un piccolo allarme con arduino uno: 2 sensori pir, un piezo e 2 led(1 rosso e 1 verde) solo che ho incontrato questo tipo di problema...innanzitutto il piezo mi suona sempre...la luce dei led è veramente bassa ma cosa più importante è che prima che mettessi i led tutto funzionava benissimo ora invece incontro quei problemi che ho scritto prima...
ecco il codice:
e inoltre i led mi lampeggiano in un modo alternato mentre io vorrei che quando rileva qualcosa il pir1 si accende un led e invece quando rileva qualcosa il pir2 si accende l'altro led...cmq grazie mille per l'aiuto
Sei sicuro dei collegamenti ?
Il codice mi pare corretto. Se il piezo suona sempre allora uno o tutti e due i pir rilevano sempre qualcosa.
Riesci a fare foto o disegno dei collegamenti?
Dovresti imparare a farti un pò di debug, usando il Serial Monitor (pulsante a destra nell' IDE).
Primo nella setup() devi abilitare la comunicazione seriale aggiungendo 2 righe:
void setup() {
delay(1000);
Serial.begin(9600);
.. resto del tuo codice
}
Nel programma potrai mandare messaggi al Monitor Seriale dell'IDE usando Serial.println("messaggio")
Ad esempio aggiungi 2 avvisi uno per ogni PIR attivato:
if (SegnalePir1 == HIGH) {
Serial.println("PIR 1 attivo"); // msg al serial monitor
digitalWrite(LedVerde, HIGH);
...
allora per quanto riguarda i led ho risolto...mi ero sbagliato a mettere le resistenze...(avevo messo non volendo delle resistenze da 10kohm). ora ho seguito il consiglio di nid69ita... a schermo mi stampa che il pir1 è attivo....e sinceramente nn riesco a capire il perchè....l'ho persino staccato e ancora mi dice che il pir 1 è attivo....
ho corretto solo che ho notato una cosa....che quando mi rileva qualcosa a prescindere da quale pir lo faccia mi si accendono entrambi i led e andando a verificare sul monitor infatti trovo scritto che entrambi sono attivi quando invece ho persino staccato uno dei 2 pir....
... non è che quando i pir non sono in allarme ... il pin è flottante vero ??? Ovvero, hai messo delle resistenze di pull-down in modo da tenere il pin a LOW quando il pir non è attivo ???
gpb01:
... non è che quando i pir non sono in allarme ... il pin è flottante vero ??? Ovvero, hai messo delle resistenze di pull-down in modo da tenere il pin a LOW quando il pir non è attivo ???
Guglielmo
emmm no... sai sono un novizio di arduino...mi potresti spiegare come fare?? grazie
Leggendo il codice immagino che, quando va in allarme, il PIR chiude un contatto verso il +Vcc ... ma, quando è aperto ... ti trovi i pin di Arduino "flottanti" e, dato che sono ad alta impedenza ... captano anche "il volare di una mosca", dandoti indicazioni totalmente sballate
MAI e ripeto MAI lasciare pin flottanti ... salvo appunto ... avere in input valori completamente causali !!!
Soluzione senza cambiare il SW : metti su ciascun pin (quelli di input dove leggi i PIR) una resistenza da 10 KOhm verso massa che, quando il PIR è a riposo, tiene il pin LOW.
Soluzione cambiando il SW, ma senza resistenza esterna : metti i PIR che quando vanno in allarme chiudono verso MASSA e nel software dichiari i pin in input come :
gpb01:
Leggendo il codice immagino che, quando va in allarme, il PIR chiude un contatto verso il +Vcc ... ma, quando è aperto ... ti trovi i pin di Arduino "flottanti" e, dato che sono ad alta impedenza ... captano anche "il volare di una mosca", dandoti indicazioni totalmente sballate
MAI e ripeto MAI lasciare pin flottanti ... salvo appunto ... avere in input valori completamente causali !!!
Soluzione senza cambiare il SW : metti su ciascun pin (quelli di input dove leggi i PIR) una resistenza da 10 KOhm verso massa che, quando il PIR è a riposo, tiene il pin LOW.
Soluzione cambiando il SW, ma senza resistenza esterna : metti i PIR che quando vanno in allarme chiudono verso MASSA e nel software dichiari i pin in input come :
pinMode(SegnalePin1, INPUT_PULLUP);
pinMode(SegnalePin2, INPUT_PULLUP);
dopo di che la condizione di allarme si verifica quando il pin, invece che HIGH, è LOW ;)
L'opzione INPUT_PULLUP attive delle resistenze INTERNE alla MCU che, quando il pin non è collegato a nulla, lo tengono verso il +Vcc.
Guglielmo
già le resistenze ci sono....le avevo messe come hai indicato tu...
il risultato è che a schermo mi dice che mi suonano entrambi contemporaneamente infatti i led sono entrambi accesi...quello che nn capisco è che sta mattina prima di inserire i led tutto funzionava perfettamente ora nn funziona + e nn riesco a capire il perchè mi fa questo scherzo...
Dobbiamo "fidarci" di quello che descrivi per i collegamenti. Secondo me è meglio se fai una foto (se puoi) in questo modo siamo sicuri. @Guglielmo ne sà qualcosa con me. Gli chiesi consiglio per un circuito con un errore, mi disse forse è una certa cosa ma io continuavo a dire che quel che mi indicava lui era corretto, mentre non lo era.
nid69ita:
Dobbiamo "fidarci" di quello che descrivi per i collegamenti. Secondo me è meglio se fai una foto (se puoi) in questo modo siamo sicuri. @Guglielmo ne sà qualcosa con me .....
... tranquillo ... non solo con te Nid
Si simo9115, ci deve essere qualche cosa nei collegamenti ... quindi schema disegnato BENE e foto NITIDA ...
simo9115:
il risultato è che a schermo mi dice che mi suonano entrambi contemporaneamente infatti i led sono entrambi accesi...quello che nn capisco è che sta mattina prima di inserire i led tutto funzionava perfettamente ora nn funziona + e nn riesco a capire il perchè mi fa questo scherzo...
Hai perso alcune lettere sulla Tua tastiera?
Per favore non usare le abbreviazioni SMS. Siamo vecchi che non capiamo queste cose.
Ciao Uwe
uwefed:
Le resistenze pullup vanno dal pin di entrata a +5V.
Le resistenze pulldown vanno dal pin di entrata a massa.
Tu hai messe la resistenza in corto sul collegamento della breadboard.
ok questo l'ho capito hihi potete spiegarmi bene come vanno collegati? io sono un neofita e non ho capito molto bene come devo mettere le resistenze...sono quelle dei pir che sono sbagliate giusto?