Lab3-task1

Fork of ADCandticker_sample by William Marsh

Files at this revision

API Documentation at this revision

Comitter:
Peilingyi
Date:
Fri Feb 09 23:17:31 2018 +0000
Parent:
1:126dd2f5fc2d
Commit message:
lab3-1

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 126dd2f5fc2d -r d43f2f1ca99b main.cpp
--- a/main.cpp	Wed Jan 24 21:55:43 2018 +0000
+++ b/main.cpp	Fri Feb 09 23:17:31 2018 +0000
@@ -5,9 +5,25 @@
 #include "mbed.h"
 
 
+
 Ticker tick;                // Ticker for reading analog
 AnalogIn ain(A0) ;          // Analog input
-DigitalOut led1(LED_RED);   // Red LED
+DigitalOut led1(LED_RED);
+ 
+DigitalOut lede1(PTD4) ;          // Extend LED
+DigitalOut lede2(PTD5) ;  
+DigitalOut lede3(PTD2) ;  
+DigitalOut lede4(PTD3) ;
+DigitalOut lede5(PTD1) ;  
+
+
+InterruptIn button(PTD0); //add button
+volatile int pressEvent = 0 ;
+
+void buttonCallback()
+{   
+   pressEvent = 1;
+}
 
 Serial pc(USBTX, USBRX); // tx, rx, for debugging
 
@@ -53,25 +69,105 @@
 //   Attach ISR for ticker
 //   Procss messages from mailbox    
 int main() {
+    button.mode(PullUp);  
+    button.fall(&buttonCallback); 
+    
     led1 = 1 ; // turn off 
-    int volts = 0 ;
-    const int threshold = 100 ;
+ //   led2 = 0;
+    int volts = 0.0 ;
+  //  const int vToString = 100 ;
+   // const int threshold = 55;
+ //   const std::array <int,6>threshold{55,110,165,220,275,330};
+    int threshold[6] = {55,110,165,220,275,330};
     int counter = 0 ;
     char vstring[] = "X.XX\r\n" ;
 
+
     tick.attach_us(callback(&readA0), 10000); // ticks every 10ms
+    
+ //   tick1.attach_us(callback(&readA0), 10000); // ticks every 10ms
     while (true) {
+        if (pressEvent == 1)
+        {   
+            for(int i =0;i<6;i++)
+            {
+                threshold[i] = (volts/6)*(i+1);
+              
+                pressEvent = 0;
+            }
+        }   
+             
         osEvent evt = mailbox.get(); // wait for mail 
         if (evt.status == osEventMail) {
             message_t* mess = (message_t*)evt.value.p ;
             volts = (mess->analog * 330) / 0xffff ;
             mailbox.free(mess) ;  // free the message space
-            if (volts > threshold) led1 = 0 ; else led1 = 1 ;
+     
+           if (volts<=(threshold[0]))
+            {
+                led1 = 1 ;
+                lede1 = 0;
+                lede2 = 0;
+                lede3 = 0;
+                lede4 = 0;
+                lede5 = 0;
+            }
+           
+           if ((volts<=threshold[1])&&(volts>threshold[0]))
+            {
+                led1 = 1 ;
+                lede1 = 1;
+                lede2 = 0;
+                lede3 = 0;
+                lede4 = 0;
+                lede5 = 0;
+            }
+            if ((volts<=threshold[2])&&(volts>threshold[1]))
+                {
+                led1 = 1 ;
+                lede1 = 1;
+                lede2 = 1;
+                lede3 = 0;
+                lede4 = 0;
+                lede5 = 0;
+            }
+             if ((volts<=threshold[3])&&(volts>threshold[2]))
+                {
+                led1 = 1 ;
+                lede1 = 1;
+                lede2 = 1;
+                lede3 = 1;
+                lede4 = 0;
+                lede5 = 0;
+            }
+              if ((volts<=threshold[4])&&(volts>threshold[3]))
+            {
+                led1 = 0 ;
+                lede1 = 1;
+                lede2 = 1;
+                lede3 = 1;
+                lede4 = 1;
+                lede5 = 0;
+            }
+                if ((volts<=threshold[5])&&(volts>threshold[4]))
+            {
+                led1 = 0 ;
+                lede1 = 1;
+                lede2 = 1;
+                lede3 = 1;
+                lede4 = 1;
+                lede5 = 1;
+            }
             vToString(volts, vstring) ;
+//            vToString(threshold[5], vstring1) ;
             counter++ ;
             if (counter == 10) {  // limit bandwidth of serial
-                pc.printf(vstring) ;
-                counter = 0 ;
+                {
+                    pc.printf(vstring);
+ //               
+                  
+                }
+            counter = 0 ;
             }
         }