]> git.piffa.net Git - aerei/commitdiff
correzione lum
authoreaman <andrea@piffa.net>
Mon, 16 Jan 2017 01:53:45 +0000 (02:53 +0100)
committereaman <andrea@piffa.net>
Mon, 16 Jan 2017 01:53:45 +0000 (02:53 +0100)
TODO
zeta/zeta.ino
zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino

diff --git a/TODO b/TODO
index 43ed7429fcd941dd367c5e3d205ddd2b7184d503..0c98bc8cc4d9c2096b991002a3ba92a78e00ed6d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,2 +1,2 @@
-Cambiata la libreria common per i PWM con float,
-controllare lo stato idle.
+Creare un PWM con correzione di luminosita' su look table da 32 / 256 valori,
+eventualmente uno con coseno.
index 60cd895020c033025d06bf2acbe83605bdad09d9..41bdfa3f7034f0ffcdd7760df884607ed7b95d92 100644 (file)
@@ -1,24 +1,97 @@
-/* Esempio
+/* Zeta test
 
-Setup per la Zeta
+Nota: rovedere i PWM per come calcolano le pause:
+non possono schendere sotto a 1ms
 */
 
 #include <common.h>
-Lampeggiatore status = 13;
+enum states_available { // Stati della FMS
+  idle,    // Throttle a zero
+  normal,  // Th normale
+  full,    // Th massimo
+};
+states_available state  ;
+
+// Due LED con lampeggio alternato:
+Lampeggiatore right = 3;
+Lampeggiatore left = 5;
+const byte rtail = 6;
+const byte ltail = 9;
+const byte thrPin = A3;
+byte pausa ;
+byte thr ;
+int thrIn ;
+
+Pwm rwhite = 3;
+Pwm lwhite = 5;
+Pwm rtp = 6 ;
+Pwm ltp = 9 ;
 
-// Attorno al canopy:
-Lampeggiatore rtop = 3;
-Lampeggiatore ltop = 5;
 
 void setup() {
-  // I PINs vengono impostati dalla dichiarazione dell'ogetto.
-  ltop.Invert();
+  left.Invert() ; // Parte da stato invertito rispetto al default
+  pinMode(rtail, OUTPUT);
+  pinMode(ltail, OUTPUT);
+  pinMode(thrPin, INPUT);
+  // Warning: serial breaks PWM
+  // Serial.begin(9600);
+
+  randomSeed(analogRead(0));
 }
 
 void loop() {
 
+  thrIn = pulseIn(thrPin, HIGH, 25000);
+  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
+  // Inserire necro delay
+  delay(10); // Se si abilita il serial debug
+  // togliere il delay
+
+  // FMS dispatcher
+  if ( thr < 10 ) {
+    state = idle ;
+  } else if ( thr > 245 ) {
+    state = full ;
+  } else {
+    state = normal ;
+  }
+
+  switch (state) {
+    case idle:
+      rwhite.UD(2);  // Utilizza il coseno
+      lwhite.UD(2);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
+      ltp.UD(2);
+      rtp.UD(2);
+      break;
+
+    case normal:
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      left.Blink(1120 - 4 * thr );
+      analogWrite(rtail, lum(thr));
+      analogWrite(ltail, lum(thr));
+      break;
+
+    case full:
+      pausa = random(30, 125);
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      digitalWrite(ltail, !digitalRead(ltail));
+      digitalWrite(3, !digitalRead(3));
+      delay(pausa);
+
+      left.Blink(1120 - 4 * thr );
+      digitalWrite(rtail, !digitalRead(rtail));
+      digitalWrite(5, !digitalRead(5));
+      delay(pausa);
+      break;
+  }
+
+
+  //  Serial.println(thrIn);
+  //  Serial.print("\t thr:");
+  //  Serial.print(thr);
+  //  Serial.print("\t state:");
+  //  Serial.println(state);
 
-  rtop.Blink(300);
-  ltop.Blink(300);
-  status.Blink(500);
 }
index 9a9b23e9aa19b379431c4f9fd21b86403ad4ac85..41bdfa3f7034f0ffcdd7760df884607ed7b95d92 100644 (file)
@@ -1,5 +1,5 @@
 /* Zeta test
+
 Nota: rovedere i PWM per come calcolano le pause:
 non possono schendere sotto a 1ms
 */
@@ -18,6 +18,7 @@ Lampeggiatore left = 5;
 const byte rtail = 6;
 const byte ltail = 9;
 const byte thrPin = A3;
+byte pausa ;
 byte thr ;
 int thrIn ;
 
@@ -40,11 +41,11 @@ void setup() {
 
 void loop() {
 
-thrIn = pulseIn(thrPin, HIGH, 25000);
-thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
-// Inserire necro delay
-delay(10); // Se si abilita il serial debug
-            // togliere il delay
+  thrIn = pulseIn(thrPin, HIGH, 25000);
+  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
+  // Inserire necro delay
+  delay(10); // Se si abilita il serial debug
+  // togliere il delay
 
   // FMS dispatcher
   if ( thr < 10 ) {
@@ -57,8 +58,8 @@ delay(10); // Se si abilita il serial debug
 
   switch (state) {
     case idle:
-      rwhite.UD(2);
-      lwhite.UD(2);
+      rwhite.UD(2);  // Utilizza il coseno
+      lwhite.UD(2);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
       ltp.UD(2);
       rtp.UD(2);
       break;
@@ -67,17 +68,22 @@ delay(10); // Se si abilita il serial debug
       // Due LED con lampeggio alternato:
       right.Blink(1120 - 4 * thr );
       left.Blink(1120 - 4 * thr );
-      analogWrite(rtail, thr);
-      analogWrite(ltail, thr);
+      analogWrite(rtail, lum(thr));
+      analogWrite(ltail, lum(thr));
       break;
 
     case full:
+      pausa = random(30, 125);
       // Due LED con lampeggio alternato:
       right.Blink(1120 - 4 * thr );
+      digitalWrite(ltail, !digitalRead(ltail));
+      digitalWrite(3, !digitalRead(3));
+      delay(pausa);
+
       left.Blink(1120 - 4 * thr );
       digitalWrite(rtail, !digitalRead(rtail));
-      digitalWrite(ltail, !digitalRead(ltail));
-      delay(random(20, 100));
+      digitalWrite(5, !digitalRead(5));
+      delay(pausa);
       break;
   }