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