ultrasonic
Dependencies: EthernetNetIf HTTPServer TextLCD mbed
Fork of ethernet_test_http by
main.cpp@1:1cda1fafd448, 2015-09-08 (annotated)
- Committer:
- twinkling
- Date:
- Tue Sep 08 06:22:48 2015 +0000
- Revision:
- 1:1cda1fafd448
- Parent:
- 0:7dcfd77d344d
:;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
twinkling | 1:1cda1fafd448 | 1 | |
twinkling | 1:1cda1fafd448 | 2 | #include "TextLCD.h" |
yueee_yt | 0:7dcfd77d344d | 3 | #include "mbed.h" |
twinkling | 1:1cda1fafd448 | 4 | #include "adc.h" |
yueee_yt | 0:7dcfd77d344d | 5 | #include "EthernetNetIf.h" |
yueee_yt | 0:7dcfd77d344d | 6 | #include "HTTPServer.h" |
yueee_yt | 0:7dcfd77d344d | 7 | |
twinkling | 1:1cda1fafd448 | 8 | #define SAMPLE_RATE 150000 |
twinkling | 1:1cda1fafd448 | 9 | #define NUM 3000 |
twinkling | 1:1cda1fafd448 | 10 | Ticker ticker; |
twinkling | 1:1cda1fafd448 | 11 | EthernetNetIf ethif(IpAddr(192,168,11,26), IpAddr(255,255,255,0), IpAddr(192,168,11,1), IpAddr(192,168,11,1)); |
yueee_yt | 0:7dcfd77d344d | 12 | HTTPServer server; |
yueee_yt | 0:7dcfd77d344d | 13 | LocalFileSystem local("local"); |
twinkling | 1:1cda1fafd448 | 14 | FILE *fp; |
twinkling | 1:1cda1fafd448 | 15 | TextLCD lcd(p24, p26, p27, p28, p29, p30); |
twinkling | 1:1cda1fafd448 | 16 | int x; |
twinkling | 1:1cda1fafd448 | 17 | int volt_max; |
twinkling | 1:1cda1fafd448 | 18 | DigitalOut mled1(LED1); |
twinkling | 1:1cda1fafd448 | 19 | DigitalOut mled2(LED2); |
twinkling | 1:1cda1fafd448 | 20 | DigitalOut mled3(LED3); |
twinkling | 1:1cda1fafd448 | 21 | DigitalOut mled4(LED4); |
twinkling | 1:1cda1fafd448 | 22 | InterruptIn in_p6(p6); |
twinkling | 1:1cda1fafd448 | 23 | DigitalIn di(p5); |
twinkling | 1:1cda1fafd448 | 24 | DigitalOut check(p8); |
yueee_yt | 0:7dcfd77d344d | 25 | |
twinkling | 1:1cda1fafd448 | 26 | ADC adc(SAMPLE_RATE, 1); |
yueee_yt | 0:7dcfd77d344d | 27 | |
twinkling | 1:1cda1fafd448 | 28 | int main() |
twinkling | 1:1cda1fafd448 | 29 | { |
twinkling | 1:1cda1fafd448 | 30 | int volt[2000]; |
twinkling | 1:1cda1fafd448 | 31 | int a[5]; |
twinkling | 1:1cda1fafd448 | 32 | int n=0, m=0, p=0, v=0, q=0; |
twinkling | 1:1cda1fafd448 | 33 | int v1, v2, v3; |
twinkling | 1:1cda1fafd448 | 34 | int min; |
twinkling | 1:1cda1fafd448 | 35 | check = 0; |
twinkling | 1:1cda1fafd448 | 36 | |
twinkling | 1:1cda1fafd448 | 37 | adc.setup(p19,1); |
twinkling | 1:1cda1fafd448 | 38 | volt_max=0; |
twinkling | 1:1cda1fafd448 | 39 | mled1 = 1; |
yueee_yt | 0:7dcfd77d344d | 40 | Base::add_rpc_class<DigitalOut>(); |
yueee_yt | 0:7dcfd77d344d | 41 | |
yueee_yt | 0:7dcfd77d344d | 42 | lcd.cls(); |
yueee_yt | 0:7dcfd77d344d | 43 | lcd.locate(0,0); |
yueee_yt | 0:7dcfd77d344d | 44 | lcd.printf("Program init.. "); |
yueee_yt | 0:7dcfd77d344d | 45 | |
yueee_yt | 0:7dcfd77d344d | 46 | if (ethif.setup()) { |
yueee_yt | 0:7dcfd77d344d | 47 | error("Ethernet setup failed."); |
yueee_yt | 0:7dcfd77d344d | 48 | return 1; |
yueee_yt | 0:7dcfd77d344d | 49 | } |
yueee_yt | 0:7dcfd77d344d | 50 | |
yueee_yt | 0:7dcfd77d344d | 51 | wait(1); |
yueee_yt | 0:7dcfd77d344d | 52 | server.addHandler<SimpleHandler>("/hello"); |
yueee_yt | 0:7dcfd77d344d | 53 | server.addHandler<RPCHandler>("/rpc"); |
yueee_yt | 0:7dcfd77d344d | 54 | FSHandler::mount("/local", "/"); |
yueee_yt | 0:7dcfd77d344d | 55 | server.addHandler<FSHandler>("/"); |
yueee_yt | 0:7dcfd77d344d | 56 | server.bind(80); |
twinkling | 1:1cda1fafd448 | 57 | |
twinkling | 1:1cda1fafd448 | 58 | while(1){ |
twinkling | 1:1cda1fafd448 | 59 | n=0; q=0; p=0; m=0; v=0; |
twinkling | 1:1cda1fafd448 | 60 | if(di){ |
twinkling | 1:1cda1fafd448 | 61 | mled2= 1; |
twinkling | 1:1cda1fafd448 | 62 | for(n=1;n<2000;n++){ |
twinkling | 1:1cda1fafd448 | 63 | adc.select(p19); // Measure pin 19 |
twinkling | 1:1cda1fafd448 | 64 | adc.start(); // Start ADC conversion |
twinkling | 1:1cda1fafd448 | 65 | while(!adc.done(p19)); // Wait for it to complete |
twinkling | 1:1cda1fafd448 | 66 | volt[n]=adc.read(p19); |
twinkling | 1:1cda1fafd448 | 67 | mled3 = 1; |
twinkling | 1:1cda1fafd448 | 68 | } |
twinkling | 1:1cda1fafd448 | 69 | mled4=1; |
twinkling | 1:1cda1fafd448 | 70 | mled1=mled3=0; //while loop end |
twinkling | 1:1cda1fafd448 | 71 | |
twinkling | 1:1cda1fafd448 | 72 | volt_max=1; |
twinkling | 1:1cda1fafd448 | 73 | for( n = 100; n < 1800; n++ ){ |
twinkling | 1:1cda1fafd448 | 74 | if(volt_max<volt[n]*3300/4096){ |
twinkling | 1:1cda1fafd448 | 75 | volt_max=volt[n]*3300/4096; |
twinkling | 1:1cda1fafd448 | 76 | m=n; |
twinkling | 1:1cda1fafd448 | 77 | } |
twinkling | 1:1cda1fafd448 | 78 | if(v==0){ |
twinkling | 1:1cda1fafd448 | 79 | if(volt_max > 570){ |
twinkling | 1:1cda1fafd448 | 80 | p=m; |
twinkling | 1:1cda1fafd448 | 81 | v=1; |
twinkling | 1:1cda1fafd448 | 82 | x=p*100/610; |
twinkling | 1:1cda1fafd448 | 83 | } |
twinkling | 1:1cda1fafd448 | 84 | } |
twinkling | 1:1cda1fafd448 | 85 | } |
twinkling | 1:1cda1fafd448 | 86 | v1=3720.9*exp(-0.009*x); |
twinkling | 1:1cda1fafd448 | 87 | v2=2589.6*exp(-0.035*x); |
twinkling | 1:1cda1fafd448 | 88 | v3=828.39*exp(-0.041*x); |
twinkling | 1:1cda1fafd448 | 89 | |
twinkling | 1:1cda1fafd448 | 90 | a[0]=abs(volt_max-v1); |
twinkling | 1:1cda1fafd448 | 91 | a[1]=abs(volt_max-v2); |
twinkling | 1:1cda1fafd448 | 92 | a[2]=abs(volt_max-v3); |
twinkling | 1:1cda1fafd448 | 93 | |
twinkling | 1:1cda1fafd448 | 94 | if(x > 29 && x < 151){ |
twinkling | 1:1cda1fafd448 | 95 | min=a[0]; |
twinkling | 1:1cda1fafd448 | 96 | for(n = 1 ; n < 3 ; n++ ){ |
twinkling | 1:1cda1fafd448 | 97 | if(min > a[n]){ |
twinkling | 1:1cda1fafd448 | 98 | min=a[n]; |
twinkling | 1:1cda1fafd448 | 99 | q=n; |
twinkling | 1:1cda1fafd448 | 100 | } |
twinkling | 1:1cda1fafd448 | 101 | } |
twinkling | 1:1cda1fafd448 | 102 | lcd.cls(); |
twinkling | 1:1cda1fafd448 | 103 | /* if(q==0){ |
twinkling | 1:1cda1fafd448 | 104 | lcd.locate(0,0); |
twinkling | 1:1cda1fafd448 | 105 | lcd.printf("acrylic plate"); |
twinkling | 1:1cda1fafd448 | 106 | } |
twinkling | 1:1cda1fafd448 | 107 | else if(q==1){ |
twinkling | 1:1cda1fafd448 | 108 | lcd.locate(0,0); |
twinkling | 1:1cda1fafd448 | 109 | lcd.printf("towel"); |
twinkling | 1:1cda1fafd448 | 110 | } |
twinkling | 1:1cda1fafd448 | 111 | else if(q==2){ |
twinkling | 1:1cda1fafd448 | 112 | lcd.locate(0,0); |
twinkling | 1:1cda1fafd448 | 113 | lcd.printf("sponge"); |
twinkling | 1:1cda1fafd448 | 114 | } |
twinkling | 1:1cda1fafd448 | 115 | } |
twinkling | 1:1cda1fafd448 | 116 | else { |
twinkling | 1:1cda1fafd448 | 117 | lcd.locate(0,0); |
twinkling | 1:1cda1fafd448 | 118 | lcd.printf("Undeterminable"); |
twinkling | 1:1cda1fafd448 | 119 | } */ |
twinkling | 1:1cda1fafd448 | 120 | lcd.locate(0,1); |
twinkling | 1:1cda1fafd448 | 121 | lcd.printf("%d[mV] %d[cm]",volt_max,x); |
twinkling | 1:1cda1fafd448 | 122 | if (x>50 && x<120) check = 1; |
twinkling | 1:1cda1fafd448 | 123 | else check = 0; |
twinkling | 1:1cda1fafd448 | 124 | } |
twinkling | 1:1cda1fafd448 | 125 | } |
twinkling | 1:1cda1fafd448 | 126 | }} |