]> git.piffa.net Git - aerei/commitdiff
pwm float
authoreaman <andrea@piffa.net>
Mon, 9 Jan 2017 01:12:16 +0000 (02:12 +0100)
committereaman <andrea@piffa.net>
Mon, 9 Jan 2017 01:12:16 +0000 (02:12 +0100)
TODO [new file with mode: 0644]
zeta_5_no_state/zeta_5_no_state.ino [new file with mode: 0644]
zeta_5_state/zeta_5_state.ino [new file with mode: 0644]
zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino [new file with mode: 0644]
zeta_full_1/zeta_full_1.ino [deleted file]
zeta_full_millis_3/zeta_full_millis_3.ino [deleted file]
zeta_full_millis_4_test/zeta_full_millis_4_test.ino [deleted file]
zeta_prot/zeta_prot.ino [new file with mode: 0644]

diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..43ed742
--- /dev/null
+++ b/TODO
@@ -0,0 +1,2 @@
+Cambiata la libreria common per i PWM con float,
+controllare lo stato idle.
diff --git a/zeta_5_no_state/zeta_5_no_state.ino b/zeta_5_no_state/zeta_5_no_state.ino
new file mode 100644 (file)
index 0000000..14f5d8c
--- /dev/null
@@ -0,0 +1,94 @@
+/* Zeta test
+ *  le funzioni finali sono da controllare
+
+
+*/
+
+#include <common.h>
+
+
+// Due LED con lampeggio alternato:
+Lampeggiatore right = 3;
+Lampeggiatore left = 5;
+const byte rtail = 6;
+const byte ltail = 9;
+const byte thrPin = A3;
+byte thr ;
+int thrIn ;
+
+long previousMillisA = 0;
+long previousMillisB = 0;
+
+unsigned long intervalA = 200;
+unsigned long intervalB = 200;
+
+void setup() {
+  left.Invert() ; // Parte da stato invertito rispetto al default
+  pinMode(rtail, OUTPUT);
+  pinMode(ltail, OUTPUT);
+  pinMode(thrPin, INPUT);
+  // Serial.begin(9600);
+
+  randomSeed(analogRead(0));
+}
+
+void loop() {
+  thrIn = pulseIn(thrPin, HIGH, 25000);
+  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
+
+  if (thr >0 && thr < 15) {
+    digitalWrite(rtail, 1);
+digitalWrite(ltail, 1);
+    digitalWrite(3, 1);
+digitalWrite(5, 1);
+
+  } else if (thr < 245) {
+        // Due LED con lampeggio alternato:
+    right.Blink(1120 - 4 * thr );
+    left.Blink(1120 - 4 * thr );
+    analogWrite(rtail, thr);
+    analogWrite(ltail, thr);
+  } else {
+    digitalWrite(rtail, !digitalRead(rtail));
+    digitalWrite(ltail, !digitalRead(ltail));
+    delay(random(20, 100));
+
+    //lampA;
+    //lampB;
+
+  }
+  Serial.println(thrIn);
+  Serial.print("\t thr:");
+  Serial.println(thr);
+
+}
+
+
+// Functions
+// TODO: non funzionano :(
+
+
+void lampA () {
+  // Illumina la coda r a un tempo random
+  if (millis() - previousMillisA > intervalA) {
+    previousMillisA = millis();
+    intervalA = random(50, 255);
+    digitalWrite(rtail, !digitalRead(rtail));
+    // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
+    // questo ci permette di non dover avere una variabile per tracciare lo stato.
+
+  }
+}
+
+void lampB () {
+  // Illumina la coda l a un tempo random
+
+  if (millis() - previousMillisB > intervalB) {
+    previousMillisB = millis();
+    intervalB = random(50, 255);
+    digitalWrite(ltail, !digitalRead(ltail));
+    // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
+    // questo ci permette di non dover avere una variabile per tracciare lo stato.
+
+  }
+}
diff --git a/zeta_5_state/zeta_5_state.ino b/zeta_5_state/zeta_5_state.ino
new file mode 100644 (file)
index 0000000..cae5347
--- /dev/null
@@ -0,0 +1,88 @@
+/* Zeta test
+ *  le funzioni finali sono da controllare
+
+
+*/
+
+#include <common.h>
+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 thr ;
+int thrIn ;
+
+Pwm rwhite = 3;
+Pwm lwhite = 5;
+Pwm rtp = 6 ;
+Pwm ltp = 9 ;
+
+
+void setup() {
+  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) ;
+
+// FMS dispatcher
+  if ( thr < 10 ) {
+    state = idle ;
+  } else if ( thr > 245 ) {
+    state = full ;
+  } else {
+    state = normal ;
+  }
+
+  switch (state) {
+    case idle:
+rwhite.Up(200);
+lwhite.Up(200);
+ltp.Up(200);
+rtp.Up(200);
+      break;
+
+    case normal:
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      left.Blink(1120 - 4 * thr );
+      analogWrite(rtail, thr);
+      analogWrite(ltail, thr);
+      break;
+      
+    case full:
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      left.Blink(1120 - 4 * thr );
+      digitalWrite(rtail, !digitalRead(rtail));
+      digitalWrite(ltail, !digitalRead(ltail));
+      delay(random(20, 100));
+      break;
+  }
+
+  
+  Serial.println(thrIn);
+  Serial.print("\t thr:");
+  Serial.print(thr);
+  Serial.print("\t state:");
+  Serial.println(state);
+
+}
diff --git a/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino b/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino
new file mode 100644 (file)
index 0000000..9a9b23e
--- /dev/null
@@ -0,0 +1,91 @@
+/* Zeta test
+Nota: rovedere i PWM per come calcolano le pause:
+non possono schendere sotto a 1ms
+*/
+
+#include <common.h>
+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 thr ;
+int thrIn ;
+
+Pwm rwhite = 3;
+Pwm lwhite = 5;
+Pwm rtp = 6 ;
+Pwm ltp = 9 ;
+
+
+void setup() {
+  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);
+      lwhite.UD(2);
+      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, thr);
+      analogWrite(ltail, thr);
+      break;
+
+    case full:
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      left.Blink(1120 - 4 * thr );
+      digitalWrite(rtail, !digitalRead(rtail));
+      digitalWrite(ltail, !digitalRead(ltail));
+      delay(random(20, 100));
+      break;
+  }
+
+
+  //  Serial.println(thrIn);
+  //  Serial.print("\t thr:");
+  //  Serial.print(thr);
+  //  Serial.print("\t state:");
+  //  Serial.println(state);
+
+}
diff --git a/zeta_full_1/zeta_full_1.ino b/zeta_full_1/zeta_full_1.ino
deleted file mode 100644 (file)
index 5a2e752..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Esempi Vari
-
-Vari esempi di utilizzo della libreria.
-*/
-
-#include <common.h>
-
-
-// Due LED con lampeggio alternato:
-Lampeggiatore right = 3;
-Lampeggiatore left = 5;
-const byte rtail = 6;
-const byte ltail = 9;
-const byte thrPin = A3;
-int thr ;
-int thrIn ;
-
-void setup() {
-  left.Invert() ; // Parte da stato invertito rispetto al default
-  pinMode(rtail, OUTPUT);
-  pinMode(ltail, OUTPUT);
-  pinMode(thrPin, INPUT);
-  Serial.begin(9600);
-
-}
-
-void loop() {
-
-  thrIn = pulseIn(thrPin, HIGH, 25000);
-  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
-  // Due LED con lampeggio alternato:
-  right.Blink(1630 - 6 * thr );
-  left.Blink(1630 - 6 * thr );
-  analogWrite(rtail, thr);
-  analogWrite(ltail, thr);
-  Serial.println(thrIn);
-  Serial.print("\t thr:");
-  Serial.println(thr);
-
-}
diff --git a/zeta_full_millis_3/zeta_full_millis_3.ino b/zeta_full_millis_3/zeta_full_millis_3.ino
deleted file mode 100644 (file)
index b5c1d8e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Esempi Vari
-
-Vari esempi di utilizzo della libreria.
-*/
-
-#include <common.h>
-
-
-// Due LED con lampeggio alternato:
-Lampeggiatore right = 3;
-Lampeggiatore left = 5;
-const byte rtail = 6;
-const byte ltail = 9;
-const byte thrPin = A3;
-byte thr ;
-int thrIn ;
-
-long previousMillisA ;
-long previousMillisB;
-
-void setup() {
-  left.Invert() ; // Parte da stato invertito rispetto al default
-  pinMode(rtail, OUTPUT);
-  pinMode(ltail, OUTPUT);
-  pinMode(thrPin, INPUT);
-  Serial.begin(9600);
-
-  randomSeed(analogRead(0));
-}
-
-void loop() {
-
-  thrIn = pulseIn(thrPin, HIGH, 25000);
-  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
-  // Due LED con lampeggio alternato:
-  right.Blink(1630 - 6 * thr );
-  left.Blink(1630 - 6 * thr );
-  if (thr < 240) {
-  analogWrite(rtail, thr);
-  analogWrite(ltail, thr);
-  } else {
-    lampA ;
-    lampB;
-  }
-  Serial.println(thrIn);
-  Serial.print("\t thr:");
-  Serial.println(thr);
-
-}
-
-
-// Functions 
-
-static byte intervalA ;
-static byte intervalB ;
-
-void lampA () {
-  // Illumina la coda r a un tempo random
-  if (millis() - previousMillisA > intervalA) {   
-    previousMillisA = millis(); 
-  digitalWrite(rtail, !digitalRead(rtail));
-  // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
-  // questo ci permette di non dover avere una variabile per tracciare lo stato.
-  intervalA = random(50,255);
-  }
-}
-
-void lampB () {
-  // Illumina la coda l a un tempo random
-
-  if (millis() - previousMillisB > intervalB) {   
-    previousMillisB = millis(); 
-  digitalWrite(ltail, !digitalRead(ltail));
-  // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
-  // questo ci permette di non dover avere una variabile per tracciare lo stato.
-  intervalB = random(50,255);
-  }
-}
diff --git a/zeta_full_millis_4_test/zeta_full_millis_4_test.ino b/zeta_full_millis_4_test/zeta_full_millis_4_test.ino
deleted file mode 100644 (file)
index def2986..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Esempi Vari
-
-Vari esempi di utilizzo della libreria.
-*/
-
-#include <common.h>
-
-
-// Due LED con lampeggio alternato:
-Lampeggiatore right = 3;
-Lampeggiatore left = 5;
-const byte rtail = 6;
-const byte ltail = 9;
-const byte thrPin = A3;
-byte thr ;
-int thrIn ;
-
-long previousMillisA = 0;
-long previousMillisB = 0;
-
-unsigned long intervalA =200;
-unsigned long intervalB = 200;
-
-void setup() {
-  left.Invert() ; // Parte da stato invertito rispetto al default
-  pinMode(rtail, OUTPUT);
-  pinMode(ltail, OUTPUT);
-  pinMode(thrPin, INPUT);
- // Serial.begin(9600);
-
-  randomSeed(analogRead(0));
-}
-
-void loop() {
-
-  thrIn = pulseIn(thrPin, HIGH, 25000);
-  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
-  // Due LED con lampeggio alternato:
-  right.Blink(1630 - 6 * thr );
-  left.Blink(1630 - 6 * thr );
-  if (thr < 245) {
-  analogWrite(rtail, thr);
-  analogWrite(ltail, thr);
-  } else {
-    digitalWrite(rtail, !digitalRead(rtail));
-    digitalWrite(ltail, !digitalRead(ltail));
-    delay(random(20,100));
-
-//lampA;
-//lampB;
-
-  }
-  Serial.println(thrIn);
-  Serial.print("\t thr:");
-  Serial.println(thr);
-
-}
-
-
-// Functions 
-// TODO: non funzionano :(
-
-
-void lampA () {
-  // Illumina la coda r a un tempo random
-  if (millis() - previousMillisA > intervalA) {   
-    previousMillisA = millis(); 
-    intervalA = random(50,255);
-  digitalWrite(rtail, !digitalRead(rtail));
-  // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
-  // questo ci permette di non dover avere una variabile per tracciare lo stato.
-  
-  }
-}
-
-void lampB () {
-  // Illumina la coda l a un tempo random
-
-  if (millis() - previousMillisB > intervalB) {   
-    previousMillisB = millis(); 
-    intervalB = random(50,255);
-  digitalWrite(ltail, !digitalRead(ltail));
-  // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
-  // questo ci permette di non dover avere una variabile per tracciare lo stato.
-  
-  }
-}
diff --git a/zeta_prot/zeta_prot.ino b/zeta_prot/zeta_prot.ino
new file mode 100644 (file)
index 0000000..600d69c
--- /dev/null
@@ -0,0 +1,67 @@
+/* Zeta test
+ *  le funzioni finali sono da controllare
+
+
+*/
+
+#include <common.h>
+enum  { // Stati della FMS
+  idle,    // Throttle a zero
+  normal,  // Th normale
+  full,    // Th massimo
+} state  ;
+
+// Due LED con lampeggio alternato:
+Lampeggiatore right = 3;
+Pwm rpwm = 3;
+const byte thrPin = A3;
+byte thr ;
+int thrIn ;
+
+
+
+void setup() {
+ // Serial.begin(9600);
+  pinMode(A3, INPUT);
+  randomSeed(analogRead(0));
+}
+
+void loop() {
+
+  thrIn = analogRead(3);
+  thr = constrain(thrIn / 4 , 0, 255) ;
+
+  // FMS dispatcher
+  if ( thr < 10 ) {
+    state = idle ;
+  } else if ( thr > 245 ) {
+    state = full ;
+  } else {
+    state = normal ;
+  }
+
+  switch (state) {
+    case idle:
+     // digitalWrite(3,LOW);
+rpwm.Up(1000);
+      break;
+
+    case normal:
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      break;
+
+    case full:
+      digitalWrite(3, HIGH);
+
+      break;
+  }
+
+
+//  Serial.print(thrIn);
+//  Serial.print("\t thr:");
+//  Serial.print(thr);
+//  Serial.print("\t state:");
+//  Serial.println(state);
+//  delay(200);
+}