ultrasonic
Dependencies: EthernetNetIf HTTPServer TextLCD mbed
Fork of ethernet_test_http by
Diff: main.cpp
- Revision:
- 1:1cda1fafd448
- Parent:
- 0:7dcfd77d344d
--- a/main.cpp Sun May 08 09:03:08 2011 +0000 +++ b/main.cpp Tue Sep 08 06:22:48 2015 +0000 @@ -1,32 +1,42 @@ + +#include "TextLCD.h" #include "mbed.h" -#include "TextLCD.h" +#include "adc.h" #include "EthernetNetIf.h" #include "HTTPServer.h" -DigitalOut led1(LED1,"led1"); -DigitalOut led2(LED2,"led2"); -DigitalOut led3(LED3,"led3"); -DigitalOut led4(LED4,"led4"); - -TextLCD lcd(p24, p26, p27, p28, p29, p30); - -#if 1 -/* - * Use DHCP - */ - EthernetNetIf ethif; -#else -/* - * Use "static IP address" (Parameters:IP, Subnet mask, Gateway, DNS) - */ - EthernetNetIf ethif(IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx)); -#endif - +#define SAMPLE_RATE 150000 +#define NUM 3000 +Ticker ticker; +EthernetNetIf ethif(IpAddr(192,168,11,26), IpAddr(255,255,255,0), IpAddr(192,168,11,1), IpAddr(192,168,11,1)); HTTPServer server; LocalFileSystem local("local"); + FILE *fp; +TextLCD lcd(p24, p26, p27, p28, p29, p30); +int x; +int volt_max; +DigitalOut mled1(LED1); +DigitalOut mled2(LED2); +DigitalOut mled3(LED3); +DigitalOut mled4(LED4); +InterruptIn in_p6(p6); +DigitalIn di(p5); +DigitalOut check(p8); -int main(void) { +ADC adc(SAMPLE_RATE, 1); +int main() +{ +int volt[2000]; +int a[5]; +int n=0, m=0, p=0, v=0, q=0; +int v1, v2, v3; +int min; + check = 0; + + adc.setup(p19,1); + volt_max=0; + mled1 = 1; Base::add_rpc_class<DigitalOut>(); lcd.cls(); @@ -37,19 +47,80 @@ error("Ethernet setup failed."); return 1; } - IpAddr ethIp=ethif.getIp(); - lcd.locate(0,1); - lcd.printf("%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]); - led1=1; wait(1); server.addHandler<SimpleHandler>("/hello"); server.addHandler<RPCHandler>("/rpc"); FSHandler::mount("/local", "/"); server.addHandler<FSHandler>("/"); server.bind(80); - while (1) { - Net::poll(); - } - return 0; -} + +while(1){ + n=0; q=0; p=0; m=0; v=0; +if(di){ + mled2= 1; + for(n=1;n<2000;n++){ + adc.select(p19); // Measure pin 19 + adc.start(); // Start ADC conversion + while(!adc.done(p19)); // Wait for it to complete + volt[n]=adc.read(p19); + mled3 = 1; + } + mled4=1; + mled1=mled3=0; //while loop end + + volt_max=1; + for( n = 100; n < 1800; n++ ){ + if(volt_max<volt[n]*3300/4096){ + volt_max=volt[n]*3300/4096; + m=n; + } + if(v==0){ + if(volt_max > 570){ + p=m; + v=1; + x=p*100/610; + } + } + } + v1=3720.9*exp(-0.009*x); + v2=2589.6*exp(-0.035*x); + v3=828.39*exp(-0.041*x); + + a[0]=abs(volt_max-v1); + a[1]=abs(volt_max-v2); + a[2]=abs(volt_max-v3); + + if(x > 29 && x < 151){ + min=a[0]; + for(n = 1 ; n < 3 ; n++ ){ + if(min > a[n]){ + min=a[n]; + q=n; + } + } + lcd.cls(); +/* if(q==0){ + lcd.locate(0,0); + lcd.printf("acrylic plate"); + } + else if(q==1){ + lcd.locate(0,0); + lcd.printf("towel"); + } + else if(q==2){ + lcd.locate(0,0); + lcd.printf("sponge"); + } + } + else { + lcd.locate(0,0); + lcd.printf("Undeterminable"); + } */ + lcd.locate(0,1); + lcd.printf("%d[mV] %d[cm]",volt_max,x); + if (x>50 && x<120) check = 1; + else check = 0; + } + } + }} \ No newline at end of file