From fa958474bcffcf0cfc45a620e2fb2c611c44d18f Mon Sep 17 00:00:00 2001 From: eaman Date: Wed, 26 Oct 2016 20:59:09 +0200 Subject: [PATCH] aero --- libraries/common/common.cpp | 116 ++++++++++++++++++++++++++++++++++++ libraries/common/common.h | 47 ++++++++++++++- 2 files changed, 162 insertions(+), 1 deletion(-) diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index 5ddcaee..2de42e9 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -71,6 +71,121 @@ void RGBLed::Off () { +///////////////////////////////////// +// Lampeggiatore +// Constructor +Lampeggiatore::Lampeggiatore(int pin) +{ + ledPin = pin; + pinMode(ledPin, OUTPUT); + ledState = LOW; + previousMillis = 0; + interval = 500; +}; + + + + +// Una funzione facente parte di una classe prende il nome di "metodo" della stessa: +void Lampeggiatore::Blink() { + // Illumina il led a 500ms + + if(millis() - previousMillis > interval) { + // save the last time you blinked the LED + previousMillis = millis(); + + // if the LED is off turn it on and vice-versa: + ledState = !ledState ; // Inverti il LED + } + // set the LED with the ledState of the variable: + digitalWrite(ledPin, ledState); +}; + +void Lampeggiatore::Blink(long time) { + // Illumina il led secondo un intervallo passato come argomento + + if(millis() - previousMillis > time) { + // save the last time you blinked the LED + previousMillis = millis(); + + // if the LED is off turn it on and vice-versa: + ledState = !ledState ; // Inverti il LED + } + // set the LED with the ledState of the variable: + digitalWrite(ledPin, ledState); +}; + +void Lampeggiatore::Blink(long up, long down) { + // Illumina il ledB precisando ontime e downtime + + if((ledState == HIGH)&& (millis() - previousMillis > up)) { + // save the last time you blinked the LED + previousMillis = millis(); + ledState = LOW ; + } + else if((ledState == LOW)&& (millis() - previousMillis > down)) { + previousMillis = millis(); + ledState = HIGH ; + } + + // set the LED with the ledState of the variable: + digitalWrite(ledPin, ledState); +}; + +///////////////////////////////////// +// Pwm +// Constructor +Pwm::Pwm(int pin) +{ + ledPin = pin; + pinMode(ledPin, OUTPUT); + previousMillis = 0; + byte brightness = 0 ; + increment = 1; +}; + +void Pwm::Up(long speed) { + // Aumenta progressivamente la luminosita' usanndo millis() + // quindi senza bloccare il processore + + analogWrite(ledPin, brightness); // La funziona analogWrite utilizza il PWM + // a 8 bit integrato nel MCU: simula un serie di valori intermedi + // nell'intervallo discreto con minimo 0 (spento) e massimo 255 (acceso). + + if ((millis() - previousMillis) > speed / 256) { + brightness++; // Incrementiamo la luminosita' + previousMillis = millis(); + }; +} + +void Pwm::Down(long speed ) { + // Riduce progressivamente la luminosita' usanndo millis() + // quindi senza bloccare il processore + + analogWrite(ledPin, brightness); // La funziona analogWrite utilizza il PWM + // a 8 bit integrato nel MCU: simula un serie di valori intermedi + // nell'intervallo discreto con minimo 0 (spento) e massimo 255 (acceso). + + if ((millis() - previousMillis) > speed / 256) { + brightness--; // Incrementiamo la luminosita' + previousMillis = millis(); + }; +} + +void Pwm::UD(long speed ) { + // Aumenta e riduce in sequenza la luminosita' usanndo millis() + if ((millis() - previousMillis) > speed / 512) { + brightness = brightness + increment; // Incrementiamo la luminosita' + previousMillis = millis(); + if (brightness == 0 || brightness == 255) { // Reverse direction + increment = -increment ; + }; + }; + analogWrite(ledPin, brightness); +} + + + ////////////////// // Funzioni @@ -86,3 +201,4 @@ pinMode(pin, OUTPUT); digitalWrite(pin, LOW); // turn the LED off by making the voltage LOW delay(velocita); // wait for a second }; + diff --git a/libraries/common/common.h b/libraries/common/common.h index c9072a1..c1cfc39 100644 --- a/libraries/common/common.h +++ b/libraries/common/common.h @@ -33,6 +33,51 @@ class RGBLed { void Off (); }; -void brilla(byte pin, int velocita = 200) ; + +class Lampeggiatore { + // Lampeggia un LED utilizzando millis() + // Variabili + int ledPin ; // il numero del LED pin + int ledState ; // stato attuale del LED + long interval ; // milliseconds di intervallo nel lampeggiare + long previousMillis ; // precedente cambio di stato + + + // Constructor: come viene instanziato un oggetto facente parte della classe +public: + Lampeggiatore(int pin); + void Blink(); // Lampeggia ogni 500ms + void Blink(long interval); // Lampeggia inpostando l'intervallo + void Blink(long on, long down); // Imposta il tempo acceso e il tempo spento +}; + + + +//////////////////////////// +class Pwm { + /* + PWM per un LED: aumentare progressivamente la luminosita'. + Utilizza la funzione millis() invece che un delay() + in modo da non blocare il processore. + */ + // Variabili + int ledPin ; // il numero del LED pin + int speed ; // velocita' del ciclo in ms + byte brightness ; // luminostia' iniziale + long previousMillis ; //precedente cambio di stato + byte increment ; // aumenta brighteness nel loop UD + + // Constructor: come viene instanziato un oggetto facente parte della classe +public: + Pwm(int pin); // numero di pin, velocita' di ciclo + void Up(long speed); + void Down(long speed); + void UD(long speed); +}; + +////////////////////// +// Funzioni + +void brilla(byte pin, int velocita = 200) ; #endif -- 2.39.2