Code to work with stadium.

Dependencies:   4DGL-uLCD-SE mbed-rtos mbed

Fork of StadiumHelper by Raymond Wong

Files at this revision

API Documentation at this revision

Comitter:
nambvarun
Date:
Sun May 01 03:50:49 2016 +0000
Parent:
0:0927a4a6f549
Commit message:
Updated Stadium Helper;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 0927a4a6f549 -r 2f7eee3b65ee main.cpp
--- a/main.cpp	Sun Apr 24 21:08:37 2016 +0000
+++ b/main.cpp	Sun May 01 03:50:49 2016 +0000
@@ -6,14 +6,35 @@
 #include "rtos.h"
 DigitalOut myled(LED1);
 DigitalOut myled2(LED2);
-DigitalOut fan(p20);
+DigitalOut SSR(p20);
 #include "emic2.h"
 uLCD_4DGL uLCD(p28, p27, p29);
 emic2 myTTS(p9, p10); //serial RX,TX pins to emic
 //uLCD_4DGL uLCD(p28, p27, p29);
 Serial pc(p13, p14); //this is the xbee
-Serial pc2(USBTX, USBRX); //this is a computer connected to the mbed for testing purposes
+//Serial pc(USBTX, USBRX); //this is a computer connected to the mbed for testing purposes
 Mutex m;
+
+InterruptIn zerocross(p22);
+Timeout SSRtriggerOn;
+volatile float dim;
+volatile float saveDim;
+const float powerlinefrequency=60.000;
+
+void triggerOn()
+{
+    SSR = 1;
+}
+
+void dimmer()
+{
+    // turn off SSR at zero crossing
+    SSR = 0;
+    // compute time delay using dim value and set timer interrupt
+    // triggers SSR after a small post zero crossing time delay
+    SSRtriggerOn.attach(&triggerOn,(1.001 - dim)/(2*powerlinefrequency));
+}
+
 class TMP36
 {
 public:
@@ -46,6 +67,7 @@
     Erase sentence when finished with a command
     Need mutex so serial communications don't interrupt each other.
     */
+    bool on = true;
     while(1) {
         if(pc.readable()){
             m.lock();
@@ -59,10 +81,20 @@
                 myTTS.speakf("%s", sentence);
                 myTTS.ready();
                 sentence = "";
-            } else if (letter == '*') {
-                fan = !fan;
-                myled = !myled;
-                sentence = "";   
+//            } else if (letter == '*') {
+//                dim = 0;
+//                wait(0.5);
+//                myled = !myled;
+//                sentence = "";   
+            } else if (letter == '#') {
+                while(!pc.readable()){
+                }
+                a = pc.getc();
+                letter = (char)a;
+                float b = (float)letter - 48;
+                dim = b * 0.1;
+                wait(.05);
+                sentence = "";
             }
             m.unlock();
         }
@@ -71,6 +103,9 @@
     }
 }
 int main() {
+    zerocross.mode(PullNone);
+    wait(0.2);
+    zerocross.rise(&dimmer);
     Thread thread1(ttsThread);
     float tempC, tempF;
     int blue, red, color;
@@ -89,7 +124,7 @@
     //send through xbee to pc
     pc.printf("%f\n", tempC);
     //send through usb for debugging
-    pc2.printf("%f\n\r", tempC);
+//    pc2.printf("%f\n\r", tempC);
     uLCD.printf("%5.2f C \n\n%5.2f F \n\r\n", tempC, tempF);
     if(tempF < 32) {
         uLCD.printf("It's cold!");