Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Motordriver PixelArray RemoteIR
HCSR04/main.txt@94:9050bb458b00, 2019-06-16 (annotated)
- Committer:
- yangyejin
- Date:
- Sun Jun 16 16:40:51 2019 +0000
- Revision:
- 94:9050bb458b00
alphabot
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangyejin | 94:9050bb458b00 | 1 | /* EXAMPLE */ |
yangyejin | 94:9050bb458b00 | 2 | #include "mbed.h" |
yangyejin | 94:9050bb458b00 | 3 | #include "HCSR04.h" |
yangyejin | 94:9050bb458b00 | 4 | |
yangyejin | 94:9050bb458b00 | 5 | //D12 TRIGGER D11 ECHO |
yangyejin | 94:9050bb458b00 | 6 | |
yangyejin | 94:9050bb458b00 | 7 | RawSerial pc(SERIAL_TX, SERIAL_RX,115200); |
yangyejin | 94:9050bb458b00 | 8 | HCSR04 sensor(D3, D2,pc,0.5); |
yangyejin | 94:9050bb458b00 | 9 | Ticker repeat; |
yangyejin | 94:9050bb458b00 | 10 | |
yangyejin | 94:9050bb458b00 | 11 | uint8_t rx_buffer[10]; |
yangyejin | 94:9050bb458b00 | 12 | int index=0; |
yangyejin | 94:9050bb458b00 | 13 | volatile int flag; |
yangyejin | 94:9050bb458b00 | 14 | void rx_ISR(void) |
yangyejin | 94:9050bb458b00 | 15 | { |
yangyejin | 94:9050bb458b00 | 16 | char ch; |
yangyejin | 94:9050bb458b00 | 17 | ch = pc.getc(); |
yangyejin | 94:9050bb458b00 | 18 | pc.putc(ch); |
yangyejin | 94:9050bb458b00 | 19 | rx_buffer[index++]=ch; |
yangyejin | 94:9050bb458b00 | 20 | if(ch==0x0D) |
yangyejin | 94:9050bb458b00 | 21 | { |
yangyejin | 94:9050bb458b00 | 22 | pc.putc(0x0A); |
yangyejin | 94:9050bb458b00 | 23 | rx_buffer[--index]='\0'; |
yangyejin | 94:9050bb458b00 | 24 | index=0; |
yangyejin | 94:9050bb458b00 | 25 | flag=1; |
yangyejin | 94:9050bb458b00 | 26 | } |
yangyejin | 94:9050bb458b00 | 27 | } |
yangyejin | 94:9050bb458b00 | 28 | |
yangyejin | 94:9050bb458b00 | 29 | |
yangyejin | 94:9050bb458b00 | 30 | |
yangyejin | 94:9050bb458b00 | 31 | |
yangyejin | 94:9050bb458b00 | 32 | |
yangyejin | 94:9050bb458b00 | 33 | int main() { |
yangyejin | 94:9050bb458b00 | 34 | //pc.printf("select mode (repeat / once): "); |
yangyejin | 94:9050bb458b00 | 35 | pc.attach(&rx_ISR); |
yangyejin | 94:9050bb458b00 | 36 | while(1) |
yangyejin | 94:9050bb458b00 | 37 | { |
yangyejin | 94:9050bb458b00 | 38 | pc.printf("[0 : 10 times / 1: 1 times ] : "); |
yangyejin | 94:9050bb458b00 | 39 | flag = 0; |
yangyejin | 94:9050bb458b00 | 40 | while(flag !=1); |
yangyejin | 94:9050bb458b00 | 41 | |
yangyejin | 94:9050bb458b00 | 42 | if(strcmp((const char*)rx_buffer,"0")==0) |
yangyejin | 94:9050bb458b00 | 43 | { |
yangyejin | 94:9050bb458b00 | 44 | sensor.setMode(true); |
yangyejin | 94:9050bb458b00 | 45 | repeat.attach(callback(&sensor,&HCSR04::distance),0.5); |
yangyejin | 94:9050bb458b00 | 46 | while(!(sensor.getStatus()==10)); |
yangyejin | 94:9050bb458b00 | 47 | |
yangyejin | 94:9050bb458b00 | 48 | repeat.detach(); |
yangyejin | 94:9050bb458b00 | 49 | sensor.setMode(false); |
yangyejin | 94:9050bb458b00 | 50 | sensor.clearStatus(); |
yangyejin | 94:9050bb458b00 | 51 | } |
yangyejin | 94:9050bb458b00 | 52 | //pc.printf("end1?"); |
yangyejin | 94:9050bb458b00 | 53 | if(strcmp((const char*)rx_buffer,"1")==0) |
yangyejin | 94:9050bb458b00 | 54 | { |
yangyejin | 94:9050bb458b00 | 55 | sensor.setMode(false); |
yangyejin | 94:9050bb458b00 | 56 | // printf("Measure : 'M', Reselect : 'R'\r\n"); |
yangyejin | 94:9050bb458b00 | 57 | // while(!(strcmp((const char*)rx_buffer,"M")==0 | strcmp((const char*)rx_buffer,"R")==0)); |
yangyejin | 94:9050bb458b00 | 58 | // if(strcmp((const char*)rx_buffer,"R")==0) |
yangyejin | 94:9050bb458b00 | 59 | // {} |
yangyejin | 94:9050bb458b00 | 60 | // if(strcmp((const char*)rx_buffer,"M")==0) |
yangyejin | 94:9050bb458b00 | 61 | // { |
yangyejin | 94:9050bb458b00 | 62 | sensor.distance(); |
yangyejin | 94:9050bb458b00 | 63 | sensor.clearStatus(); |
yangyejin | 94:9050bb458b00 | 64 | // } |
yangyejin | 94:9050bb458b00 | 65 | } |
yangyejin | 94:9050bb458b00 | 66 | } |
yangyejin | 94:9050bb458b00 | 67 | } |