]> git.piffa.net Git - aerei/commitdiff
common update, reorder
authoreaman <andrea@piffa.net>
Mon, 30 Jan 2017 17:32:09 +0000 (18:32 +0100)
committereaman <andrea@piffa.net>
Mon, 30 Jan 2017 17:32:09 +0000 (18:32 +0100)
25 files changed:
aerei/zeta/zeta/zeta.ino [new file with mode: 0644]
aerei/zeta/zeta_5_no_state/zeta_5_no_state.ino [new file with mode: 0644]
aerei/zeta/zeta_5_state/zeta_5_state.ino [new file with mode: 0644]
aerei/zeta/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino [new file with mode: 0644]
aerei/zeta/zeta_full/zeta_full.ino [new file with mode: 0644]
aerei/zeta/zeta_prot/zeta_prot.ino [new file with mode: 0644]
bussola/red_white/red_white.ino [deleted file]
bussola/rgb_states/rgb_states.ino [deleted file]
esempi/bussola/red_white/red_white.ino [new file with mode: 0644]
esempi/bussola/rgb_states/rgb_states.ino [new file with mode: 0644]
esempi/state_throttle/state_throttle.ino [new file with mode: 0644]
libraries/common/TODO
libraries/common/common.cpp
libraries/common/common.h
libraries/common/examples/blink/blink.ino
libraries/common/examples/pwm/pwm.ino
libraries/common/examples/rgb/rgb.ino
libraries/common/keywords.txt
pragmatica.rst
zeta/zeta.ino [deleted file]
zeta_5_no_state/zeta_5_no_state.ino [deleted file]
zeta_5_state/zeta_5_state.ino [deleted file]
zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino [deleted file]
zeta_full/zeta_full.ino [deleted file]
zeta_prot/zeta_prot.ino [deleted file]

