Browse Source

dimmer management

through FadeLed library
on resetContext, a timer is launched to manage FadeLed update
not working because file reading is blocking
Etienne Landon 8 years ago
parent
commit
4d888c9cf6
1 changed files with 90 additions and 19 deletions
  1. 90 19
      DownTigerDown/DownTigerDown.ino

+ 90 - 19
DownTigerDown/DownTigerDown.ino

@@ -3,6 +3,7 @@
 #include <SD.h>
 #include <SPI.h>
 #include <Tsunami.h> 
+#include <FadeLed.h>
 
 const int BUTTON_PIN[10] = {30, 31, 32, 33, 34, 35, 36, 37, 38, 39} ;
 int currentButton ;
@@ -27,14 +28,21 @@ char gTsunamiVersion[VERSION_STRING_LEN];    // Tsunami version string
 //Eventually pointers to manage creation/deletion of listeners
 EvtManager mgr;
 
-
-
-bool state = LOW;
-int test;
-int test2;
-
-EvtListener *plist;
-EvtListener *plist2;
+//Dimmer
+#define DIMMER_PIN 9
+FadeLed dimmer(DIMMER_PIN);
+//int dimmer_value;
+//int dimmer_target;
+//int dimmer_fade;
+//int dimmer_delta ; //to add each "loop"
+////EvtListener *pDimmer; // identified listener to be able to kill after fade
+//
+//bool state = LOW;
+//int test;
+//int test2;
+//
+//
+//EvtListener *plist2;
 
 //Functions prototypes
 void EvtResetButtonContext ();
@@ -48,9 +56,9 @@ void setup() {
   // TLC
   tlc.begin();
   tlc.write();
-
+  Serial.println("Test boutons");
    for (int i ; i<12; i++) {
-      Serial.println(i);
+      
       ledState[i] = 65535 ;
       tlcWrite();
       delay (100);
@@ -59,6 +67,7 @@ void setup() {
    }  
 
    // SD
+   Serial.println("Lecture carte SD");
    if (SDfound == 0) {
     if (!SD.begin(BUILTIN_SDCARD)) {
       Serial.print("The SD card cannot be found");
@@ -67,8 +76,10 @@ void setup() {
   }
   SDfound = 1;
 
+  
   // TSUNAMI
   // We should wait for the Tsunami to finish reset 
+  Serial.println("Demarrage du Tsunami wav player");
   delay(1000);
   tsunami.start();
   delay(10);
@@ -86,14 +97,38 @@ void setup() {
   }
   else
     Serial.print("WAV Trigger response not available");
-
+  tsunami.trackPlayPoly(1, 0, true);
+  delay(500);
+  tsunami.trackPlayPoly(2, 0, true);
+  delay(500);
+  tsunami.trackPlayPoly(3, 1, true);
+  delay(500);
+  tsunami.trackPlayPoly(4, 1, true);
+  delay(500);
+  tsunami.trackPlayPoly(5, 2, true);
+  delay(500);
+  tsunami.trackPlayPoly(6, 2, true);
+  delay(500);
+  tsunami.trackPlayPoly(7, 3, true);
+  delay(500);
+  tsunami.trackPlayPoly(8, 4, true);
+  
   //Set button pins as input
   for (int i ; i < sizeof(BUTTON_PIN)/sizeof(int) ; i++) {
     pinMode(BUTTON_PIN[i],INPUT_PULLUP) ; 
   }
 
+  // Create timers for controlled events
+  //pDimmer = new EvtTimeListener(40, true, (EvtAction)fadeDimmer);
+
+  
   //EvtResetButtonContext();
+  Serial.println();
+  Serial.println();
+  Serial.println("Demarrage termine, activation etat 0");
+  
   buttonFocus(0) ;
+
   
 //  plist = new EvtTimeListener(1000, true, (EvtAction)blinkme);
 //  plist2 = new EvtTimeListener(100, true, (EvtAction)blinkme2);
@@ -126,28 +161,48 @@ void readSDFile() {
  
   while (btnFile.available()) {
     buf = btnFile.readStringUntil('\n');
+    
     //check selector (1st word of line) and execute corresponding function
     String selector = getSubstring(buf, ' ', 0);
-    Serial.println(selector);
+    //Serial.println(selector);
+    
     if (selector == "sound") {
       String track = getSubstring(buf, ' ', 2) ;
       String out = getSubstring(buf, ' ', 1) ;
       Serial.println("Playing track " + track + "to output " + out);
-      tsunami.trackPlayPoly(track.toInt(), out.toInt(), true);
-      
+      tsunami.trackPlayPoly(track.toInt(), out.toInt(), true);     
     }
+    
     else if (selector == "led") {
+      String mode = getSubstring(buf, ' ', 1);
+      if (mode.toInt() == 0){
+        
+      }
       Serial.println("Led mode " + getSubstring(buf, ' ', 1));
     }
+   
     else if (selector == "dimmer") {
       Serial.println("Dimmer fade à " + getSubstring(buf, ' ', 1) + " en " + getSubstring(buf, ' ', 2) + "ms");
+      int dimmer_value = getSubstring(buf, ' ', 1).toInt();
+      int dimmer_fade = getSubstring(buf, ' ', 2).toInt();
+      dimmer.setTime(dimmer_fade);
+      dimmer.set(dimmer_value);
+//      Serial.println(dimmer_delta);
+      
     }
+    
     else if (selector == "delay") {
       String wait = getSubstring(buf, ' ', 1);
-      Serial.println("Waiting " + wait + " ms");
+      Serial.println("delai " + wait + " ms");
       delay(wait.toInt());
     }
-    else {Serial.println("pas compris");}
+
+    else if (selector == ""){}
+   
+    else {
+      Serial.print(selector);
+      Serial.println(": pas compris");
+      }
     
     
   }
@@ -163,9 +218,21 @@ void readSDFile() {
 // * buttonFocus -> lights the current button and shuts the others
 // * readSequence -> reads a text file on the SD card with the sequence of actions to execute
 // */
-//
-//
-//
+
+bool fadeDimmer() {
+//  if (dimmer_value != dimmer_target) {
+//    dimmer_value += dimmer_delta ;
+//    Serial.println(dimmer_value);
+//    
+//  }
+//  else 
+//    mgr.removeListener(pDimmer);
+  FadeLed::update();
+  Serial.println("fade");
+  return false;
+  
+}
+
 void tlcWrite(){
   for (int ledIndex ; ledIndex < 12 ; ledIndex++) { //sizeof(ledState)/sizeof(uint32_t)
     
@@ -251,6 +318,7 @@ bool button9(){
 
 void EvtResetButtonContext () {
   mgr.resetContext();
+  // button listeners
   mgr.addListener(new EvtPinListener(BUTTON_PIN[0], (EvtAction)button0));
   mgr.addListener(new EvtPinListener(BUTTON_PIN[1], (EvtAction)button1));
   mgr.addListener(new EvtPinListener(BUTTON_PIN[2], (EvtAction)button2));
@@ -261,6 +329,9 @@ void EvtResetButtonContext () {
   mgr.addListener(new EvtPinListener(BUTTON_PIN[7], (EvtAction)button7));
   mgr.addListener(new EvtPinListener(BUTTON_PIN[8], (EvtAction)button8));
   mgr.addListener(new EvtPinListener(BUTTON_PIN[9], (EvtAction)button9));
+
+  // controlled time listeners
+  mgr.addListener(new EvtTimeListener(40, true, (EvtAction)fadeDimmer));
 }