From: eaman Date: Mon, 9 Jan 2017 01:12:16 +0000 (+0100) Subject: pwm float X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=c5dcd2659f6dce5580dd0bc00d478ef9a21c735f;p=aerei pwm float --- diff --git a/TODO b/TODO new file mode 100644 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 index 0000000..14f5d8c --- /dev/null +++ b/zeta_5_no_state/zeta_5_no_state.ino @@ -0,0 +1,94 @@ +/* Zeta test + * le funzioni finali sono da controllare + + +*/ + +#include + + +// 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 index 0000000..cae5347 --- /dev/null +++ b/zeta_5_state/zeta_5_state.ino @@ -0,0 +1,88 @@ +/* Zeta test + * le funzioni finali sono da controllare + + +*/ + +#include +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 index 0000000..9a9b23e --- /dev/null +++ b/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino @@ -0,0 +1,91 @@ +/* Zeta test + +Nota: rovedere i PWM per come calcolano le pause: +non possono schendere sotto a 1ms +*/ + +#include +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 index 5a2e752..0000000 --- a/zeta_full_1/zeta_full_1.ino +++ /dev/null @@ -1,40 +0,0 @@ -/* Esempi Vari - -Vari esempi di utilizzo della libreria. -*/ - -#include - - -// 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 index b5c1d8e..0000000 --- a/zeta_full_millis_3/zeta_full_millis_3.ino +++ /dev/null @@ -1,78 +0,0 @@ -/* Esempi Vari - -Vari esempi di utilizzo della libreria. -*/ - -#include - - -// 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 index def2986..0000000 --- a/zeta_full_millis_4_test/zeta_full_millis_4_test.ino +++ /dev/null @@ -1,87 +0,0 @@ -/* Esempi Vari - -Vari esempi di utilizzo della libreria. -*/ - -#include - - -// 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 index 0000000..600d69c --- /dev/null +++ b/zeta_prot/zeta_prot.ino @@ -0,0 +1,67 @@ +/* Zeta test + * le funzioni finali sono da controllare + + +*/ + +#include +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); +}