NervousPuppySprintTwo
Dependencies: C12832_lcd Servo USBHost mbed
Fork of USBHostSerial_HelloWorld by
main.cpp@9:ea3cfd16b4d9, 2015-03-05 (annotated)
- Committer:
- davidqpinho
- Date:
- Thu Mar 05 16:26:57 2015 +0000
- Revision:
- 9:ea3cfd16b4d9
- Parent:
- 8:eaae889bc6eb
- Child:
- 10:0aa55bd3be36
Code updated 05-03
Who changed what in which revision?
User | Revision | Line number | New 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 | |
davidqpinho | 9:ea3cfd16b4d9 | 6 | #define RCOUNTERTIME if(posx<=1500) posx+=40; |
davidqpinho | 9:ea3cfd16b4d9 | 7 | #define RTIME if(posx>=500) posx-=40; |
davidqpinho | 9:ea3cfd16b4d9 | 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 |