--- /dev/null
+Cambiata la libreria common per i PWM con float,
+controllare lo stato idle.
--- /dev/null
+/* 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.
+
+ }
+}
--- /dev/null
+/* 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);
+
+}
--- /dev/null
+/* 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);
+
+}
+++ /dev/null
-/* 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);
-
-}
+++ /dev/null
-/* 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);
- }
-}
+++ /dev/null
-/* 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.
-
- }
-}
--- /dev/null
+/* 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);
+}