NervousPuppySprintTwo

Dependencies:   C12832_lcd Servo USBHost mbed

Fork of USBHostSerial_HelloWorld by Samuel Mokrani

Committer:
petermcgorry
Date:
Tue Mar 10 20:20:39 2015 +0000
Revision:
10:0aa55bd3be36
Parent:
9:ea3cfd16b4d9
rev 8/2/15

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 0:7528379ed84d 1 #include "mbed.h"
samux 0:7528379ed84d 2 #include "USBHostSerial.h"
hervel90 7:3b14ddcf6d8e 3 #include "C12832_lcd.h"
hervel90 7:3b14ddcf6d8e 4 #include "Servo.h"
samux 0:7528379ed84d 5
petermcgorry 10:0aa55bd3be36 6 #define RTIME if(posx<=1500) posx+=40;
petermcgorry 10:0aa55bd3be36 7 #define RCOUNTERTIME if(posx>=500) posx-=40;
petermcgorry 10:0aa55bd3be36 8 #define TILTBACK if(posy>=500) posy-=40;
davidqpinho 9:ea3cfd16b4d9 9 #define TILTFORW if(posy<=1300) posy+=40;
davidqpinho 8:eaae889bc6eb 10 #define TEMPORARY rotate.SetPosition(posx); tilt.SetPosition(posy);
davidqpinho 8:eaae889bc6eb 11
hervel90 7:3b14ddcf6d8e 12 DigitalOut led1(LED1);
hervel90 7:3b14ddcf6d8e 13 DigitalOut led3(LED3);
samux 0:7528379ed84d 14 Serial pc(USBTX, USBRX);
hervel90 7:3b14ddcf6d8e 15 C12832_LCD lcd;
hervel90 7:3b14ddcf6d8e 16
hervel90 7:3b14ddcf6d8e 17 Servo tilt(p21);
hervel90 7:3b14ddcf6d8e 18 Servo rotate(p22);
hervel90 7:3b14ddcf6d8e 19 AnalogIn ainLeft(p15);
hervel90 7:3b14ddcf6d8e 20 AnalogIn ainRight(p16);
hervel90 7:3b14ddcf6d8e 21
hervel90 7:3b14ddcf6d8e 22 Mutex rx_mutex;
davidqpinho 8:eaae889bc6eb 23 Mutex tiltserv;
davidqpinho 8:eaae889bc6eb 24 Mutex rotateserv;
hervel90 7:3b14ddcf6d8e 25
davidqpinho 8:eaae889bc6eb 26 int posx = 1000,posy = 750;
davidqpinho 8:eaae889bc6eb 27
davidqpinho 8:eaae889bc6eb 28 void rotate_servo(int x);
davidqpinho 8:eaae889bc6eb 29
davidqpinho 8:eaae889bc6eb 30 void tild_thread(void const *args)
davidqpinho 8:eaae889bc6eb 31 {
davidqpinho 8:eaae889bc6eb 32 while (true) {
davidqpinho 8:eaae889bc6eb 33 tiltserv.lock();
davidqpinho 8:eaae889bc6eb 34 tilt.SetPosition(posy);
davidqpinho 8:eaae889bc6eb 35 tiltserv.unlock();
davidqpinho 8:eaae889bc6eb 36 }
davidqpinho 8:eaae889bc6eb 37 }
davidqpinho 8:eaae889bc6eb 38
davidqpinho 8:eaae889bc6eb 39 void rotate_thread(void const *args)
davidqpinho 8:eaae889bc6eb 40 {
davidqpinho 8:eaae889bc6eb 41 while (true) {
davidqpinho 8:eaae889bc6eb 42 rotateserv.lock();
davidqpinho 8:eaae889bc6eb 43 rotate.SetPosition(posx);
davidqpinho 8:eaae889bc6eb 44 rotateserv.unlock();
davidqpinho 8:eaae889bc6eb 45 }
davidqpinho 8:eaae889bc6eb 46 }
samux 0:7528379ed84d 47
hervel90 7:3b14ddcf6d8e 48 int main()
hervel90 7:3b14ddcf6d8e 49 {
davidqpinho 8:eaae889bc6eb 50 tilt.Enable(750,20000);
davidqpinho 8:eaae889bc6eb 51 rotate.Enable(1000,20000);
davidqpinho 8:eaae889bc6eb 52 Thread thr1(tild_thread);
davidqpinho 8:eaae889bc6eb 53 Thread thr2(rotate_thread);
hervel90 7:3b14ddcf6d8e 54 lcd.cls();
davidqpinho 9:ea3cfd16b4d9 55 char buffer[2];
davidqpinho 8:eaae889bc6eb 56 rotate.SetPosition(1000);
davidqpinho 8:eaae889bc6eb 57 tilt.SetPosition(750);
davidqpinho 8:eaae889bc6eb 58
hervel90 7:3b14ddcf6d8e 59 while (true)
hervel90 7:3b14ddcf6d8e 60 {
hervel90 7:3b14ddcf6d8e 61 if(pc.readable())
hervel90 7:3b14ddcf6d8e 62 {
hervel90 7:3b14ddcf6d8e 63 rx_mutex.lock();
hervel90 7:3b14ddcf6d8e 64 pc.gets(buffer,2); // set the number of bytes
hervel90 7:3b14ddcf6d8e 65
hervel90 7:3b14ddcf6d8e 66 rx_mutex.unlock();
hervel90 7:3b14ddcf6d8e 67 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 68 lcd.printf(buffer);
hervel90 7:3b14ddcf6d8e 69 }
hervel90 7:3b14ddcf6d8e 70 int x=atoi(buffer);
davidqpinho 8:eaae889bc6eb 71
davidqpinho 8:eaae889bc6eb 72 rotate_servo(x);
davidqpinho 9:ea3cfd16b4d9 73
davidqpinho 9:ea3cfd16b4d9 74 for(int i = 0; i < 2; i++){
davidqpinho 9:ea3cfd16b4d9 75 buffer[i-1] = 0;
davidqpinho 9:ea3cfd16b4d9 76 }
davidqpinho 9:ea3cfd16b4d9 77 //buffer = [];
davidqpinho 8:eaae889bc6eb 78 }
davidqpinho 8:eaae889bc6eb 79 }
davidqpinho 8:eaae889bc6eb 80
davidqpinho 8:eaae889bc6eb 81
davidqpinho 8:eaae889bc6eb 82
davidqpinho 8:eaae889bc6eb 83 void rotate_servo(int x){
davidqpinho 8:eaae889bc6eb 84 switch (x)
hervel90 7:3b14ddcf6d8e 85 {
hervel90 7:3b14ddcf6d8e 86 case 0:
hervel90 7:3b14ddcf6d8e 87 lcd.cls();
hervel90 7:3b14ddcf6d8e 88 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 89 lcd.printf("Do nothing");
hervel90 7:3b14ddcf6d8e 90
hervel90 7:3b14ddcf6d8e 91 break;
hervel90 7:3b14ddcf6d8e 92
hervel90 7:3b14ddcf6d8e 93 case 1:
hervel90 7:3b14ddcf6d8e 94 lcd.cls();
hervel90 7:3b14ddcf6d8e 95 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 96 lcd.printf("Right");
davidqpinho 8:eaae889bc6eb 97 RCOUNTERTIME;
davidqpinho 8:eaae889bc6eb 98
hervel90 7:3b14ddcf6d8e 99 break;
hervel90 7:3b14ddcf6d8e 100
hervel90 7:3b14ddcf6d8e 101 case 2:
hervel90 7:3b14ddcf6d8e 102 lcd.cls();
hervel90 7:3b14ddcf6d8e 103 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 104 lcd.printf("down & right");
davidqpinho 8:eaae889bc6eb 105 RCOUNTERTIME;
davidqpinho 8:eaae889bc6eb 106 TILTFORW;
davidqpinho 8:eaae889bc6eb 107
hervel90 7:3b14ddcf6d8e 108 break;
hervel90 7:3b14ddcf6d8e 109
hervel90 7:3b14ddcf6d8e 110 case 3:
hervel90 7:3b14ddcf6d8e 111 lcd.cls();
hervel90 7:3b14ddcf6d8e 112 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 113 lcd.printf("down");
davidqpinho 8:eaae889bc6eb 114 TILTFORW;
davidqpinho 8:eaae889bc6eb 115
hervel90 7:3b14ddcf6d8e 116 break;
hervel90 7:3b14ddcf6d8e 117
hervel90 7:3b14ddcf6d8e 118 case 4:
hervel90 7:3b14ddcf6d8e 119 lcd.cls();
hervel90 7:3b14ddcf6d8e 120 lcd.locate(0,1);
davidqpinho 8:eaae889bc6eb 121 lcd.printf("Down & left");
davidqpinho 8:eaae889bc6eb 122 RTIME;
davidqpinho 8:eaae889bc6eb 123 TILTFORW;
davidqpinho 8:eaae889bc6eb 124
hervel90 7:3b14ddcf6d8e 125 break;
hervel90 7:3b14ddcf6d8e 126
hervel90 7:3b14ddcf6d8e 127 case 5:
hervel90 7:3b14ddcf6d8e 128 lcd.cls();
hervel90 7:3b14ddcf6d8e 129 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 130 lcd.printf("left");
davidqpinho 8:eaae889bc6eb 131 RTIME;
davidqpinho 8:eaae889bc6eb 132
davidqpinho 8:eaae889bc6eb 133
davidqpinho 8:eaae889bc6eb 134
hervel90 7:3b14ddcf6d8e 135 break;
samux 0:7528379ed84d 136
hervel90 7:3b14ddcf6d8e 137 case 6:
hervel90 7:3b14ddcf6d8e 138 lcd.cls();
hervel90 7:3b14ddcf6d8e 139 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 140 lcd.printf("up & left");
davidqpinho 8:eaae889bc6eb 141 RTIME;
davidqpinho 8:eaae889bc6eb 142 TILTBACK;
davidqpinho 8:eaae889bc6eb 143
davidqpinho 8:eaae889bc6eb 144
davidqpinho 8:eaae889bc6eb 145
hervel90 7:3b14ddcf6d8e 146 break;
hervel90 7:3b14ddcf6d8e 147
hervel90 7:3b14ddcf6d8e 148 case 7:
hervel90 7:3b14ddcf6d8e 149 lcd.cls();
hervel90 7:3b14ddcf6d8e 150 lcd.locate(0,1);
hervel90 7:3b14ddcf6d8e 151 lcd.printf("up");
davidqpinho 8:eaae889bc6eb 152 TILTBACK;
davidqpinho 8:eaae889bc6eb 153
davidqpinho 8:eaae889bc6eb 154
davidqpinho 8:eaae889bc6eb 155
hervel90 7:3b14ddcf6d8e 156 break;
hervel90 7:3b14ddcf6d8e 157
hervel90 7:3b14ddcf6d8e 158 case 8:
hervel90 7:3b14ddcf6d8e 159 lcd.cls();
hervel90 7:3b14ddcf6d8e 160 lcd.locate(0,1);
davidqpinho 8:eaae889bc6eb 161 lcd.printf("up & right");
davidqpinho 8:eaae889bc6eb 162 TILTBACK;
davidqpinho 8:eaae889bc6eb 163 RCOUNTERTIME;
davidqpinho 8:eaae889bc6eb 164
davidqpinho 8:eaae889bc6eb 165
hervel90 7:3b14ddcf6d8e 166 break;
davidqpinho 8:eaae889bc6eb 167
samux 0:7528379ed84d 168 }
davidqpinho 8:eaae889bc6eb 169
davidqpinho 8:eaae889bc6eb 170 }
davidqpinho 8:eaae889bc6eb 171
davidqpinho 8:eaae889bc6eb 172