Ho un problema con arduino:
Ho una fotoresistenza e una resistenza da 10K che formano un partitore di tensione, questo segnale viene prelevato e inviato ad arduino, letto ed elaborato, l'uscita dovrebbe pilotare una sirena(che dovrei comandare con un mosfet vero??? mi date qualche consiglio?)
il vero problema è che lo stato del piedino in Output dovrebbe rimanere nello stato in cui la soglia(impostata nel codice dello sketch) sia più alta di un valore prestabilito(sempre nel codice).
Grazie. XD
per interderci, normalmente il pin è a 5v, se scatta la sirena anzichè andare a 0V deve rimanere a 2V? (esempio con numeri caso)
forse basta un'uscita analogica (pwm)
non mi sodisfa la risposta di lesto:
definizioni:
LDR é la fotorresistenza; la tensione del partitore aumenta se si oscura il LDR.
"limite" é la soglia sopra la quale si deve accendere la sirena
"isteresi) é un isteresi per non fare spegnere subito la sirena perché ci sono piccoli disturbi sulla letura della tensone LDR
loop(){
LDRvalore=analogRead(LDRpin);
if(LDRvalore>limite)digitalWrite(SIRENApin, HIGH);
if(LDRvalore<(limite-isteresi))digitalWrite(SIRENApin, LOW);
}
Ciao Uwe
Scusa ma quindi se volessi mantenere la sirena e quindi lo stato del piedino alto dovrei mettere un valore di isteresi(ma è in millisecondi???) alto???...più che altro mi interessa mantenere lo stato del piedino alto per un tempo che stabilisco io stesso nel codice su Arduino.
Per il controllo della sirena dovrei utilizzare un mosfet in PWM??? perchè ho fatto alcuni test con un TIP 122(e quindi un alimentazione esterna) ma i risultati sono stati deludenti in quanto la sirena si attivava,ma si accendeva quasi a fatica, come se la tensione non fosse abbastanza(ma era sufficiente perchè la tensione minima era di 7V e io usavo i 9V).
Grazie.
ah scusa, io pensavo volevi mantenere un certo voltaggio minimo... Quindi lascia perdere il PWM
Se invece intendi mantenere lo stato HIGH per qualche tempo, allora devi salvare in una variabile il tempo ( millis() ) in cui metti il segnale HIGH alla sirena, e rimetterlo a LOW quando millis() e maggiore della variabile tempo + millisecondi di accensione della sirena.
per la sirena che fatica, sicuro che il TIP oltre alla tensione fornisce abbastanza corrente?
...mi faresti un esempio di come struttureresti il codice???
Grazie.
ogni loop
se deve scattare la sirena, salva il tempo attuale e manda il segnale alto.
se il tempo salvato + il tempo di accensione della sirena è maggiore del tempo attuale spegni la sirena.
facile no? (da qui direi che dovresti farcela da solo, altrimenti ripassati qualche tutorial, come blinkWithoutDelay)