]> git.piffa.net Git - sketchbook_andrea/commitdiff
aero
authoreaman <andrea@piffa.net>
Wed, 26 Oct 2016 18:59:09 +0000 (20:59 +0200)
committereaman <andrea@piffa.net>
Wed, 26 Oct 2016 18:59:09 +0000 (20:59 +0200)
libraries/common/common.cpp
libraries/common/common.h

index 5ddcaeece0f5b9df9d6910fc6542843f47afbc37..2de42e975d4bc038ec21bde50c87c5b76b3ba70d 100644 (file)
@@ -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
 };
+
index c9072a15e72732d678e3f5a4dfc2642959e953d2..c1cfc39636211e0da00312226b527b84b3db1544 100644 (file)
@@ -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