]> git.piffa.net Git - aerei/commitdiff
Blink
authorAndrea Manni <andrea@piffa.net>
Tue, 7 Feb 2017 09:59:49 +0000 (10:59 +0100)
committerAndrea Manni <andrea@piffa.net>
Tue, 7 Feb 2017 09:59:49 +0000 (10:59 +0100)
libraries/common/common.cpp
libraries/common/examples/blink/blink.ino
pragmatica.txt [new file with mode: 0644]

index b6e1e095c3d48606e5ed017f4a3f4b1d88f26c01..1d9153bb0547037ad3d955b723fa5c8befff9a46 100644 (file)
@@ -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));
 }
 
index d72d6031dc1e8d189707b69c0ed49c6c22c9709f..d182fe4b4826b067e86d1952fc49fdd55fb3ff88 100644 (file)
@@ -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 (file)
index 0000000..8e6fa77
--- /dev/null
@@ -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