Distance_Sensor
Dependencies: N5110 SDFileSystem SRF02 mbed
main.cpp@0:17a67f6f9383, 2016-05-05 (annotated)
- Committer:
- garyk6666
- Date:
- Thu May 05 08:59:40 2016 +0000
- Revision:
- 0:17a67f6f9383
2.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
garyk6666 | 0:17a67f6f9383 | 1 | #include "main.h" |
garyk6666 | 0:17a67f6f9383 | 2 | |
garyk6666 | 0:17a67f6f9383 | 3 | int main() |
garyk6666 | 0:17a67f6f9383 | 4 | { |
garyk6666 | 0:17a67f6f9383 | 5 | init_K64F();//the k64f initialization |
garyk6666 | 0:17a67f6f9383 | 6 | button.fall(&green);//for interruptIn |
garyk6666 | 0:17a67f6f9383 | 7 | button.mode(PullNone);//for interruptIn |
garyk6666 | 0:17a67f6f9383 | 8 | lcd.init();//the lcd initialization |
garyk6666 | 0:17a67f6f9383 | 9 | wait(1.0); |
garyk6666 | 0:17a67f6f9383 | 10 | lcd.printString("Distance",18,1);//Display the Distance |
garyk6666 | 0:17a67f6f9383 | 11 | lcd.printString("Detector",18,3);//Display the Detector |
garyk6666 | 0:17a67f6f9383 | 12 | wait(1.0); |
garyk6666 | 0:17a67f6f9383 | 13 | lcd.clear();//clear the display |
garyk6666 | 0:17a67f6f9383 | 14 | lcd.printString("Kai yuan!",18,2);//Display the name Kai yuan |
garyk6666 | 0:17a67f6f9383 | 15 | lcd.printString("200967075",18,4);//Display the 200967075 |
garyk6666 | 0:17a67f6f9383 | 16 | wait(2.0); |
garyk6666 | 0:17a67f6f9383 | 17 | lcd.clear();//clear the display |
garyk6666 | 0:17a67f6f9383 | 18 | button.mode(PullDown);//for interruptIn |
garyk6666 | 0:17a67f6f9383 | 19 | |
garyk6666 | 0:17a67f6f9383 | 20 | while(1) { |
garyk6666 | 0:17a67f6f9383 | 21 | if(yesno == true) { |
garyk6666 | 0:17a67f6f9383 | 22 | char buffer[14];// each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) |
garyk6666 | 0:17a67f6f9383 | 23 | buzzer.period(0.001); // try 1 kKz |
garyk6666 | 0:17a67f6f9383 | 24 | buzzer = 0.5; // turn on (square wave) |
garyk6666 | 0:17a67f6f9383 | 25 | wait(1.0); |
garyk6666 | 0:17a67f6f9383 | 26 | lcd.clear();//clear the display |
garyk6666 | 0:17a67f6f9383 | 27 | int distance=sensor.getDistanceCm();//get distance |
garyk6666 | 0:17a67f6f9383 | 28 | int length = sprintf(buffer,"D = %d cm",distance); |
garyk6666 | 0:17a67f6f9383 | 29 | if (length <= 14) {// if string will fit on display |
garyk6666 | 0:17a67f6f9383 | 30 | lcd.printString(buffer,0,1); |
garyk6666 | 0:17a67f6f9383 | 31 | } |
garyk6666 | 0:17a67f6f9383 | 32 | lcd.drawLine(0,24,0,48,1);//display the line |
garyk6666 | 0:17a67f6f9383 | 33 | lcd.drawRect(distance/5,31,10,5,1);//display the rectangle |
garyk6666 | 0:17a67f6f9383 | 34 | lcd.drawCircle(distance/5+3,37,1,1);//display the circle |
garyk6666 | 0:17a67f6f9383 | 35 | lcd.drawCircle(distance/5+7,37,1,1);//display the circle |
garyk6666 | 0:17a67f6f9383 | 36 | lcd.refresh(); |
garyk6666 | 0:17a67f6f9383 | 37 | ticker.attach(&green1,0.1);//for led flashing |
garyk6666 | 0:17a67f6f9383 | 38 | |
garyk6666 | 0:17a67f6f9383 | 39 | } |
garyk6666 | 0:17a67f6f9383 | 40 | |
garyk6666 | 0:17a67f6f9383 | 41 | else { |
garyk6666 | 0:17a67f6f9383 | 42 | lcd.clear(); |
garyk6666 | 0:17a67f6f9383 | 43 | lcd.printString("Are you ready?",0,2); |
garyk6666 | 0:17a67f6f9383 | 44 | buzzer = 0.0; // turn off (0% duty cycle) |
garyk6666 | 0:17a67f6f9383 | 45 | ticker.detach(); |
garyk6666 | 0:17a67f6f9383 | 46 | green_led = green_led;//turn off the led |
garyk6666 | 0:17a67f6f9383 | 47 | } |
garyk6666 | 0:17a67f6f9383 | 48 | r_led = 1; |
garyk6666 | 0:17a67f6f9383 | 49 | wait(0.5); |
garyk6666 | 0:17a67f6f9383 | 50 | } |
garyk6666 | 0:17a67f6f9383 | 51 | } |
garyk6666 | 0:17a67f6f9383 | 52 | |
garyk6666 | 0:17a67f6f9383 | 53 | void init_K64F() |
garyk6666 | 0:17a67f6f9383 | 54 | { |
garyk6666 | 0:17a67f6f9383 | 55 | // on-board LEDs are active-low, so set pin high to turn them off. |
garyk6666 | 0:17a67f6f9383 | 56 | r_led = 1; |
garyk6666 | 0:17a67f6f9383 | 57 | g_led = 1; |
garyk6666 | 0:17a67f6f9383 | 58 | b_led = 1; |
garyk6666 | 0:17a67f6f9383 | 59 | |
garyk6666 | 0:17a67f6f9383 | 60 | // since the on-board switches have external pull-ups, we should disable the internal pull-down |
garyk6666 | 0:17a67f6f9383 | 61 | // resistors that are enabled by default using InterruptIn |
garyk6666 | 0:17a67f6f9383 | 62 | button.mode(PullNone); |
garyk6666 | 0:17a67f6f9383 | 63 | button.mode(PullNone); |
garyk6666 | 0:17a67f6f9383 | 64 | |
garyk6666 | 0:17a67f6f9383 | 65 | } |
garyk6666 | 0:17a67f6f9383 | 66 | |
garyk6666 | 0:17a67f6f9383 | 67 | void green() |
garyk6666 | 0:17a67f6f9383 | 68 | { |
garyk6666 | 0:17a67f6f9383 | 69 | yesno=!yesno;//true or false |
garyk6666 | 0:17a67f6f9383 | 70 | } |
garyk6666 | 0:17a67f6f9383 | 71 | void green1() |
garyk6666 | 0:17a67f6f9383 | 72 | { |
garyk6666 | 0:17a67f6f9383 | 73 | green_led =! green_led;//make led light |
garyk6666 | 0:17a67f6f9383 | 74 | } |