ultrasonic

Dependencies:   EthernetNetIf HTTPServer TextLCD mbed

Fork of ethernet_test_http by Yasushi TAUCHI

Committer:
twinkling
Date:
Tue Sep 08 06:22:48 2015 +0000
Revision:
1:1cda1fafd448
Parent:
0:7dcfd77d344d
:;

Who changed what in which revision?

UserRevisionLine numberNew 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 }}