ECE4180 lab4

Dependencies:   EthernetNetIf HTTPServer Motordriver NetServicesSource mbed

Fork of HTTPServerExample by Donatien Garnier

Committer:
tianyeapply
Date:
Thu Nov 03 21:45:57 2016 +0000
Revision:
3:97ed1391b2fc
Parent:
1:114e347434c1
Code for ECE 4180 Lab4, remote control a Moto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:0b1369ae8b74 1 #include "mbed.h"
donatien 0:0b1369ae8b74 2 #include "EthernetNetIf.h"
donatien 0:0b1369ae8b74 3 #include "HTTPServer.h"
tianyeapply 3:97ed1391b2fc 4 #include "motordriver.h"
donatien 0:0b1369ae8b74 5 DigitalOut led1(LED1, "led1");
donatien 0:0b1369ae8b74 6 DigitalOut led2(LED2, "led2");
donatien 0:0b1369ae8b74 7 DigitalOut led3(LED3, "led3");
donatien 0:0b1369ae8b74 8 DigitalOut led4(LED4, "led4");
tianyeapply 3:97ed1391b2fc 9 AnalogIn pot(p20);
donatien 0:0b1369ae8b74 10
donatien 0:0b1369ae8b74 11 LocalFileSystem fs("webfs");
donatien 0:0b1369ae8b74 12
donatien 0:0b1369ae8b74 13 EthernetNetIf eth;
donatien 0:0b1369ae8b74 14 HTTPServer svr;
donatien 0:0b1369ae8b74 15
tianyeapply 3:97ed1391b2fc 16 // Magician robot motor test
tianyeapply 3:97ed1391b2fc 17
tianyeapply 3:97ed1391b2fc 18 //Connections to dual H-brdige driver for the two drive motors
tianyeapply 3:97ed1391b2fc 19 Motor left(p21, p22, p23, 1); // pwm, fwd, rev, has brake feature
tianyeapply 3:97ed1391b2fc 20
tianyeapply 3:97ed1391b2fc 21
donatien 0:0b1369ae8b74 22 int main() {
donatien 0:0b1369ae8b74 23 Base::add_rpc_class<DigitalOut>();
donatien 0:0b1369ae8b74 24
donatien 1:114e347434c1 25 printf("Setting up...\n");
donatien 0:0b1369ae8b74 26 EthernetErr ethErr = eth.setup();
donatien 0:0b1369ae8b74 27 if(ethErr)
donatien 0:0b1369ae8b74 28 {
donatien 0:0b1369ae8b74 29 printf("Error %d in setup.\n", ethErr);
donatien 0:0b1369ae8b74 30 return -1;
donatien 0:0b1369ae8b74 31 }
donatien 0:0b1369ae8b74 32 printf("Setup OK\n");
donatien 0:0b1369ae8b74 33
donatien 0:0b1369ae8b74 34 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
donatien 0:0b1369ae8b74 35 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
donatien 0:0b1369ae8b74 36
donatien 0:0b1369ae8b74 37 svr.addHandler<SimpleHandler>("/hello");
donatien 0:0b1369ae8b74 38 svr.addHandler<RPCHandler>("/rpc");
donatien 0:0b1369ae8b74 39 svr.addHandler<FSHandler>("/files");
donatien 0:0b1369ae8b74 40 svr.addHandler<FSHandler>("/"); //Default handler
donatien 0:0b1369ae8b74 41 //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
donatien 0:0b1369ae8b74 42
donatien 0:0b1369ae8b74 43 svr.bind(80);
donatien 0:0b1369ae8b74 44
donatien 0:0b1369ae8b74 45 printf("Listening...\n");
donatien 0:0b1369ae8b74 46
donatien 0:0b1369ae8b74 47 Timer tm;
donatien 0:0b1369ae8b74 48 tm.start();
donatien 0:0b1369ae8b74 49 //Listen indefinitely
tianyeapply 3:97ed1391b2fc 50
tianyeapply 3:97ed1391b2fc 51 float speed;
donatien 0:0b1369ae8b74 52 while(true)
tianyeapply 3:97ed1391b2fc 53 {
donatien 0:0b1369ae8b74 54 Net::poll();
tianyeapply 3:97ed1391b2fc 55 speed = pot.read();
tianyeapply 3:97ed1391b2fc 56 if(led1==1){
tianyeapply 3:97ed1391b2fc 57 left.speed(speed);
tianyeapply 3:97ed1391b2fc 58 led1=0;
tianyeapply 3:97ed1391b2fc 59 //start
tianyeapply 3:97ed1391b2fc 60 }
tianyeapply 3:97ed1391b2fc 61 else if(led2 ==1){
tianyeapply 3:97ed1391b2fc 62 //stop
tianyeapply 3:97ed1391b2fc 63 left.speed(0);
tianyeapply 3:97ed1391b2fc 64 led2=0;
tianyeapply 3:97ed1391b2fc 65 }
tianyeapply 3:97ed1391b2fc 66 else if(led3==1){
tianyeapply 3:97ed1391b2fc 67 //reverse
tianyeapply 3:97ed1391b2fc 68 left.speed(-speed);
tianyeapply 3:97ed1391b2fc 69 led3 =0;
tianyeapply 3:97ed1391b2fc 70 }
tianyeapply 3:97ed1391b2fc 71
donatien 0:0b1369ae8b74 72 if(tm.read()>.5)
donatien 0:0b1369ae8b74 73 {
tianyeapply 3:97ed1391b2fc 74 led4=!led4; //Show that we are alive
donatien 0:0b1369ae8b74 75 tm.start();
donatien 0:0b1369ae8b74 76 }
donatien 0:0b1369ae8b74 77 }
donatien 0:0b1369ae8b74 78
donatien 0:0b1369ae8b74 79 return 0;
donatien 0:0b1369ae8b74 80
donatien 0:0b1369ae8b74 81 }