From 51f324396aad33efa1b0218ffee334a1f7d7c084 Mon Sep 17 00:00:00 2001 From: eaman Date: Mon, 30 Jan 2017 18:27:34 +0100 Subject: [PATCH] common utilities --- libraries/common/common.cpp | 63 +++++++++++++++++++++-- libraries/common/common.h | 11 +++- libraries/common/examples/blink/blink.ino | 9 ++-- libraries/common/examples/pwm/pwm.ino | 15 ++++-- libraries/common/examples/rgb/rgb.ino | 4 +- libraries/common/keywords.txt | 21 +++++++- 6 files changed, 106 insertions(+), 17 deletions(-) diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index b77c046..3598969 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -11,7 +11,8 @@ // RGB LED // Common anode / cat -RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) { +RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) { + // Per un common catodo, valore max / min invertiti redPin = pinR ; greenPin = pinG ; bluePin = pinB ; @@ -24,7 +25,7 @@ RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) { }; RGBLed::RGBLed(byte pinR, byte pinG, byte pinB, byte com) { - // Per un common catode, inverte il valore max / min + // Per un common anode, valore max / min normali redPin = pinR ; greenPin = pinG ; bluePin = pinB ; @@ -148,6 +149,24 @@ void Lampeggiatore::Blink(long up, long down) { digitalWrite(ledPin, ledState); }; +void Lampeggiatore::High() { + // Accende il LED + + digitalWrite(ledPin, HIGH); +} + +void Lampeggiatore::Low() { + // Spegne il LED + + digitalWrite(ledPin, LOW); +} + +void Lampeggiatore::Swap() { + // Inverte lo stato del LED + + digitalWrite(ledPin, !digitalRead(ledPin)); +} + ///////////////////////////////////// // Pwm // Constructor @@ -164,7 +183,7 @@ Pwm::Pwm(int pin) }; void Pwm::Up(long speed) { - // Aumenta progressivamente la luminosita' usanndo millis() + // Aumenta linearmente la luminosita' usanndo millis() // quindi senza bloccare il processore // Viene usato un float, in alternativa un coseno @@ -176,8 +195,21 @@ void Pwm::Up(long speed) { }; } +void Pwm::lUp(long speed) { + // Aumenta usanndo millis() con correzione luminosita' LED + // quindi senza bloccare il processore + // Viene usato un float, in alternativa un coseno + + if (millis() != previousMillis) { // si potrebbe togliere + brightness = 255.0 /(float)speed * millis() ; + analogWrite(ledPin, lum(brightness)); + + previousMillis = millis(); + }; +} + void Pwm::Down(long speed ) { - // Riduce progressivamente la luminosita' usanndo millis() + // Riduce linearmente la luminosita' usanndo millis() // quindi senza bloccare il processore if (millis() != previousMillis) { @@ -188,12 +220,35 @@ void Pwm::Down(long speed ) { }; } +void Pwm::lDown(long speed ) { + // Riduce usanndo millis() con correzione della luminosita' + // quindi senza bloccare il processore + + if (millis() != previousMillis) { + brightness = 255 - 255.0 /(float)speed * millis() ; + analogWrite(ledPin, lum(brightness)); + + previousMillis = millis(); + }; +} + void Pwm::UD(long speed ) { // Aumenta e riduce in sequenza la luminosita' usanndo millis() brightness = 128 + 127 * cos(2 * PI / speed * millis()); analogWrite(ledPin, brightness); } +void Pwm::Set(byte brightness) { + // Imposta il valore del PWM + analogWrite(ledPin, brightness); +} + + +void Pwm::lSet(byte brightness) { + // Imposta il valore del PWM + analogWrite(ledPin, lum(brightness)); +} + ///////////////////////////////////// // Sequenza diff --git a/libraries/common/common.h b/libraries/common/common.h index 0af9d45..25b84dd 100644 --- a/libraries/common/common.h +++ b/libraries/common/common.h @@ -73,9 +73,12 @@ class Lampeggiatore { public: Lampeggiatore(int pin); void Invert(); // Inverte il lampeggio - void Blink(); // Lampeggia ogni 500ms + 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 + void High(); // Accende il LED + void Low(); // Spegne il LED + void Swap(); // Inverte lo stato del LED }; @@ -91,14 +94,18 @@ class Pwm { int ledPin ; // il numero del LED pin int speed ; // velocita' del ciclo in ms unsigned long previousMillis ; //precedente cambio di stato - byte increment ; // aumenta brighteness nel loop UD + 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 lUp(long speed); void Down(long speed); + void lDown(long speed); void UD(long speed); + void Set(byte brighteness); + void lSet(byte brighteness); byte brightness ; // luminostia' iniziale }; diff --git a/libraries/common/examples/blink/blink.ino b/libraries/common/examples/blink/blink.ino index b3f9b2b..b796020 100644 --- a/libraries/common/examples/blink/blink.ino +++ b/libraries/common/examples/blink/blink.ino @@ -19,7 +19,10 @@ led.Invert() ; // Opzionale: inverte l'ordine del lampeggio da } void loop() { - led.Blink(); // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW) - led.Blink(500); // Lampeggia ogni 500ms - led.Blink(500,200); // Imposta il tempo acceso e il tempo spento + led.Blink(); // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW) +// led.Blink(500); // Lampeggia ogni 500ms +// led.Blink(500,200); // Imposta il tempo acceso e il tempo spento +// led.High(); // Stato su HI +// led.Low(); // Stato su LOW +// led.Swap(); // Inverte lo Stato } diff --git a/libraries/common/examples/pwm/pwm.ino b/libraries/common/examples/pwm/pwm.ino index 2880dda..deeb8ea 100644 --- a/libraries/common/examples/pwm/pwm.ino +++ b/libraries/common/examples/pwm/pwm.ino @@ -11,12 +11,17 @@ Pwm led = 9; void setup() { -// I PINs vengono impostati dal constructor al momento -// della dichiarazione dell'ogetto. + // I PINs vengono impostati dal constructor al momento + // della dichiarazione dell'ogetto. } void loop() { - led.Up(2000); // Aumenta la luminosita' in 2 sec - led.Down(1000); // Diminuisce la luminosita' in 1 sec - led.UD(4000); // Aumenta e poi diminuisce la luminostia' in 4 sec. + led.Up(2000); // Aumenta la luminosita' linearmente in 2 sec + //led.lUp(2000); // Aumenta la luminosita' con correzione luminosita' per LED + // led.Down(1000); // Diminuisce la luminosita' in 1 sec + // led.lDown(1000); // Diminuisce la luminosita' con correzione luminosita' + // led.UD(4000); // Aumenta e poi diminuisce la luminostia' in 4 sec (coseno) + // led.set(100); // Imposta il valore del PWM da 0-255 + // led.lSet(100); // Imposta il valore del PWM con correzione luminosita + // analogWrite(lum100); // Equivalente a sopra } diff --git a/libraries/common/examples/rgb/rgb.ino b/libraries/common/examples/rgb/rgb.ino index ed7a564..0dd3863 100644 --- a/libraries/common/examples/rgb/rgb.ino +++ b/libraries/common/examples/rgb/rgb.ino @@ -13,10 +13,10 @@ void setup() { // Instanziamo un LED RGBLed led(11, 10,9); //Istanziamo un oggetto led (common catodo) // facente parte della classe RGBLed -//RGBLed led(10, 9, 11,255); // Inizializzazione Common anodo, valori invertiti +//RGBLed led(10,9,11,255); // Inizializzazione Common anodo, valori invertiti void loop() { - led.Red(); + led.White(); } diff --git a/libraries/common/keywords.txt b/libraries/common/keywords.txt index 3bbb239..1ef357b 100644 --- a/libraries/common/keywords.txt +++ b/libraries/common/keywords.txt @@ -1,4 +1,4 @@ -RGBLed KEYWORD1 +RGBLed KEYWORD1 Red KEYWORD2 Green KEYWORD2 Blue KEYWORD2 @@ -9,3 +9,22 @@ Yellow KEYWORD2 Off KEYWORD2 SetColor KEYWORD2 brilla KEYWORD2 +Lampeggiatore KEYWORD1 +Invert KEYWORD2 +Blink KEYWORD2 +Blink KEYWORD2 +Blink KEYWORD2 +High KEYWORD2 +Low KEYWORD2 +Swap KEYWORD2 +Pwm KEYWORD1 +Up KEYWORD2 +lUp KEYWORD2 +Down KEYWORD2 +lDown KEYWORD2 +UD KEYWORD2 +Set KEYWORD2 +lSet KEYWORD2 +lum KEYWORD2 +Sequenza KEYWORD1 +Update KEYWORD2 -- 2.39.2