RIPORTO QUANTO SCRITTO IN ALTRA DISCUSSIONE(FORSE QUESTO E' IL POSTO GIUSTO
Da assoluto principiante, seguendo il consiglio di utilizzare arduino per risolvere il mio problema, ho provato a scrivere il seguente codice.
Non so se quanto scritto fa quello che mi aspetto in quanto arduino non mi è ancora arrivato, nel frattempo però qualche esperto potrà farmi sapere se ho commesso qualche cavolata(come penso sia)
IL MOTORE è A 5volt E ASSORBE C.CA 500ma
Altra domanda: quando stacco l'alimentazione il codice rimane in memoria e qaundo riattacco parte di nuovo oppure no.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// il Gate del mosfet tipo N è collegato al pin 9 di Arduino
// il led è collegato al pin 5
// PROGRAMMA: QUELLO CHE DEVE FARE
// Il motore rimane spento per il tempo di Standby.
// Il motore gira per tempo Moto
// Il led lampeggia per 5 secondi quando il motore è in moto
long Standby = 60*60*1000; // tempo di standby del motore(1 ora)
int OUT = 9; // collego il gate del mosfet al pin 9
int OUTStato = LOW;
int LedPin = 5; // collego il positivo del led al pin 5
int LedPinStato = LOW;
unsigned long StartTime = 0; // variabile per memorizzare il tempo iniziale
int delayMoto = 3*1000;(3minuti)
void setup() {
pinMode(OUT, OUTPUT); // imposto il pin 9 come uscita
pinMode(LedPin, OUTPUT);// imposto il èi del led come input
}
void loop(){
unsigned long tempo = millis();// salvo tempo nelle variabile
if (tempo - StartTime > Standby)
{
StartTime = tempo;
if (OUT == LOW)
{
OUT = HIGH;
delay(delayMoto);
digitalWrite(LedPin, HIGH);
delay(5000);
digitalWrite(LedPin, LOW);
delay(5000);
Qui non ci siamo, sicuramente il compilatore ti restituirà un errore troppe graffe...
dopo aver scritto else.... che gli puoi dare un significato come 'altrimenti' dopo la condisione 'IF'.... lui fa quello che te inserisci tra le parentesi graffe...
quindi :
void loop(){
unsigned long tempo = millis();// salvo tempo nelle variabile
if (tempo - StartTime > Standby)
{
StartTime = tempo;
if (OUT == LOW)
}
OUT = HIGH;
delay(delayMoto);
digitalWrite(LedPin, HIGH);
delay(5000);
digitalWrite(LedPin, LOW);
delay(5000);
}
}
else{
OUT = LOW;
digitalWrite(OUT, OUTStato);
digitalWrite(LedPin, LOW);
}
}// fine del void loop
chiaramente il programma, una volta caricato nel micro.... rimane li, altrimenti sai che fregatura....
Non sò se funziona, più tardi lo provo, a naso non credo....
La vita è troppo breve per bere vini mediocri
mario2247
postato il: 26.01.2021, alle ore 18:40
grazie per la veloce risposta e per le variazioni consigliate.
Il codice inviato lo avevo verificato e non mi dava errore ma probabile non avrebbe funzionato....
Non vedo l'ora di provarlo ASAP.
Per quanto riguarda l'inserimento del codice sorgente non ho capito il funzionamento.
qui il codice
cosa devo inserire? Penso il nome dello sketch, ma da dove lo prendo?
ciao
mario2247
postato il: 26.01.2021, alle ore 18:53
ah forse ho capito....devo incollare il tutto nella finestra aperta, è così?
gironico
postato il: 26.01.2021, alle ore 19:44
prova questo codice, dovrebbe andare
// il Gate del mosfet tipo N è collegato al pin 9 di Arduino
// il led è collegato al pin 5
// PROGRAMMA: QUELLO CHE DEVE FARE
// Il motore rimane spento per il tempo di Standby.
// Il motore gira per tempo Moto
// Il led lampeggia per 5 secondi quando il motore è in moto
unsigned long Standby = 3600000;//60*60*1000; // tempo di standby del motore(1 ora)
int OUT = 9; // collego il gate del mosfet al pin 9
//int OUTStato = LOW;
int LedPin = 5; // collego il positivo del led al pin 5
//int LedPinStato = LOW;
long int StartTime = 0; // variabile per memorizzare il tempo iniziale
unsigned int tempoMoto =180000; //3*1000;(3minuti)
int i;
void setup() {
pinMode(OUT, OUTPUT); // imposto il pin 9 come uscita
pinMode(LedPin, OUTPUT);// imposto il èi del led come input
digitalWrite(OUT,LOW);
digitalWrite(LedPin,LOW);
}
void loop(){
unsigned long tempo = millis();// salvo tempo nelle variabile
if ((tempo-StartTime) > Standby){
StartTime = tempo;
if (digitalRead(OUT==LOW))
{
digitalWrite(OUT,HIGH);
questo è quello che ho simulato con il codice su indicato.....ma non funziona.
in cosa sbaglio?
Grazie per l'aiuto.
p.s. una volta sistemato qualora volessi variare il tempo di standby con un trimmer, sarebbe una cosa fattibile?
gironico
postato il: 27.01.2021, alle ore 16:11
il codice, per come lo hai scritto te, e io ti sono andato dietro.... il motore parte dopo i 60 minuti dall'accensione, non subito....
p.s. una volta sistemato qualora volessi variare il tempo di standby con un trimmer, sarebbe una cosa fattibile?
si senza stravolgerlo più di tanto.... un vil potenziometro da 10k se ti interessa una finestra di regolazione più fine, altrimenti un 4.7...
Si può far tutto, anche aggiungere un lcd...
Con il conteggio del tempo, lascia perdere simulatori del caiser, già proteus fà cilecca in un buon pc...
La vita è troppo breve per bere vini mediocri
gironico
postato il: 27.01.2021, alle ore 16:15
quando ti arriva la board, testa su di essa... I microcontrollori Atmel sono suscettibili ad i carichi induttivi, una tantum ti mandano in stallo il micro...
Ti suggerisco di utilizzare un fotoaccoppiatore per arginare il problema: cerca esempi in rete...
La vita è troppo breve per bere vini mediocri
mario2247
postato il: 27.01.2021, alle ore 16:21
scusa approfitto della tua disponibilitÃ
per non aspettare 1 ora ho corretto il tempo. 30secondi(30000ms) di standby,( ma dopo30 secondi non parte e non si accende neppure il led (circuito sbagliato?)...
gironico
postato il: 27.01.2021, alle ore 16:25
mario2247: scusa approfitto della tua disponibilitÃ
per non aspettare 1 ora ho corretto il tempo. 30secondi(30000ms) di standby,( ma dopo30 secondi non parte e non si accende neppure il led (circuito sbagliato?)...
per testare il circuito/simulatore carica un altro programma dove imposti gli stai logici alti.... se non ti funziona il problema non è il software....
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito