Salve a tutti ragazzi, questo è il mio primo messaggio e penso che non sarà l'ultimo.
Ho un problema col ciclo if. In pratica ho abbozzato un allarme laser su breadboard con un laser una fotoresistenza e un buzzer.
Quando interrompo il fascio laser il buzzer inizia a suonare ma appena rimuovo l'ostacolo tutto torna a tacere.
Mi interesserebbe che il buzzer continuasse a suonare fino a che io non resetti il sistema.
Potete aiutarmi?
Vi allego anche uno screen dello sketch che ho scritto così potete dirmi cosa ho sbagliato.
gpb01
June 13, 2016, 6:33pm
2
Il codice NON si allega come immagine, ma si mette nel post (... mi raccomando, in conformità al regolamento, punto 7, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra ).
Altra cosa, usa il comando Tools -> Auto Format ... ti sistemerà le indentature del codice come si deve
Grazie,
Guglielmo
fai cosi metti tone(buzzer,4000); senza il 300 dopo il 4000 e togli il noTone(buzzer); mettilo dopo scrivendo
else{
noTone(buzzer);
}
gpb01
June 13, 2016, 6:36pm
4
Nel codice sei tu che fai la noTone() ... se non la metti, una volta fatta la tone(), suona sempre ...
Guglielmo
gpb01
June 13, 2016, 6:37pm
5
Sbagliato Kind3rin ...
... lui NON vuole che smetta di suonare mentre con il tuo else, appena il fascio non è più interrotto smette !
Guglielmo
gpb01:
Sbagliato Kind3rin ...
... lui NON vuole che smetta di suonare mentre con il tuo else, appena il fascio non è più interrotto smette !
Guglielmo
Ah ok allora basta che tu tolga il noTone ma anche il tempo perchè nel tuo codice è impostato
Perdonatemi per gli errori di formato nel post.
Per quanto riguarda lo sketch: i vari tone-noTone mi servono per simulare una "sirena di allarme" altrimenti diventa un fischio continuo.
Non c'è un modo per risolvere il problema lasciando il "pacchetto" dei tone così com'è?
gpb01
June 13, 2016, 7:56pm
8
Si, certo, crei all'interno del IF un loop infinito dove ripete sempre le stesse istruzioni ... se metti:
while(true) {
...
...
...
}
... tutto quello che c'è dentro viene ripetuto per sempre
Guglielmo
Grazie mille, ora funziona tutto come volevo.
Ultima domanda, il tasto reset sulla scheda non funziona quindi devo impostare un tasto per il reset
gpb01
June 13, 2016, 9:08pm
10
NelloCrescenzo:
Ultima domanda, il tasto reset sulla scheda non funziona quindi devo impostare un tasto per il reset
Come non funziona ? E' guasto ? Ti si è rotto ?
Comunque ... ti basta un pulsante che unisce il pin RESET con il pin GND
Guglielmo
non so perchè non funzioni.
Per quel tasto c'è bisogno di qualche comando o basta settarlo fisicamente?
Risolto, Ora funziona alla perfezione!
uwefed
June 13, 2016, 10:18pm
13
No per un secondo tasto di reset basta collegarlo tra massa e pin RESET.
Senó leggi un pulsante al interno del ciclo while(true) che ti esce con un return.
while ()
{
if (digitalRead(pin_uscita)==1) return();
}
oppure come condizione nel while:
while (digitalRead(pin_uscita)==0)
{
...
}
Ciao Uwe