ECE 4180 Lab 4. Wifi robot controlled via webpage with Huzzah ESP8266 chip as server.

Dependencies:   Motor mbed

Committer:
Zaydax
Date:
Tue Mar 15 22:10:56 2016 +0000
Revision:
0:908e99bd0369
Publishing to make available to import.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Zaydax 0:908e99bd0369 1 // Pratik Gangwani
Zaydax 0:908e99bd0369 2 // Justin Tamayo
Zaydax 0:908e99bd0369 3 // 3/15/16
Zaydax 0:908e99bd0369 4 // ECE 4180 Lab 4; Wi-Fi controlled robot
Zaydax 0:908e99bd0369 5 // C File to run MBEd anc control motor, LED, and speaker functions by reading in digital signals from Huzzah 8266 board
Zaydax 0:908e99bd0369 6
Zaydax 0:908e99bd0369 7 #include "mbed.h"
Zaydax 0:908e99bd0369 8 #include "Motor.h"
Zaydax 0:908e99bd0369 9 #include "Speaker.h"
Zaydax 0:908e99bd0369 10
Zaydax 0:908e99bd0369 11 //Define MBED LED's for use
Zaydax 0:908e99bd0369 12 DigitalOut myled1(LED1);
Zaydax 0:908e99bd0369 13 DigitalOut myled2(LED2);
Zaydax 0:908e99bd0369 14 DigitalOut myled3(LED3);
Zaydax 0:908e99bd0369 15 DigitalOut myled4(LED4);
Zaydax 0:908e99bd0369 16
Zaydax 0:908e99bd0369 17 // Define Digital Pins to read in digital signals from Huzzah 8266 board
Zaydax 0:908e99bd0369 18 DigitalIn forward(p30);
Zaydax 0:908e99bd0369 19 DigitalIn backward(p29);
Zaydax 0:908e99bd0369 20 DigitalIn left(p28);
Zaydax 0:908e99bd0369 21 DigitalIn right(p27);
Zaydax 0:908e99bd0369 22 DigitalIn horn(p26);
Zaydax 0:908e99bd0369 23
Zaydax 0:908e99bd0369 24 // Define Motor pins to connect to H-Bridge
Zaydax 0:908e99bd0369 25 Motor rightMotor(p21, p16, p15); // pwm, fwd, rev
Zaydax 0:908e99bd0369 26 Motor leftMotor(p22, p19, p17); // pwm, fwd, rev
Zaydax 0:908e99bd0369 27
Zaydax 0:908e99bd0369 28 // Define Speaker pin (MUST BE PIN 18, ANALOG OUT for use with Speaker.h!)
Zaydax 0:908e99bd0369 29 Speaker mySpeaker(p18);
Zaydax 0:908e99bd0369 30
Zaydax 0:908e99bd0369 31 int main() {
Zaydax 0:908e99bd0369 32
Zaydax 0:908e99bd0369 33 // Loop forever
Zaydax 0:908e99bd0369 34 // Check to see if a pin is high. If that pin is high, execute that pin for as long as the signal is high on that pin.
Zaydax 0:908e99bd0369 35 // When you let go on the mouse click the code defaults to doing nothing
Zaydax 0:908e99bd0369 36 // Each pin moves the robot in a particular direction, and activates a specific LED
Zaydax 0:908e99bd0369 37 // Horn will not run forever if you hold it down, it is simply a click
Zaydax 0:908e99bd0369 38 // Setting speed to 0.5 on the motors saves a lot of battery power
Zaydax 0:908e99bd0369 39
Zaydax 0:908e99bd0369 40 while(1){
Zaydax 0:908e99bd0369 41
Zaydax 0:908e99bd0369 42 if(forward) {
Zaydax 0:908e99bd0369 43 rightMotor.speed(0.5);
Zaydax 0:908e99bd0369 44 leftMotor.speed(0.5);
Zaydax 0:908e99bd0369 45 myled1 = 1;
Zaydax 0:908e99bd0369 46 myled2 = 0;
Zaydax 0:908e99bd0369 47 myled3 = 0;
Zaydax 0:908e99bd0369 48 myled4 = 0;
Zaydax 0:908e99bd0369 49 } else if(backward) {
Zaydax 0:908e99bd0369 50 rightMotor.speed(-0.5);
Zaydax 0:908e99bd0369 51 leftMotor.speed(-0.5);
Zaydax 0:908e99bd0369 52 myled1 = 0;
Zaydax 0:908e99bd0369 53 myled2 = 1;
Zaydax 0:908e99bd0369 54 myled3 = 0;
Zaydax 0:908e99bd0369 55 myled4 = 0;
Zaydax 0:908e99bd0369 56 } else if(left) {
Zaydax 0:908e99bd0369 57 rightMotor.speed(0.5);
Zaydax 0:908e99bd0369 58 leftMotor.speed(-0.5);
Zaydax 0:908e99bd0369 59 myled1 = 0;
Zaydax 0:908e99bd0369 60 myled2 = 0;
Zaydax 0:908e99bd0369 61 myled3 = 1;
Zaydax 0:908e99bd0369 62 myled4 = 0;
Zaydax 0:908e99bd0369 63 } else if(right) {
Zaydax 0:908e99bd0369 64 rightMotor.speed(-0.5);
Zaydax 0:908e99bd0369 65 leftMotor.speed(0.5);
Zaydax 0:908e99bd0369 66 myled1 = 0;
Zaydax 0:908e99bd0369 67 myled2 = 0;
Zaydax 0:908e99bd0369 68 myled3 = 0;
Zaydax 0:908e99bd0369 69 myled4 = 1;
Zaydax 0:908e99bd0369 70 } else if(horn) {
Zaydax 0:908e99bd0369 71 rightMotor.speed(0.0);
Zaydax 0:908e99bd0369 72 leftMotor.speed(0.0);
Zaydax 0:908e99bd0369 73 myled1 = 1;
Zaydax 0:908e99bd0369 74 myled2 = 1;
Zaydax 0:908e99bd0369 75 myled3 = 1;
Zaydax 0:908e99bd0369 76 myled4 = 1;
Zaydax 0:908e99bd0369 77 mySpeaker.PlayNote(440.0, 0.5, 0.5);
Zaydax 0:908e99bd0369 78 } else {
Zaydax 0:908e99bd0369 79 rightMotor.speed(0.0);
Zaydax 0:908e99bd0369 80 leftMotor.speed(0.0);
Zaydax 0:908e99bd0369 81 myled1 = 0;
Zaydax 0:908e99bd0369 82 myled2 = 0;
Zaydax 0:908e99bd0369 83 myled3 = 0;
Zaydax 0:908e99bd0369 84 myled4 = 0;
Zaydax 0:908e99bd0369 85 }
Zaydax 0:908e99bd0369 86 }
Zaydax 0:908e99bd0369 87 }