Peiling Yi
/
ADCandticker_modify
Lab3-task1
Fork of ADCandticker_sample by
Revision 2:d43f2f1ca99b, committed 2018-02-09
- 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 ; } }