final
Dependencies: Servo TSI mbed-rtos mbed
main.cpp@0:ab66364231c8, 2016-12-02 (annotated)
- Committer:
- backman
- Date:
- Fri Dec 02 13:06:19 2016 +0000
- Revision:
- 0:ab66364231c8
final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
backman | 0:ab66364231c8 | 1 | #include "mbed.h" |
backman | 0:ab66364231c8 | 2 | #include "Servo.h" |
backman | 0:ab66364231c8 | 3 | #include "TSISensor.h" |
backman | 0:ab66364231c8 | 4 | #include "rtos.h" |
backman | 0:ab66364231c8 | 5 | DigitalOut ledR(LED1); |
backman | 0:ab66364231c8 | 6 | DigitalOut ledG(LED2); |
backman | 0:ab66364231c8 | 7 | DigitalOut ledB(LED3); |
backman | 0:ab66364231c8 | 8 | |
backman | 0:ab66364231c8 | 9 | I2CSlave slave(PTE0,PTE1); |
backman | 0:ab66364231c8 | 10 | Servo s(PTB0); |
backman | 0:ab66364231c8 | 11 | |
backman | 0:ab66364231c8 | 12 | |
backman | 0:ab66364231c8 | 13 | |
backman | 0:ab66364231c8 | 14 | TSISensor tsi; |
backman | 0:ab66364231c8 | 15 | |
backman | 0:ab66364231c8 | 16 | |
backman | 0:ab66364231c8 | 17 | bool strCmp(char*a, char*b){ |
backman | 0:ab66364231c8 | 18 | |
backman | 0:ab66364231c8 | 19 | |
backman | 0:ab66364231c8 | 20 | |
backman | 0:ab66364231c8 | 21 | int ptr=0; |
backman | 0:ab66364231c8 | 22 | bool flag=true; |
backman | 0:ab66364231c8 | 23 | for(;a[ptr]!='\0'||b[ptr]!='\0';ptr++){ |
backman | 0:ab66364231c8 | 24 | if(a[ptr]!=b[ptr]){ |
backman | 0:ab66364231c8 | 25 | flag=false; |
backman | 0:ab66364231c8 | 26 | break; |
backman | 0:ab66364231c8 | 27 | } |
backman | 0:ab66364231c8 | 28 | } |
backman | 0:ab66364231c8 | 29 | |
backman | 0:ab66364231c8 | 30 | |
backman | 0:ab66364231c8 | 31 | return flag; |
backman | 0:ab66364231c8 | 32 | |
backman | 0:ab66364231c8 | 33 | } |
backman | 0:ab66364231c8 | 34 | |
backman | 0:ab66364231c8 | 35 | |
backman | 0:ab66364231c8 | 36 | void ledCtl(char* str){ |
backman | 0:ab66364231c8 | 37 | |
backman | 0:ab66364231c8 | 38 | if(strCmp(str,"R")){ |
backman | 0:ab66364231c8 | 39 | ledR=0; |
backman | 0:ab66364231c8 | 40 | |
backman | 0:ab66364231c8 | 41 | } |
backman | 0:ab66364231c8 | 42 | else if(strCmp(str,"G")) |
backman | 0:ab66364231c8 | 43 | ledG=0; |
backman | 0:ab66364231c8 | 44 | else if(strCmp(str,"B")) |
backman | 0:ab66364231c8 | 45 | ledB=0; |
backman | 0:ab66364231c8 | 46 | else if(strCmp(str,"T")) |
backman | 0:ab66364231c8 | 47 | ledR=1; |
backman | 0:ab66364231c8 | 48 | else if(strCmp(str,"H")) |
backman | 0:ab66364231c8 | 49 | ledG=1; |
backman | 0:ab66364231c8 | 50 | else if(strCmp(str,"N")) |
backman | 0:ab66364231c8 | 51 | ledB=1; |
backman | 0:ab66364231c8 | 52 | else{ |
backman | 0:ab66364231c8 | 53 | ledR=ledG=ledB=1; |
backman | 0:ab66364231c8 | 54 | |
backman | 0:ab66364231c8 | 55 | } |
backman | 0:ab66364231c8 | 56 | |
backman | 0:ab66364231c8 | 57 | } |
backman | 0:ab66364231c8 | 58 | |
backman | 0:ab66364231c8 | 59 | |
backman | 0:ab66364231c8 | 60 | void servoCtl(char* str){ |
backman | 0:ab66364231c8 | 61 | float ang= (float) str[0]; |
backman | 0:ab66364231c8 | 62 | s.angle(ang); |
backman | 0:ab66364231c8 | 63 | |
backman | 0:ab66364231c8 | 64 | |
backman | 0:ab66364231c8 | 65 | } |
backman | 0:ab66364231c8 | 66 | |
backman | 0:ab66364231c8 | 67 | |
backman | 0:ab66364231c8 | 68 | |
backman | 0:ab66364231c8 | 69 | void ble_i2c(void const *args) { |
backman | 0:ab66364231c8 | 70 | |
backman | 0:ab66364231c8 | 71 | char buf[20]; |
backman | 0:ab66364231c8 | 72 | char msg[] = "Backman!"; |
backman | 0:ab66364231c8 | 73 | slave.address(0xBA); |
backman | 0:ab66364231c8 | 74 | |
backman | 0:ab66364231c8 | 75 | |
backman | 0:ab66364231c8 | 76 | while (true) { |
backman | 0:ab66364231c8 | 77 | |
backman | 0:ab66364231c8 | 78 | int i = slave.receive(); |
backman | 0:ab66364231c8 | 79 | switch (i) { |
backman | 0:ab66364231c8 | 80 | case I2CSlave::ReadAddressed: |
backman | 0:ab66364231c8 | 81 | slave.write(msg, strlen(msg) + 1); // Includes null char |
backman | 0:ab66364231c8 | 82 | break; |
backman | 0:ab66364231c8 | 83 | case I2CSlave::WriteGeneral: |
backman | 0:ab66364231c8 | 84 | slave.read(buf, 20); |
backman | 0:ab66364231c8 | 85 | printf("Read G: %s\n", buf); |
backman | 0:ab66364231c8 | 86 | break; |
backman | 0:ab66364231c8 | 87 | case I2CSlave::WriteAddressed: |
backman | 0:ab66364231c8 | 88 | |
backman | 0:ab66364231c8 | 89 | slave.read(buf, 20); |
backman | 0:ab66364231c8 | 90 | //ledCtl(buf); |
backman | 0:ab66364231c8 | 91 | servoCtl(buf); |
backman | 0:ab66364231c8 | 92 | printf("Read A: %s\r\n", buf); |
backman | 0:ab66364231c8 | 93 | break; |
backman | 0:ab66364231c8 | 94 | } |
backman | 0:ab66364231c8 | 95 | for(int i = 0; i < 20; i++) buf[i] = 0; // Clear buffer |
backman | 0:ab66364231c8 | 96 | |
backman | 0:ab66364231c8 | 97 | Thread::wait(50); |
backman | 0:ab66364231c8 | 98 | } |
backman | 0:ab66364231c8 | 99 | |
backman | 0:ab66364231c8 | 100 | |
backman | 0:ab66364231c8 | 101 | |
backman | 0:ab66364231c8 | 102 | } |
backman | 0:ab66364231c8 | 103 | |
backman | 0:ab66364231c8 | 104 | |
backman | 0:ab66364231c8 | 105 | |
backman | 0:ab66364231c8 | 106 | |
backman | 0:ab66364231c8 | 107 | |
backman | 0:ab66364231c8 | 108 | |
backman | 0:ab66364231c8 | 109 | |
backman | 0:ab66364231c8 | 110 | int main() { |
backman | 0:ab66364231c8 | 111 | |
backman | 0:ab66364231c8 | 112 | |
backman | 0:ab66364231c8 | 113 | ledR=ledG=ledB=1; |
backman | 0:ab66364231c8 | 114 | // Thread thread(ble_i2c); |
backman | 0:ab66364231c8 | 115 | |
backman | 0:ab66364231c8 | 116 | s.angle(0); |
backman | 0:ab66364231c8 | 117 | |
backman | 0:ab66364231c8 | 118 | char buf[20]; |
backman | 0:ab66364231c8 | 119 | char msg[] = "Backman!"; |
backman | 0:ab66364231c8 | 120 | slave.address(0xBA); |
backman | 0:ab66364231c8 | 121 | |
backman | 0:ab66364231c8 | 122 | |
backman | 0:ab66364231c8 | 123 | while (true) { |
backman | 0:ab66364231c8 | 124 | |
backman | 0:ab66364231c8 | 125 | int i = slave.receive(); |
backman | 0:ab66364231c8 | 126 | switch (i) { |
backman | 0:ab66364231c8 | 127 | case I2CSlave::ReadAddressed: |
backman | 0:ab66364231c8 | 128 | slave.write(msg, strlen(msg) + 1); // Includes null char |
backman | 0:ab66364231c8 | 129 | break; |
backman | 0:ab66364231c8 | 130 | case I2CSlave::WriteGeneral: |
backman | 0:ab66364231c8 | 131 | slave.read(buf, 20); |
backman | 0:ab66364231c8 | 132 | printf("Read G: %s\n", buf); |
backman | 0:ab66364231c8 | 133 | break; |
backman | 0:ab66364231c8 | 134 | case I2CSlave::WriteAddressed: |
backman | 0:ab66364231c8 | 135 | |
backman | 0:ab66364231c8 | 136 | slave.read(buf, 20); |
backman | 0:ab66364231c8 | 137 | //ledCtl(buf); |
backman | 0:ab66364231c8 | 138 | servoCtl(buf); |
backman | 0:ab66364231c8 | 139 | printf("Read A: %s\r\n", buf); |
backman | 0:ab66364231c8 | 140 | break; |
backman | 0:ab66364231c8 | 141 | } |
backman | 0:ab66364231c8 | 142 | for(int i = 0; i < 20; i++) buf[i] = 0; // Clear buffer |
backman | 0:ab66364231c8 | 143 | |
backman | 0:ab66364231c8 | 144 | |
backman | 0:ab66364231c8 | 145 | } |
backman | 0:ab66364231c8 | 146 | |
backman | 0:ab66364231c8 | 147 | |
backman | 0:ab66364231c8 | 148 | |
backman | 0:ab66364231c8 | 149 | |
backman | 0:ab66364231c8 | 150 | return 0; |
backman | 0:ab66364231c8 | 151 | |
backman | 0:ab66364231c8 | 152 | |
backman | 0:ab66364231c8 | 153 | } |