walterword Inserito: 16 giugno 2015 Segnala Inserito: 16 giugno 2015 (modificato) Ho messo a punto la mia libreria per l'uso di soft timer per arduino . WTimer fa parte di un progetto piu ambizioso che si chiama WSystem , la W significa Walter Ci sono due tipi di timer , TON e TOF , che funzionano con lo stesso principio degli stessi in ambito plc . In piu' ho aggiunto un set di impulsi quadrati , asincroni , a diverse frequenze per lampeggi o temporizzazioni Chi fosse interessato mi scriva in pvt e la libreria gli sarà spedita previa mail in anteprima https://www.youtube.com/playlist?list=PLJmvUGejM2TOA72JRQe5f5mBr67yPRhgk Ciao Modificato: 16 giugno 2015 da walterword
walterword Inserita: 16 giugno 2015 Autore Segnala Inserita: 16 giugno 2015 (modificato) a seguito del grande feedback , inserisco qualche riga di codice per invogliare #include <WTimer.h> #define ledpin 13 // led on Arduino UNO #define pb 5 WTimer mytimers; // My library declaration boolean state=false; void setup() { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, LOW); pinMode(pb,INPUT); mytimers.initTimers(millis()); mytimers.enableClocks(); } void loop() { mytimers.runTimers(millis()); // this method is called every cycle of program state=digitalRead(pb); if(!state) { digitalWrite(ledpin,mytimers.SquareWave.C.freq7); // the led blink at clock8 frequency } else { digitalWrite(ledpin,mytimers.SquareWave.C.freq9); // the led blink at clock8 frequency } // you can also create mixed frequency in this way // digitalWrite(ledpin,mytimers.SquareWave.C.freq8 && mytimers.SquareWave.C.freq4); } ................ // WSystem -- Walter P. // Milan - Italy // note*: to use this library with Arduino Uno it's better to set the timers available into the header file at 5 or 10 // this library works well with Arduino Mega , DUE // in this example I use a push button to start the soft timer but you can use everything is boolean such as bit or output or direct input #include <WTimer.h> #define ledpin 13 // led on Arduino UNO #define pb 5 // push button connected on Arduino in pull down configuration WTimer mytimers; // My library declaration void setup() { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, LOW); pinMode(pb,INPUT); mytimers.presetTimer(10,5000,TOF); // Preset the timer #10 for 5 seconds (5000 ms), type TOF mytimers.initTimers(millis()); } void loop() { mytimers.runTimers(millis()); // this method is called every cycle of program mytimers.timer[10].Start=digitalRead(pb); //push the button and the led will light on digitalWrite(ledpin,mytimers.timer[10].Done); // when you release the button the led remains again on for 5 sec. // and then it will light off automatically } .............. #include <WTimer.h> #define ledpin 13 // led on Arduino UNO #define pb 5 // push button connected on Arduino in pull down configuration WTimer mytimers; // My library declaration void setup() { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, LOW); pinMode(pb,INPUT); mytimers.presetTimer(1,3000,TON); // Preset the timer #1 for 3 seconds (3000 ms), type TON mytimers.initTimers(millis()); } void loop() { mytimers.runTimers(millis()); // this method is called every cycle of program mytimers.timer[1].Start=digitalRead(pb); //push the button digitalWrite(ledpin,mytimers.timer[1].Done); // and after 3 sec. the led will light on // when the button is released the led will light off } Modificato: 16 giugno 2015 da walterword
walterword Inserita: 17 giugno 2015 Autore Segnala Inserita: 17 giugno 2015 volevo caricare la libreria ella sezione upload/elettornica , ma non accetta file .zip bisogna essere scienziati .... Livio lo mando a te e ci pensi tu che hai la mano in queste ? Mandami la tua mail in pvt che ti invio la libreria
walterword Inserita: 17 giugno 2015 Autore Segnala Inserita: 17 giugno 2015 ok ho caricato nella sezione Elettronica la libreria a questo link http://www.plcforum.it/f/files/file/4405-wtimer/
walterword Inserita: 27 giugno 2015 Autore Segnala Inserita: 27 giugno 2015 in anteprima il WShield che fa parte del WSystem , Arduino Due
Livio Orsini Inserita: 27 giugno 2015 Segnala Inserita: 27 giugno 2015 Quella spece di serpentina che cos'è? Un'antenna?
walterword Inserita: 27 giugno 2015 Autore Segnala Inserita: 27 giugno 2015 e' il sensore acqua, poi c'e' il sensore umidita' . terreno , sensore luce , micro sd , bluetooth , RTC, barometro ect
walterword Inserita: 17 luglio 2015 Autore Segnala Inserita: 17 luglio 2015 (modificato) a breve sarà pronta un'altra libreria per Arduino , WFSM Si tratta di una libreria che implementa una macchina a stati finiti per produrre sequenziatori programmati . E' ispirata alle reti di Petri .La transizione tra un passo o stato al successivo si può ottenere in due modi - Tramite un tempo preprogammato - Una condizione booelana Le due condizioni di transizione sono relazionate tra loro da un AND logico per cui se si vuole usifruire solo della condizione booleana e' sufficiente presettare il tempo di quella transizione a 0 Se invece si vuole solo passare allo stato successivo dopo un tempo allora e' sufficiente programmare il tempo ed impostare la transizione booleana a TRUE L'intersezione di piu oggetti di questo tipo permette di gestire svariati cicli automatici per diversi attuatori , che vengono gestiti separatamente ma che sono sincronizzati dall'unione delle rispettive macchine a stati finiti Queste attività sono spesso utilizzate in automazione industriale tramite la programmazione dei plc Modificato: 17 luglio 2015 da walterword
dott.cicala Inserita: 18 luglio 2015 Segnala Inserita: 18 luglio 2015 Io i timers li ho scaricati ....ottimo lavoro....La macchina a stati....sarebbe la panacea per chi usa arduino come un micro plc
walterword Inserita: 18 luglio 2015 Autore Segnala Inserita: 18 luglio 2015 bene mi fa piacere per i timer , ci ho messo un po per fare un lavoro abbastanza professionale , almeno credo di averlo fatto Entro settimana prox sistemo delle cose e poi pubblico anche la macchina a stati , lunedi ho l'ultimo esame e devo passarlo dopodiche inizio a divertirmi con la tesi , android + BT + Arduino Due
walterword Inserita: 21 luglio 2015 Autore Segnala Inserita: 21 luglio 2015 (modificato) in anteprima il codice della WFSM // Walter P. // 21/07/2015 // Milan - Italy #ifndef _FSM_h #define _FSM_h #if defined(ARDUINO) && ARDUINO >= 100 #include "arduino.h" #else #include "WProgram.h" #endif #define MAX_STEPS 16 class WFsm { protected: private: boolean wait(float _time); void resetSteps(); float Accu; int maxsteps; float preset[MAX_STEPS]; boolean transition[MAX_STEPS]; boolean mem; int stepindex; public: void init(); void run(); void setMaxSteps(int m_steps); void setPreset(int n_step,float _preset); void setTransition(int n_step,boolean condition); void restartFrom(int n_step); boolean step[MAX_STEPS]; float cycleTime; }; #endif // Walter P. // 21/07/2015 // Milan - Italy #include "WFsm.h" void WFsm::init() { this->cycleTime=0.0F; this->Accu=0.0F; resetSteps(); this->mem=false; this->maxsteps=0; this->stepindex=0; } void WFsm::setMaxSteps(int m_steps) { this->maxsteps=m_steps; if(this->maxsteps > MAX_STEPS) { this->maxsteps=MAX_STEPS; } } void WFsm::resetSteps() { for(int i=0;i<maxsteps;i++) { this->preset[i]=0.0F; this->step[i]=false; } } void WFsm::setTransition(int n_step,boolean condition) { this->transition[n_step]=condition; } void WFsm::setPreset(int n_step,float _preset) { this->preset[n_step]=_preset; } boolean WFsm::wait(float _time) { this->Accu+=this->cycleTime; return this->Accu>=_time; } void WFsm::run() { if(mem==false) { this->stepindex=0; this->step[stepindex]=true; mem=true; } if(this->transition[stepindex] && wait(this->preset[stepindex])) { step[stepindex]=false; if(stepindex<maxsteps-1) { stepindex++; } else { stepindex=0; } if(stepindex>maxsteps){stepindex=0;} step[stepindex]=true; this->Accu=0.0; } } void WFsm::restartFrom(int n_step) { resetSteps(); this->stepindex=n_step; if(stepindex>maxsteps){stepindex=maxsteps;} this->step[stepindex]=true; this->Accu=0.0; } un esempio di uso dal mani loop void setSequencer1() { sequencer1.setPreset(0,3000.0); sequencer1.setPreset(1,1000.0); sequencer1.setPreset(2,5000.0); sequencer1.setPreset(3,4000.0);sequencer1.setPreset(4,10000.0);sequencer1.setPreset(5,3000.0);sequencer1.setPreset(6,1000.0); sequencer1.setTransition(0,true); sequencer1.setTransition(1,true); sequencer1.setTransition(2,true); sequencer1.setTransition(3,true);sequencer1.setTransition(4,true);sequencer1.setTransition(5,true);sequencer1.setTransition(6,true); } setSequencer1() ; sequencer1.run(); digitalWrite(ledpin,sequencer1.step[0] || sequencer1.step[2] || sequencer1.step[4]); Modificato: 21 luglio 2015 da walterword
Livio Orsini Inserita: 21 luglio 2015 Segnala Inserita: 21 luglio 2015 To chi si rivede: Claudio Ifach
walterword Inserita: 21 luglio 2015 Autore Segnala Inserita: 21 luglio 2015 hola ifach !!! ieri ho dato gli ultimi esami e se dio vuole e' finita , adesso sotto col C/C++ e java
Livio Orsini Inserita: 22 luglio 2015 Segnala Inserita: 22 luglio 2015 Bravo Walter! Ora ti resta solo la tesi, ma per te è qausi un divertimento.
walterword Inserita: 22 luglio 2015 Autore Segnala Inserita: 22 luglio 2015 il quasi e' dovuto al fatto che devo scrivere su word e pdf , per il resto è divertimento
gabri-z Inserita: 22 luglio 2015 Segnala Inserita: 22 luglio 2015 il quasi e' dovuto al fatto che devo scrivere su word e pdf E' un bel sentimento andare tranquilli agli esami ; poche volte sono riuscito a farlo , ma è ....una meraviglia ! COMPLIMENTI !
walterword Inserita: 22 luglio 2015 Autore Segnala Inserita: 22 luglio 2015 qua si tratta della tesi , che rispetto agli esami e' una passeggiata
walterword Inserita: 19 settembre 2015 Autore Segnala Inserita: 19 settembre 2015 video tutorial sull'uso della libreria WTimer
walterword Inserita: 30 settembre 2015 Autore Segnala Inserita: 30 settembre 2015 La libreria si può anche scaricare dal sito ufficiale Arduinohttp://forum.arduino.cc/index.php?topic=330824.new#new
walterword Inserita: 27 marzo 2016 Autore Segnala Inserita: 27 marzo 2016 perchi mi scrive in pvt .... scaricare la libreria dal plcforum , dal link indicato Decomprimere il file e copiare la cartella nel vostro pc , ...nel mio caso C:\Users\miopc\Documents\Arduino\libraries si puo' anche importare da arduino ide come libreria , chiduere e riaprire arduino ide Aprire arduino -> file -> esempi -> WTimer e scegliere lo sketch dai tre proposti ciao Walter
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora