From 06bd11db5eaf0cdd01829044812358a63cdb9d83 Mon Sep 17 00:00:00 2001
From: eaman <eaman@sid>
Date: Mon, 13 Feb 2017 23:51:53 +0100
Subject: [PATCH] Commid di Cirso e Daniele

---
 aerei/cirso/trigger_on/trigger_on.ino         |  3 +-
 .../trigger_transition/trigger_transition.ino | 14 ++-
 aerei/daniele/prototipo/prototipo.ino         | 96 +++++++++++++++++++
 .../lettura_servo_interrupt.ino               |  3 +-
 .../lettura_servo_interrupt_doppio.ino        |  2 +-
 5 files changed, 110 insertions(+), 8 deletions(-)
 create mode 100644 aerei/daniele/prototipo/prototipo.ino

diff --git a/aerei/cirso/trigger_on/trigger_on.ino b/aerei/cirso/trigger_on/trigger_on.ino
index 32c7052..732d03d 100644
--- a/aerei/cirso/trigger_on/trigger_on.ino
+++ b/aerei/cirso/trigger_on/trigger_on.ino
@@ -23,6 +23,7 @@ void setup() {
     // I PINs vengono impostati dal constructor al momento
     // della dichiarazione dell'ogetto.
 
+    attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
     right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
     // HI -> LOW --> LOW -> HI
     // per avere 2 LED che lampeggiano alternativamente
@@ -30,7 +31,7 @@ void setup() {
 
 void loop() {
 
-    if (chValue > 1400) {
+    if (chValue > 1500) {
         left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
         right.Blink();
         coda.Blink(1000); // Lampeggio in 1000ms = 1 secondo
diff --git a/aerei/cirso/trigger_transition/trigger_transition.ino b/aerei/cirso/trigger_transition/trigger_transition.ino
index 5a6c8b1..344160f 100644
--- a/aerei/cirso/trigger_transition/trigger_transition.ino
+++ b/aerei/cirso/trigger_transition/trigger_transition.ino
@@ -24,11 +24,12 @@ enum  { // Stati della FMS
 // Variabili per interrupt 0
 volatile unsigned int chValue = 1500; // Valore computato
 volatile unsigned int chStart = 1500; // Inizio rilevamento
-const int soglia = 1400; // soglia per scatto toggle a 2 posizioni
+const int soglia = 1500; // soglia per scatto toggle a 2 posizioni
 
 // Var FSM
 unsigned long FSM_lastMillis = 0 ; // Timestamp per la FSM degli alettoni
 unsigned long pausa = 2000;  // Pausa per la transizione durante gli stati 2, 4 della FSM
+unsigned long currentMillis = 0;
 
 // Instanziamo gli oggetti per gli stati On / Off
 Lampeggiatore left = 5;
@@ -37,19 +38,21 @@ Lampeggiatore coda = 9;
 
 // Instanziamo gli oggetti per gli stati di transizione
 Pwm leftPWM = 5;
-Pwm righatPWM = 6;
+Pwm rightPWM = 6;
 Pwm codaPWM = 9;
 
 void setup() {
     // I PINs vengono impostati dal constructor al momento
     // della dichiarazione dell'ogetto.
 
+attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
     right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
     // HI -> LOW --> LOW -> HI
     // per avere 2 LED che lampeggiano alternativamente
 }
 
 void loop() {
+    currentMillis = millis();
 
 switch (toggle) {
     case Off:
@@ -73,10 +76,13 @@ switch (toggle) {
         if (chValue <= soglia) {
             FSM_lastMillis = millis();
             toggle = toOff ; 
+        leftPWM.Set(255);   
+        rightPWM.Set(255);
+        codaPWM.Set(255);
         }
         break;
 
-    case ToOn:
+    case toOn:
     // Trans off -> on
         leftPWM.lUp(pausa);   
         rightPWM.lUp(pausa);
@@ -89,7 +95,7 @@ switch (toggle) {
         }
         break;
 
-    case ToOff:
+    case toOff:
     // Trans on -> off
         leftPWM.lDown(pausa);   
         rightPWM.lDown(pausa);
diff --git a/aerei/daniele/prototipo/prototipo.ino b/aerei/daniele/prototipo/prototipo.ino
new file mode 100644
index 0000000..7e4b294
--- /dev/null
+++ b/aerei/daniele/prototipo/prototipo.ino
@@ -0,0 +1,96 @@
+/* Aereo di Daniele
+
+Prototipo:
+
+Output:
+   2 LED ai lati con lampeggio alternato
+   1 LED PWM per motore
+
+Input:
+    2 interrupts per th e alettone
+    PIN 2:  alettone
+    PIN 3:  throttle
+
+
+    TODO
+* Vedere la calibrazione automatica
+* Min e max a 1000 - 2000 per alettone
+
+*/
+
+#include <common.h>
+# define DEBUG
+
+// Instanziamo un LED fuori dal loop
+Lampeggiatore left = 5;
+Lampeggiatore right = 6;
+Lampeggiatore coda = 9;
+
+// Variabili per interrupt 0 si PIN 2
+volatile unsigned int chValue2 = 1500; // Valore computato
+volatile unsigned int chStart2 = 1500; // Inizio rilevamento
+
+// Variabili per interrupt 1 su PIN 3
+volatile unsigned int chValue3 = 1500; // Valore computato
+volatile unsigned int chStart3 = 1500; // Inizio rilevamento
+
+// Variabili per autocalibrazione 0
+const byte chPin2 = 2; // PIN per la calibrazione alettone
+int mid_point2 = 1500;
+
+// Variabili per autocalibrazione 1
+const byte chPin3 = 3; // PIN per la calibrazione
+int mid_point3 = 1000;
+
+
+void setup() {
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
+
+  // HI -> LOW --> LOW -> HI
+  // per avere 2 LED che lampeggiano alternativamente
+    // Funzione relativa a calibrazione con pulsein:
+    //mid_point2 =  calibraTrim(chPin2) ; // Calibrazione del TRIM attivo sul canale
+    //mid_point3 =  calibraTrim(chPin3) ; // Calibrazione del TRIM attivo sul canale
+    attachInterrupt(0, chRise2, RISING); // PIN 2 su 328p / 168
+    attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168
+#ifdef DEBUG
+Serial.begin(9600); 
+#endif
+}
+
+void loop() {
+
+#ifdef DEBUG
+    Serial.print("PIN2: ");
+    Serial.print(chValue2);
+    Serial.print(" -base: ");
+    Serial.print(mid_point2);
+
+    Serial.print(" |-| PIN3:");
+    Serial.print(chValue3);
+    Serial.print(" -base: ");
+    Serial.println(mid_point3);
+    delay(200);
+#endif
+}
+// Functions
+void chRise2() {
+    attachInterrupt(0, chFall2, FALLING);
+    chStart2 = micros();
+}
+
+void chFall2() {
+    attachInterrupt(0, chRise2, RISING);
+    chValue2 = micros() - chStart2;
+}
+// Seconod iterrupt
+void chRise3() {
+    attachInterrupt(1, chFall3, FALLING);
+    chStart3 = micros();
+}
+
+void chFall3() {
+    attachInterrupt(1, chRise3, RISING);
+    chValue3 = micros() - chStart3;
+}
diff --git a/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino b/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
index e52cade..829095a 100644
--- a/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
+++ b/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
@@ -19,13 +19,12 @@ int mid_point = 1500;
 
 void setup() {
     // Funzione relativa a calibrazione con pulsein:
-    mid_point =  calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale
+//    mid_point =  calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale
     attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
 #ifdef DEBUG
 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
 } ;
 #endif
-} ;
 
 void loop() {
 #ifdef DEBUG
diff --git a/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino b/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino
index 9add4e9..9ea67fe 100644
--- a/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino
+++ b/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino
@@ -34,8 +34,8 @@ void setup() {
     attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168
 #ifdef DEBUG
 Serial.begin(9600); 
-} ;
 #endif
+} ;
 
 void loop() {
 // Il loop fa solo debug
-- 
2.39.2