From bcaafb8d3e90a958629f767fc5b276fc9789bb96 Mon Sep 17 00:00:00 2001 From: Andrea Manni Date: Tue, 7 Feb 2017 10:59:49 +0100 Subject: [PATCH] Blink --- libraries/common/common.cpp | 21 +++-- libraries/common/examples/blink/blink.ino | 2 +- pragmatica.txt | 104 ++++++++++++++++++++++ 3 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 pragmatica.txt diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index b6e1e09..1d9153b 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -112,14 +112,14 @@ void Lampeggiatore::Blink() { // Illumina il led a 500ms if(millis() + shift - 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); + // save the last time you blinked the LED + previousMillis += interval; } - // set the LED with the ledState of the variable: - digitalWrite(ledPin, ledState); }; void Lampeggiatore::Blink(long time, long drift ) { @@ -127,14 +127,13 @@ void Lampeggiatore::Blink(long time, long drift ) { shift = drift; if(millis() + shift - 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); + // save the last time you blinked the LED + previousMillis += time; + } }; void Lampeggiatore::Blink(long up, long down, long drift ) { @@ -143,11 +142,11 @@ void Lampeggiatore::Blink(long up, long down, long drift ) { shift = drift; if((ledState == HIGH)&& (millis() + shift - previousMillis > up)) { // save the last time you blinked the LED - previousMillis = millis(); + previousMillis += up; ledState = LOW ; } else if((ledState == LOW)&& (millis() + shift - previousMillis > down)) { - previousMillis = millis(); + previousMillis += down; ledState = HIGH ; } @@ -256,7 +255,7 @@ void Pwm::Set(byte brightness) { void Pwm::lSet(byte brightness) { - // Imposta il valore del PWM + // Imposta il valore del PWM con correzione luminosita' LED analogWrite(ledPin, lum(brightness)); } diff --git a/libraries/common/examples/blink/blink.ino b/libraries/common/examples/blink/blink.ino index d72d603..d182fe4 100644 --- a/libraries/common/examples/blink/blink.ino +++ b/libraries/common/examples/blink/blink.ino @@ -21,7 +21,7 @@ void setup() { void loop() { led.Blink(); // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW) // led.Blink(400); // Lampeggia ogni 400ms -// led.Blink(400,200); // Imposta il tempo acceso e il tempo spento a 400ms, 200ms di ritardo +// led.Blink(400,200); // Imposta il tempo acceso a 400ms, 200ms di ritardo // led.Blink(300,700,0); // acceso per 300ms, spento per 700 ms, ritardo = 0ms // led.Blink(300,700,500); // acceso per 300ms, spento per 700 ms, ritardo = 500s // led.High(); // Stato su HI diff --git a/pragmatica.txt b/pragmatica.txt new file mode 100644 index 0000000..8e6fa77 --- /dev/null +++ b/pragmatica.txt @@ -0,0 +1,104 @@ +Pragmatica della luminosita' applicata al volo notturno + +Elementi disponibili + + * lampeggi + * fade (up / down / UD) + * accensioni / spegnimenti sequenziali di segmenti (knight rider) + * RGB: quanto sopra + cambio dei colori + +Lampeggi + + Dettaglio: + * velocita' tempi HI / LOW + * Variazione tempo HI / tempo LOW + * Lampeggi sequenziali con una pausa LOW piu' lunga + + Considerazioni: un lampeggio con rapporto H/L 1/3 dimostra lo stesso + consumo di segmento sequenziale a 3 unita'. + +Fade + + * E' difficile distinguere tra un UP e un DOWN + * Le variazioni della luminosita', sopratutto ai valori bassi, sono + poco percettibili. Un movimento sequenziale con velocita' variabile + e' piu' evidente + +RGB + + * si puo' usare un solo PWM sul catodo comune per pilotare + l'intensita' di tutti i colori + +Sequenziali + + * il minimo per un sequenziale e' 3 segmenti * questi possono essere + messi in serie a 3 canali RGB + * I segmenti posso essere ripetuti + * I segmenti posso essere messi in mirror (es. dal centro all'esterno + per le ali) + * si puo' variare il rapporto tra accesi / spenti + * I neopixels sono i migliori per i sequenziali + +Considerazioni + + * Piu' il LED e' acceso (White per RGB) piu' consuma: limitare tempo + e luminosita' + * Il binaco freddo e' il LED piu' luminoso + * il contrasto acceso / spento e' il piu' evidente, il fade e' piu' + subdolo. + * la visibilita' delle estremita' permette la massima visibilita' + della sagoma e delle rotazioni. + +Pragmatica + + * la maggior parte del tempo l'aereo e' visibile da sotto + * se l'aereo e' in orientamento normale e' ok, se in volo rovesciato + e' allarme * per un acrobatico si potrebbe indicare ogni + orientamento con RGB + * se l'aereo e' pari e' ok, se picchia e' allarme, se cabra puo' + essere segnalato. + +Lessico + + * il lampeggio indica allarme + * il fade UD indica riposo / stazionario + * il sequenziale ha una connotazione di attivita' in corso + +Orientamento + + Serve distinguere principalmente tra sopra e sotto, davanti e dietro. + Secondariamente tra destra e sinistra. + + Quindi prevalentemente usare il bianco per il sotto e per le + estremita'. Il rosso essendo il secondo colore predominante si puo' + usare per il sopra. Verde e blu per i lati. + + Per dare un'indicazione della direzione usare segmenti sequenziali: + sotto l'aereo per indicare il moto orizzontale + +Hardware + +Sensori + + * per rilevare l'inclinazione basta una bussola HMC5883L + * per rilevare lo stato della carica delle batterie bastano le + entrate A. 5v di un Arduino + * il throttle e' in genere l'unico che non prevede trim, per gli + altri bisognerebbe compensare i trim con una autocalibrazione + iniziale per fissare lo 0 + +Hardware + + * SMD 2835: 40-60mAh, 25lm, ~1e/m * consigliato per il rosso, 120' di + diffusione, ottimo dissipatore + * SMD3528: 20mA, 6lm, 0.e/m * Il bianco e' adeguato, 90' di + diffusione, ottimo con alta densita' + * SMD 5050: triplo chip, adatto per RGB, molto calore. + + Links: + * [1]https://www.flexfireleds.com/pages/Comparison-between-3528-LEDs- + and-5050-LEDs.html + +References + + 1. https://www.flexfireleds.com/pages/Comparison-between-3528-LEDs-and-5050-LEDs.html -- 2.39.2