diff --git a/aerei/zeta/zeta/zeta.ino b/aerei/zeta/zeta/zeta.ino
new file mode 100644 (file)
index 0000000..45e1f2e
--- /dev/null
@@ -0,0 +1,102 @@
+/* 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 pausa ;
+byte thr ;
+int thrIn ;
+
+Pwm rwhite = 3;
+Pwm lwhite = 5;
+Pwm rtp = 6 ;
+Pwm ltp = 9 ;
+
+RGBLed rgb(7,8,4,255);
+
+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:
+    rgb.Red();
+      rwhite.UD(2000);  // Utilizza il coseno
+      lwhite.UD(2000);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
+      ltp.UD(2000);
+      rtp.UD(2000);
+      break;
+
+    case normal:
+    rgb.Green();
+      // 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:
+    rgb.Blue();
+      pausa = random(30, 125);
+      // Due LED con lampeggio alternato:
+      right.Blink(1120 - 4 * thr );
+      digitalWrite(ltail, !digitalRead(ltail));
+      digitalWrite(3, !digitalRead(3));
+  
+
+      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);
+
+}
diff --git a/aerei/zeta/zeta_5_no_state/zeta_5_no_state.ino b/aerei/zeta/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/aerei/zeta/zeta_5_state/zeta_5_state.ino b/aerei/zeta/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/aerei/zeta/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino b/aerei/zeta/zeta_5_state_no_aserial/zeta_5_state_no_aserial.ino
new file mode 100644 (file)
index 0000000..af87d04
--- /dev/null
@@ -0,0 +1,97 @@
+/* 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 pausa ;
+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(2000);  // Utilizza il coseno
+      lwhite.UD(2000);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
+      ltp.UD(2000);
+      rtp.UD(2000);
+      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));
+  
+
+      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);
+
+}
diff --git a/aerei/zeta/zeta_full/zeta_full.ino b/aerei/zeta/zeta_full/zeta_full.ino
new file mode 100644 (file)
index 0000000..9247a3d
--- /dev/null
@@ -0,0 +1,28 @@
+/* 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;
+
+void setup() {
+  left.Invert() ; // Parte da stato invertito rispetto al default
+  pinMode(rtail,OUTPUT);
+  pinMode(ltail,OUTPUT);
+    
+}
+
+void loop() {
+  // Due LED con lampeggio alternato:
+  right.Blink();
+  left.Blink();
+  digitalWrite(rtail,HIGH);
+  digitalWrite(ltail,HIGH);
+}
diff --git a/aerei/zeta/zeta_prot/zeta_prot.ino b/aerei/zeta/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);
+}
diff --git a/bussola/red_white/red_white.ino b/bussola/red_white/red_white.ino
deleted file mode 100644 (file)
index 78065e5..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-An Arduino code example for interfacing with the HMC5883
-
-by: Jordan McConnell
- SparkFun Electronics
- created on: 6/30/11
- license: OSHW 1.0, http://freedomdefined.org/OSHW
-
-Analog input 4 I2C SDA
-Analog input 5 I2C SCL
-
-Link: https://www.sparkfun.com/tutorials/301
-Datasheet e registri: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/HMC5883L-FDS.pdf
-*/
-
-#include <Wire.h> //I2C Arduino Library
-#include <common.h> //Libreria comune
-
-#define address 0x1E //0011110b, I2C 7bit address of HMC5883
-
-const byte redPin      = 11;   // 2v a 20ma: che resistenza dovro usare?
-const byte greenPin    = 10;   // 3.5v a 20ma: che resistenza dovro usare?
-const byte bluePin     = 9;    // 3.5v a 20ma: che resistenza dovro usare?
-byte xval ;
-void setup() {
-  //Initialize Serial and I2C communications
-  Serial.begin(9600);
-  Wire.begin();
-
-  //Put the HMC5883 IC into the correct operating mode
-  Wire.beginTransmission(address); //open communication with HMC5883
-  Wire.write(0x00); //select mode Measurement Configuration Bits
-  Wire.write(0x70); // 8 -average, 15 Hz default, normal measuremen
-  Wire.write(0x02); //select mode register
-  Wire.write(0x00); //continuous measurement mode
-  Wire.endTransmission();
-
-  // Cambiare la modalita' di lavoro in Single-Measurement Mode
-  // e farlo leggere ogni ~20ms / 3hz di lettura
-  // Default 15hz = 4ms ; 67ms consigliati
-  // Tra una lettura e l'altra va' in standby
-
-  pinMode(redPin, OUTPUT);
-  pinMode(greenPin, OUTPUT);
-  pinMode(bluePin, OUTPUT);
-}
-
-void loop() {
-
-  int x, y, z ; //triple axis data
-
-  //Tell the HMC5883 where to begin reading data
-  Wire.beginTransmission(address);
-  Wire.write(0x03); //select register 3, X MSB register
-  Wire.endTransmission();
-
-
-  //Read data from each axis, 2 registers per axis
-  Wire.requestFrom(address, 6);
-  if (6 <= Wire.available()) {
-    x = Wire.read() << 8; //X msb
-    x |= Wire.read(); //X lsb
-    z = Wire.read() << 8; //Z msb
-    z |= Wire.read(); //Z lsb
-    y = Wire.read() << 8; //Y msb
-    y |= Wire.read(); //Y lsb
-  }
-  float radianti = atan2(x, y)  ;
-  if (radianti < 0) {// Se y e'antiorario il segno e' inverso
-    radianti += 2 * PI ; // inverte il segno
-  }
-
-  //float gradi = radianti * 180 / PI; // Conversione in gradi
-  // gradi += 2.56 ; // Correzione per la declinazione magnetica locale
-  // Modena dovrebbe essere a +2° 34' positivi EST
-
-  // LED
-  //xval = cos(map(radianti, 0, 2 * PI, 0, 255));
-  xval = lum(255 - (127 + 127 * (cos(radianti))));
-  analogWrite(redPin, 0); // Common anodo
-  analogWrite(bluePin, 255 - xval);
-  analogWrite(greenPin, 255 - xval);
-
-
-
-  //Print out values of each axis
-  Serial.print("x: ");
-  Serial.print(x);
-  Serial.print("  radianti: ");
-  Serial.print(cos(radianti));
-  Serial.print("  redval: ");
-  Serial.println(xval);
-
-  delay(100);
-
-}
diff --git a/bussola/rgb_states/rgb_states.ino b/bussola/rgb_states/rgb_states.ino
deleted file mode 100644 (file)
index fa03d76..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-An Arduino code example for interfacing with the HMC5883
-
-by: Jordan McConnell
- SparkFun Electronics
- created on: 6/30/11
- license: OSHW 1.0, http://freedomdefined.org/OSHW
-
-Analog input 4 I2C SDA
-Analog input 5 I2C SCL
-
-Link: https://www.sparkfun.com/tutorials/301
-Datasheet e registri: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/HMC5883L-FDS.pdf
-*/
-
-#include <Wire.h> //I2C Arduino Library
-#include <common.h> //Libreria comune
-
-#define address 0x1E //0011110b, I2C 7bit address of HMC5883
-
-const byte redPin      = 11;   // 2v a 20ma: che resistenza dovro usare?
-const byte greenPin    = 10;   // 3.5v a 20ma: che resistenza dovro usare?
-const byte bluePin     = 9;    // 3.5v a 20ma: che resistenza dovro usare?
-byte xval ;
-void setup() {
-  //Initialize Serial and I2C communications
-  Serial.begin(9600);
-  Wire.begin();
-
-  //Put the HMC5883 IC into the correct operating mode
-  Wire.beginTransmission(address); //open communication with HMC5883
-  Wire.write(0x00); //select mode Measurement Configuration Bits
-  Wire.write(0x70); // 8 -average, 15 Hz default, normal measuremen
-  Wire.write(0x02); //select mode register
-  Wire.write(0x00); //continuous measurement mode
-  Wire.endTransmission();
-
-  // Cambiare la modalita' di lavoro in Single-Measurement Mode
-  // e farlo leggere ogni ~20ms / 3hz di lettura
-  // Default 15hz = 4ms ; 67ms consigliati
-  // Tra una lettura e l'altra va' in standby
-
-  pinMode(redPin, OUTPUT);
-  pinMode(greenPin, OUTPUT);
-  pinMode(bluePin, OUTPUT);
-}
-
-void loop() {
-
-  int x, y, z ; //triple axis data
-
-  //Tell the HMC5883 where to begin reading data
-  Wire.beginTransmission(address);
-  Wire.write(0x03); //select register 3, X MSB register
-  Wire.endTransmission();
-
-
-  //Read data from each axis, 2 registers per axis
-  Wire.requestFrom(address, 6);
-  if (6 <= Wire.available()) {
-    x = Wire.read() << 8; //X msb
-    x |= Wire.read(); //X lsb
-    z = Wire.read() << 8; //Z msb
-    z |= Wire.read(); //Z lsb
-    y = Wire.read() << 8; //Y msb
-    y |= Wire.read(); //Y lsb
-  }
-  float radianti = atan2(x, y)  ;
-  if (radianti < 0) {// Se y e'antiorario il segno e' inverso
-    radianti += 2 * PI ; // inverte il segno
-  }
-
-   float gradi = radianti * 180 / PI; // Conversione in gradi
- gradi += 2.56 ; // Correzione per la declinazione magnetica locale
- // Modena dovrebbe essere a +2° 34' positivi EST
-
- // LED
-  //xval = cos(map(radianti, 0, 2 * PI, 0, 255));
-  xval = 127 + 127*(cos(radianti)); 
-  analogWrite(redPin, lum(255 - xval)); // Common anodo
-  analogWrite(bluePin, 255);
-  analogWrite(greenPin, 255);
-
-
-  //Print out values of each axis
-  Serial.print("x: ");
-  Serial.print(x);
-  Serial.print("  radianti: ");
-  Serial.print(cos(radianti));
-  Serial.print("  redval: ");
-  Serial.println(xval);
-
-  delay(100);
-
-}
diff --git a/esempi/bussola/red_white/red_white.ino b/esempi/bussola/red_white/red_white.ino
new file mode 100644 (file)
index 0000000..78065e5
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+An Arduino code example for interfacing with the HMC5883
+
+by: Jordan McConnell
+ SparkFun Electronics
+ created on: 6/30/11
+ license: OSHW 1.0, http://freedomdefined.org/OSHW
+
+Analog input 4 I2C SDA
+Analog input 5 I2C SCL
+
+Link: https://www.sparkfun.com/tutorials/301
+Datasheet e registri: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/HMC5883L-FDS.pdf
+*/
+
+#include <Wire.h> //I2C Arduino Library
+#include <common.h> //Libreria comune
+
+#define address 0x1E //0011110b, I2C 7bit address of HMC5883
+
+const byte redPin      = 11;   // 2v a 20ma: che resistenza dovro usare?
+const byte greenPin    = 10;   // 3.5v a 20ma: che resistenza dovro usare?
+const byte bluePin     = 9;    // 3.5v a 20ma: che resistenza dovro usare?
+byte xval ;
+void setup() {
+  //Initialize Serial and I2C communications
+  Serial.begin(9600);
+  Wire.begin();
+
+  //Put the HMC5883 IC into the correct operating mode
+  Wire.beginTransmission(address); //open communication with HMC5883
+  Wire.write(0x00); //select mode Measurement Configuration Bits
+  Wire.write(0x70); // 8 -average, 15 Hz default, normal measuremen
+  Wire.write(0x02); //select mode register
+  Wire.write(0x00); //continuous measurement mode
+  Wire.endTransmission();
+
+  // Cambiare la modalita' di lavoro in Single-Measurement Mode
+  // e farlo leggere ogni ~20ms / 3hz di lettura
+  // Default 15hz = 4ms ; 67ms consigliati
+  // Tra una lettura e l'altra va' in standby
+
+  pinMode(redPin, OUTPUT);
+  pinMode(greenPin, OUTPUT);
+  pinMode(bluePin, OUTPUT);
+}
+
+void loop() {
+
+  int x, y, z ; //triple axis data
+
+  //Tell the HMC5883 where to begin reading data
+  Wire.beginTransmission(address);
+  Wire.write(0x03); //select register 3, X MSB register
+  Wire.endTransmission();
+
+
+  //Read data from each axis, 2 registers per axis
+  Wire.requestFrom(address, 6);
+  if (6 <= Wire.available()) {
+    x = Wire.read() << 8; //X msb
+    x |= Wire.read(); //X lsb
+    z = Wire.read() << 8; //Z msb
+    z |= Wire.read(); //Z lsb
+    y = Wire.read() << 8; //Y msb
+    y |= Wire.read(); //Y lsb
+  }
+  float radianti = atan2(x, y)  ;
+  if (radianti < 0) {// Se y e'antiorario il segno e' inverso
+    radianti += 2 * PI ; // inverte il segno
+  }
+
+  //float gradi = radianti * 180 / PI; // Conversione in gradi
+  // gradi += 2.56 ; // Correzione per la declinazione magnetica locale
+  // Modena dovrebbe essere a +2° 34' positivi EST
+
+  // LED
+  //xval = cos(map(radianti, 0, 2 * PI, 0, 255));
+  xval = lum(255 - (127 + 127 * (cos(radianti))));
+  analogWrite(redPin, 0); // Common anodo
+  analogWrite(bluePin, 255 - xval);
+  analogWrite(greenPin, 255 - xval);
+
+
+
+  //Print out values of each axis
+  Serial.print("x: ");
+  Serial.print(x);
+  Serial.print("  radianti: ");
+  Serial.print(cos(radianti));
+  Serial.print("  redval: ");
+  Serial.println(xval);
+
+  delay(100);
+
+}
diff --git a/esempi/bussola/rgb_states/rgb_states.ino b/esempi/bussola/rgb_states/rgb_states.ino
new file mode 100644 (file)
index 0000000..fa03d76
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+An Arduino code example for interfacing with the HMC5883
+
+by: Jordan McConnell
+ SparkFun Electronics
+ created on: 6/30/11
+ license: OSHW 1.0, http://freedomdefined.org/OSHW
+
+Analog input 4 I2C SDA
+Analog input 5 I2C SCL
+
+Link: https://www.sparkfun.com/tutorials/301
+Datasheet e registri: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/HMC5883L-FDS.pdf
+*/
+
+#include <Wire.h> //I2C Arduino Library
+#include <common.h> //Libreria comune
+
+#define address 0x1E //0011110b, I2C 7bit address of HMC5883
+
+const byte redPin      = 11;   // 2v a 20ma: che resistenza dovro usare?
+const byte greenPin    = 10;   // 3.5v a 20ma: che resistenza dovro usare?
+const byte bluePin     = 9;    // 3.5v a 20ma: che resistenza dovro usare?
+byte xval ;
+void setup() {
+  //Initialize Serial and I2C communications
+  Serial.begin(9600);
+  Wire.begin();
+
+  //Put the HMC5883 IC into the correct operating mode
+  Wire.beginTransmission(address); //open communication with HMC5883
+  Wire.write(0x00); //select mode Measurement Configuration Bits
+  Wire.write(0x70); // 8 -average, 15 Hz default, normal measuremen
+  Wire.write(0x02); //select mode register
+  Wire.write(0x00); //continuous measurement mode
+  Wire.endTransmission();
+
+  // Cambiare la modalita' di lavoro in Single-Measurement Mode
+  // e farlo leggere ogni ~20ms / 3hz di lettura
+  // Default 15hz = 4ms ; 67ms consigliati
+  // Tra una lettura e l'altra va' in standby
+
+  pinMode(redPin, OUTPUT);
+  pinMode(greenPin, OUTPUT);
+  pinMode(bluePin, OUTPUT);
+}
+
+void loop() {
+
+  int x, y, z ; //triple axis data
+
+  //Tell the HMC5883 where to begin reading data
+  Wire.beginTransmission(address);
+  Wire.write(0x03); //select register 3, X MSB register
+  Wire.endTransmission();
+
+
+  //Read data from each axis, 2 registers per axis
+  Wire.requestFrom(address, 6);
+  if (6 <= Wire.available()) {
+    x = Wire.read() << 8; //X msb
+    x |= Wire.read(); //X lsb
+    z = Wire.read() << 8; //Z msb
+    z |= Wire.read(); //Z lsb
+    y = Wire.read() << 8; //Y msb
+    y |= Wire.read(); //Y lsb
+  }
+  float radianti = atan2(x, y)  ;
+  if (radianti < 0) {// Se y e'antiorario il segno e' inverso
+    radianti += 2 * PI ; // inverte il segno
+  }
+
+   float gradi = radianti * 180 / PI; // Conversione in gradi
+ gradi += 2.56 ; // Correzione per la declinazione magnetica locale
+ // Modena dovrebbe essere a +2° 34' positivi EST
+
+ // LED
+  //xval = cos(map(radianti, 0, 2 * PI, 0, 255));
+  xval = 127 + 127*(cos(radianti)); 
+  analogWrite(redPin, lum(255 - xval)); // Common anodo
+  analogWrite(bluePin, 255);
+  analogWrite(greenPin, 255);
+
+
+  //Print out values of each axis
+  Serial.print("x: ");
+  Serial.print(x);
+  Serial.print("  radianti: ");
+  Serial.print(cos(radianti));
+  Serial.print("  redval: ");
+  Serial.println(xval);
+
+  delay(100);
+
+}
diff --git a/esempi/state_throttle/state_throttle.ino b/esempi/state_throttle/state_throttle.ino
new file mode 100644 (file)
index 0000000..c263642
--- /dev/null
@@ -0,0 +1,76 @@
+/* Throttle state machine
+
+Idle, throttle e averburner effect basati sono sul canale throttle.   
+
+
+*/
+
+#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;
+Lampeggiatore left = 5;
+Pwm motor = 7;
+
+const byte thrPin = A3;
+byte thr ; // Valore a 8bit per il throttle
+int thrIn ; // Valore rilevato del 3 Ch della RX 
+
+
+
+void setup() {
+  left.Invert() ; // Parte da stato invertito rispetto al default
+  randomSeed(analogRead(0));
+}
+
+void loop() {
+
+ // Lettura Throttle channel: FAKE con un potenziometro
+ //thrIn = analogRead(3);
+ //thr = constrain(thrIn / 4 , 0, 255) ;
+
+ // Lettura Throttle channel
+ thrIn = pulseIn(thrPin, HIGH, 25000);
+ thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ; // 983 potrebbe campbiare con 
+           // con un altra ricevente, fare una calibrazione nel caso.
+
+ // FMS dispatcher
+ if ( thr < 10 ) {
+   state = idle ;
+ } else if ( thr > 245 ) {
+   state = full ;
+ } else {
+   state = normal ;
+ }
+
+ switch (state) {
+   case idle:
+       // Lampeggia i lati fissi e fa un PWD Up/Down col motore
+     right.Blink();
+     left.Blink();
+     motore.UD(1000);
+     break;
+
+   case normal:
+     // right e left lampeggiano alternativamente in base al th,
+     // il motore e' acceso con correzione di luminosita' in proporzione al th
+     right.Blink(1120 - 4 * thr ); // lampeggio piu' rapido in base al Th
+     left.Blink(1120 - 4 * thr );
+     motore.lSet(thr);
+     break;
+
+   case full:
+     // lampeggi e PWM a caso
+     right.Swap();
+     left.Swap();
+     motore.lSet(random(0,255);
+     delay(random(20, 100));
+     break;
+  }
+
index e78d2651bf064b59b87a58d55337a6d74d5bc173..bfd38083c4a9ea70811157b6f49b40af22157ffc 100644 (file)
@@ -1,8 +1,10 @@
-* inserire knight rider con millis
+
+*  aggiungere un displace temporale ai blink / pwm
+* Flasher con sequenza arbitraria di lampeggio
+* oggetti che lavorino contemporaneamente su piu' PIN
+* Link a Schemi / Schemi
 * esempio con state machine per flight modes
-* battery voltage reader -> RGB
-** Schemi
-** descrizione componenti: transistor, array, stepdown
+** battery voltage reader -> RGB
 ** digital compass e RGB
 ** barometer
 ** 6 axis
index cbf8fdd569db6eed18eb9971f5835a56020891f9..359896976b81b3a0676fc232d54235dbc215bb1b 100644 (file)
@@ -9,12 +9,27 @@
 
 //////////////////////
 // RGB LED
-// Common anode
+// Common anode / cat
 
-RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
+RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {    
+    // Per un common catodo, valore max / min invertiti
       redPin    = pinR ;
       greenPin  = pinG ;
       bluePin   = pinB ;
+      common    = 0 ;
+      
+      // Equvalente del Setup() per inizializzare i PIN
+      pinMode(redPin, OUTPUT);
+      pinMode(greenPin, OUTPUT);
+      pinMode(greenPin, OUTPUT);
+};
+
+RGBLed::RGBLed(byte pinR, byte pinG, byte pinB, byte com) {
+    // Per un common anode, valore max / min normali
+      redPin    = pinR ;
+      greenPin  = pinG ;
+      bluePin   = pinB ;
+      common    = com ;
 
       // Equvalente del Setup() per inizializzare i PIN
       pinMode(redPin, OUTPUT);
@@ -24,9 +39,9 @@ RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
 
 void RGBLed::SetColor (byte r, byte g, byte b) {
 // Imposta il colore di un LED RGB
-      analogWrite(redPin,   r);
-      analogWrite(greenPin, g);
-      analogWrite(bluePin,  b);
+      analogWrite(redPin,   common - r);
+      analogWrite(greenPin, common - g);
+      analogWrite(bluePin,  common - b);
     };
 
 void RGBLed::Red () {
@@ -134,6 +149,24 @@ void Lampeggiatore::Blink(long up, long down) {
     digitalWrite(ledPin, ledState);
 };
 
+void Lampeggiatore::High() {
+    // Accende il LED
+
+    digitalWrite(ledPin, HIGH);
+}
+
+void Lampeggiatore::Low() {
+    // Spegne  il LED
+
+    digitalWrite(ledPin, LOW);
+}
+
+void Lampeggiatore::Swap() {
+    // Inverte lo stato del LED
+
+    digitalWrite(ledPin, !digitalRead(ledPin)); 
+}
+
 /////////////////////////////////////
 // Pwm
 // Constructor
@@ -150,7 +183,7 @@ Pwm::Pwm(int pin)
 };
 
 void Pwm::Up(long speed) {
-    // Aumenta progressivamente la luminosita' usanndo millis()
+    // Aumenta linearmente la luminosita' usanndo millis()
     // quindi senza bloccare il processore
     // Viene usato un float, in alternativa un coseno
 
@@ -162,8 +195,21 @@ void Pwm::Up(long speed) {
     };
 }
 
+void Pwm::lUp(long speed) {
+    // Aumenta usanndo millis() con correzione luminosita' LED
+    // quindi senza bloccare il processore
+    // Viene usato un float, in alternativa un coseno
+
+    if (millis() != previousMillis)  { // si potrebbe togliere
+            brightness = 255.0 /(float)speed * millis() ;
+            analogWrite(ledPin, lum(brightness));
+
+        previousMillis = millis();
+    };
+}
+
 void Pwm::Down(long speed ) {
-    // Riduce progressivamente la luminosita' usanndo millis()
+    // Riduce linearmente la luminosita' usanndo millis()
     // quindi senza bloccare il processore
 
     if (millis() != previousMillis)  {
@@ -174,12 +220,35 @@ void Pwm::Down(long speed ) {
     };
 }
 
+void Pwm::lDown(long speed ) {
+    // Riduce  usanndo millis() con correzione della luminosita'
+    // quindi senza bloccare il processore
+
+    if (millis() != previousMillis)  {
+            brightness = 255 - 255.0 /(float)speed * millis() ;
+            analogWrite(ledPin, lum(brightness));
+
+        previousMillis = millis();
+    };
+}
+
 void Pwm::UD(long speed ) {
     // Aumenta e riduce in sequenza la luminosita' usanndo millis()
     brightness = 128 + 127 * cos(2 * PI / speed * millis());
     analogWrite(ledPin, brightness);  
 }
 
+void Pwm::Set(byte brightness) {
+    // Imposta il valore del PWM 
+    analogWrite(ledPin, brightness);  
+}
+
+
+void Pwm::lSet(byte brightness) {
+    // Imposta il valore del PWM 
+    analogWrite(ledPin, lum(brightness));  
+}
+
 
 /////////////////////////////////////
 // Sequenza
index f5a763c715938b7d87c870729009d3780b81fcbf..25b84dd6ae9f7320a1290e869f7b4779a9ca4489 100644 (file)
@@ -43,9 +43,11 @@ class RGBLed {
     byte redValue ;
     byte greenValue ;
     byte blueValue ;
+    byte common ;
 
   public:
     RGBLed (byte pinR, byte pinG, byte pinB) ;
+    RGBLed (byte pinR, byte pinG, byte pinB, byte com) ;
        void SetColor (byte r, byte g, byte b) ;
        void Red ();
     void Green ();
@@ -71,9 +73,12 @@ class Lampeggiatore {
 public:
     Lampeggiatore(int pin);
     void Invert();   // Inverte il lampeggio 
-    void Blink();      // Lampeggia ogni 500ms
+    void Blink();       // Lampeggia ogni 500ms
     void Blink(long interval); // Lampeggia inpostando l'intervallo
     void Blink(long on, long down); // Imposta il tempo acceso e il tempo spento
+    void High();    // Accende il LED
+    void Low();     // Spegne il LED
+    void Swap();    // Inverte lo stato del LED
 };
 
 
@@ -89,14 +94,18 @@ class Pwm {
     int ledPin ;           // il numero del LED pin
     int speed ;            // velocita' del ciclo in ms
     unsigned long previousMillis ;  //precedente cambio di stato
-    byte increment ;        // aumenta brighteness nel loop UD
+    byte increment ;      // aumenta brighteness nel loop UD
 
     // Constructor: come viene instanziato un oggetto facente parte della classe
 public:
     Pwm(int pin);  // numero di pin, velocita' di ciclo
     void Up(long speed);
+    void lUp(long speed);
     void Down(long speed);
+    void lDown(long speed);
     void UD(long speed);
+    void Set(byte brighteness);
+    void lSet(byte brighteness);
     byte brightness  ;      // luminostia' iniziale
 };
 
index b3f9b2be86a3393496f0c769b508ba689c8f8cdd..b796020c749dd907148fe39bc612ef9e73a791c5 100644 (file)
@@ -19,7 +19,10 @@ led.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
 }
 
 void loop() {
-  led.Blink();  // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW) 
-  led.Blink(500);  // Lampeggia ogni 500ms
-  led.Blink(500,200);  // Imposta il tempo acceso e il tempo spento
+  led.Blink();    // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW) 
+//  led.Blink(500);  // Lampeggia ogni 500ms
+//  led.Blink(500,200);  // Imposta il tempo acceso e il tempo spento
+//  led.High();   // Stato su HI
+//  led.Low();    // Stato su LOW
+//  led.Swap();   // Inverte lo Stato
 }
index 2880ddab0f192e62cbb58edf761b84b0480ed072..deeb8ea735e594f7dd677297dec534afafa51e2c 100644 (file)
 Pwm led = 9;
 
 void setup() {
-// I PINs vengono impostati dal constructor al momento 
-// della dichiarazione dell'ogetto.
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
 }
 
 void loop() {
-  led.Up(2000);     // Aumenta la luminosita' in 2 sec
-  led.Down(1000);   // Diminuisce la luminosita' in 1 sec
-  led.UD(4000);     // Aumenta e poi diminuisce la luminostia' in 4 sec.
+  led.Up(2000);     // Aumenta la luminosita' linearmente in 2 sec
+  //led.lUp(2000);     // Aumenta la luminosita' con correzione luminosita' per LED
+  // led.Down(1000);   // Diminuisce la luminosita' in 1 sec
+  // led.lDown(1000);   // Diminuisce la luminosita' con correzione luminosita'
+  // led.UD(4000);     // Aumenta e poi diminuisce la luminostia' in 4 sec (coseno)
+  // led.set(100);   // Imposta il valore del PWM da 0-255
+  // led.lSet(100);   // Imposta il valore del PWM con correzione luminosita 
+  // analogWrite(lum100); // Equivalente a sopra
 }
index 98c980b1b3fd60e1e2b6b8d039e6a5e230045a3c..0dd3863b15b2ff897ad621a270c0406c5e3d2bc4 100644 (file)
@@ -11,15 +11,13 @@ void setup() {
 }
 
 // Instanziamo un LED
-RGBLed led(11, 10, 9); //Istanziamo un oggetto led facente parte
-                       // della classe RGBLed
+RGBLed led(11, 10,9); //Istanziamo un oggetto led (common catodo)
+// facente parte della classe RGBLed
+//RGBLed led(10,9,11,255); // Inizializzazione Common anodo, valori invertiti
 
 void loop() {
-  led.Red();
-  delay(1000);
-  led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
-  delay(1000);
-  led.Off();
+  led.White();
+
 }
 
 /* Colori disponibili:
index 3bbb239d66dc0a7cfe33380747b8e617d5b79980..1ef357be3f66b044303e436f483e8c05fa3405da 100644 (file)
@@ -1,4 +1,4 @@
-RGBLed         KEYWORD1
+RGBLed                 KEYWORD1
 Red                    KEYWORD2        
 Green          KEYWORD2        
 Blue           KEYWORD2        
@@ -9,3 +9,22 @@ Yellow         KEYWORD2
 Off            KEYWORD2        
 SetColor       KEYWORD2                
 brilla         KEYWORD2                
+Lampeggiatore  KEYWORD1
+Invert         KEYWORD2                
+Blink          KEYWORD2                
+Blink          KEYWORD2                
+Blink          KEYWORD2                
+High           KEYWORD2                
+Low                    KEYWORD2                
+Swap           KEYWORD2                
+Pwm                            KEYWORD1
+Up                     KEYWORD2                
+lUp                    KEYWORD2                
+Down           KEYWORD2                
+lDown          KEYWORD2                
+UD                     KEYWORD2                
+Set                    KEYWORD2                
+lSet           KEYWORD2                
+lum                    KEYWORD2        
+Sequenza               KEYWORD1
+Update         KEYWORD2        
index 096b2d702eee7611563b7180e008603e41f4423e..56640664f713b9fab3d69c1c66a537e8b27fd4b8 100644 (file)
@@ -40,6 +40,7 @@ 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
@@ -92,3 +93,16 @@ Sensori
 * 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:
+
+* https://www.flexfireleds.com/pages/Comparison-between-3528-LEDs-and-5050-LEDs.html
diff --git a/zeta/zeta.ino b/zeta/zeta.ino
deleted file mode 100644 (file)
index af87d04..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/* 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 pausa ;
-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(2000);  // Utilizza il coseno
-      lwhite.UD(2000);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
-      ltp.UD(2000);
-      rtp.UD(2000);
-      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));
-  
-
-      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);
-
-}
diff --git a/zeta_5_no_state/zeta_5_no_state.ino b/zeta_5_no_state/zeta_5_no_state.ino
deleted file mode 100644 (file)
index 14f5d8c..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* 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
deleted file mode 100644 (file)
index cae5347..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/* 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
deleted file mode 100644 (file)
index af87d04..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/* 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 pausa ;
-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(2000);  // Utilizza il coseno
-      lwhite.UD(2000);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
-      ltp.UD(2000);
-      rtp.UD(2000);
-      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));
-  
-
-      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);
-
-}
diff --git a/zeta_full/zeta_full.ino b/zeta_full/zeta_full.ino
deleted file mode 100644 (file)
index 9247a3d..0000000
+++ /dev/null
@@ -1,28 +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;
-
-void setup() {
-  left.Invert() ; // Parte da stato invertito rispetto al default
-  pinMode(rtail,OUTPUT);
-  pinMode(ltail,OUTPUT);
-    
-}
-
-void loop() {
-  // Due LED con lampeggio alternato:
-  right.Blink();
-  left.Blink();
-  digitalWrite(rtail,HIGH);
-  digitalWrite(ltail,HIGH);
-}
diff --git a/zeta_prot/zeta_prot.ino b/zeta_prot/zeta_prot.ino
deleted file mode 100644 (file)
index 600d69c..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 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);
-}