home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


aiuto per un timer
     
Autore Messaggio opzioni
mario2247





postato il:
26.01.2021, alle ore 16:02
aiuto per un timer 

Un saluto al FORUM.

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);

} else
{
OUT = LOW;
}
digitalWrite(OUT, OUTStato);
}
digitalWrite(LedPin, LOW);
}

un grazie per l'aiuto

Mario
gironico




una ogni 100 livelli


postato il:
26.01.2021, alle ore 16:49
nelle dichiarazioni delle variabili non fargli fare le operazioni...

imposta la variabile cosi:

long Standby = 3600000; // tempo di standby del motore(1 ora)

nella finestrella in basso clicca su <codice sorgente> e inserisci il codice che vuoi pubblicare, qui è abitudine fare cosi....

 {
OUT = LOW;
}
digitalWrite(OUT, OUTStato);
}
digitalWrite(LedPin, LOW);
}

 


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




una ogni 100 livelli


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);

for (i=0;i<10;i++){
  delay(500);
  digitalWrite(LedPin,!digitalRead(LedPin));
  }
delay(tempoMoto);
  }

else{
digitalWrite(OUT,LOW);
digitalWrite(LedPin, LOW);
}
}


cosi come scritto, altamente probabile che non avviene esattamente ogni 60 minuti, ma 56 minuti e 50 secondi.... divertiti a capire il motivo....

Quando clicchi su codice sorgente ti appare:

 
 qui il codice 
 


cancelli 'qui il codice' e ci copi il tuo(Ctrl+V)...



La vita è troppo breve per bere vini mediocri
mario2247





postato il:
27.01.2021, alle ore 15:59
https://imagizer.imageshack.com/img922/3306/fleWlD.png


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




una ogni 100 livelli


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




una ogni 100 livelli


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




una ogni 100 livelli


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....




La vita è troppo breve per bere vini mediocri
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

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




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale