Go Down

Topic: Mantenere lo stato (Read 533 times) previous topic - next topic

fardox

Ho un problema con arduino: :smiley-roll-blue:
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
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

lesto

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)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

uwefed

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

Code: [Select]
loop(){
LDRvalore=analogRead(LDRpin);
if(LDRvalore>limite)digitalWrite(SIRENApin, HIGH);
if(LDRvalore<(limite-isteresi))digitalWrite(SIRENApin, LOW);
}


Ciao Uwe

fardox

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.
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

lesto

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?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

fardox

...mi faresti un esempio di come struttureresti il codice???
Grazie.
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

lesto

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)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up