Table controller for piswarm-office

Dependencies:   mbed

Fork of PiSwarmTableController by piswarm

Revision:
5:68a1ce96bfeb
Parent:
4:3cbff30b7b7b
--- a/main.cpp	Fri Jul 18 21:23:37 2014 +0000
+++ b/main.cpp	Thu Aug 14 09:06:31 2014 +0000
@@ -7,13 +7,13 @@
 #include "main.h"
 #include "communications.h"
 #include "display.h"        //Display driver for the Midas 16x2 I2C Display
-
+LocalFileSystem local("local");  
 //OBJECTS
 PwmOut ir_pwm_out(p21);     //PWM Output for the IR LED driver
 DigitalOut ir_led(LED1);
 DigitalOut tx_led(LED3);
 DigitalOut pir_led(LED4);    
-AnalogIn input_1(p20);
+DigitalIn input_1(p20);
 AnalogIn input_2(p19);
 DigitalIn input_3(p18);
 DigitalIn input_4(p17);
@@ -46,6 +46,7 @@
 
 float speed = 0;
 int sound = 0;
+float soundLevel = 0.00;
 float soundRaw = 0;
 float soundFiltered = 0;
 float soundFilteredPrev = 0;
@@ -53,10 +54,17 @@
 float targetY = 0;
 char data[13];//0-3:speed, 4:sound, 5-8:targetX, 9-12:targetY
 char * dataP;
+char text[17];
+char *textP = &text[0];
 int level_3 = 0;
 int level_4 = 0;
 int level_5 = 0;
 int level_6 = 0;
+int pir[3];
+int fileCount = 0;
+char fileName[50];
+
+FILE *fp;
 
 //int counter = 0;//for Edgar to try effect of sound change
 
@@ -71,13 +79,15 @@
     init();
     char phase = 0;
     char motor_step = 0;
+    pc.baud(9600);
+    //pc.printf("hello");
     ir_led_timer.start();
     ir_pwm_out.period_us(1000);
     ir_pwm_out.pulsewidth_us(0);
     polling_ticker.attach(&polling,0.2); 
     soundFiltered = 3400.00;//R17=137K, background~3400    
-    sound_ticker.attach(&soundReading,0.01);
-    
+    sound_ticker.attach(&soundReading,1.0);
+
     while(1) {
         if(command_timer.read_us() > 500000){
             command_timer.reset();
@@ -133,7 +143,8 @@
 
 void polling(){
     /*Movement*/
-    if(input_3.read() == 1){
+    pir[0] = input_3.read();
+    if(pir[0] == 1){
         if(level_3 < 10){
             level_3++;
         }
@@ -143,7 +154,8 @@
             level_3--;
         }
     }
-    if(input_4.read() == 1){
+    pir[1] = input_4.read();
+    if(pir[1] == 1){
         if(level_4 < 10){
             level_4++;
         }
@@ -153,7 +165,8 @@
             level_4--;
         }
     }
-    if(input_5.read() == 1){
+    pir[2] = input_5.read();
+    if(pir[2] == 1){
         if(level_5 < 10){
             level_5++;
         }
@@ -258,18 +271,40 @@
         snprintf(text,17,"3:%i 4:%i 5:%i 6:%i",input_3_window,input_4_window,input_5_window,input_6_window);
         display.write_string(text,16);
     }*/
+    /*sprintf(fileName,"%s%d%s","/local/",fileCount,".txt");
+    fp = fopen(fileName, "w"); 
+    snprintf(text,17,"%d,%d,%d,%0.2f,%d\n", pir[0],pir[1],pir[2],speed, sound);
+    fprintf(fp, "text/n/r");
+    fclose(fp);
+    fileCount++;*/
 }
 
 void soundReading(void){
-    soundFilteredPrev = soundFiltered;//save previous value
-    sound = input_1.read_u16();//read new value
-    soundFiltered *= 0.96;//filter new value
-    soundRaw = sound * 0.04;
-    soundFiltered += soundRaw;  
+    //soundFilteredPrev = soundFiltered;//save previous value
+    //sound = input_1.read_u16();//read new value
+    if(input_1){
+        soundLevel+=0.1;
+        if(soundLevel > 1.0)
+            soundLevel = 1.0;
+    }
+    else{
+        soundLevel-=0.07;
+        if(soundLevel < 0.00)
+            soundLevel = 0.00;
+    }
+    if(soundLevel > 0.5){
+        sound = 1;
+    }
+    else{
+        sound = 0;
+    }
+    //soundFiltered *= 0.96;//filter new value
+    //soundRaw = sound * 0.04;
+    //soundFiltered += soundRaw;  
     /*if((soundFiltered - soundFilteredPrev) > 10.00)
         soundFiltered = soundFilteredPrev + 10.00;
     if((soundFiltered - soundFilteredPrev) < -10.00)
-        soundFiltered = soundFilteredPrev - 10.00;*/
+        soundFiltered = soundFilteredPrev - 10.00;*/        
 }
 
 void handleUserRFCommand(char sender, char broadcast_message, char request_response, char id, char is_command, char function, char * data, char length){