Rick McConney
/
stripReader
Proximity strip reader
Fork of StarterKit by
main.cpp@46:69966d555de7, 2017-04-21 (annotated)
- Committer:
- elmkom
- Date:
- Fri Apr 21 17:58:35 2017 +0000
- Revision:
- 46:69966d555de7
- Parent:
- 45:fe90f1fcb4e0
Proximity strip reader
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JMF | 0:9d5134074d84 | 1 | #include "mbed.h" |
JMF | 0:9d5134074d84 | 2 | #include <cctype> |
elmkom | 44:60008ebffdd4 | 3 | #include "att160826.h" |
elmkom | 42:8500f0cb2ea5 | 4 | |
elmkom | 44:60008ebffdd4 | 5 | I2C *myi2c; |
elmkom | 41:85a736a9b900 | 6 | |
elmkom | 44:60008ebffdd4 | 7 | att160826_data_t strip_data[2]; |
elmkom | 44:60008ebffdd4 | 8 | att160826_data_t last_data[2]; |
elmkom | 46:69966d555de7 | 9 | ATT160826 *strips[4]; |
elmkom | 46:69966d555de7 | 10 | |
elmkom | 36:f8d96ff1dd1b | 11 | |
JMF | 0:9d5134074d84 | 12 | // comment out the following line if color is not supported on the terminal |
JMF | 0:9d5134074d84 | 13 | #define USE_COLOR |
JMF | 0:9d5134074d84 | 14 | #ifdef USE_COLOR |
JMF | 0:9d5134074d84 | 15 | #define BLK "\033[30m" |
JMF | 0:9d5134074d84 | 16 | #define RED "\033[31m" |
JMF | 0:9d5134074d84 | 17 | #define GRN "\033[32m" |
JMF | 0:9d5134074d84 | 18 | #define YEL "\033[33m" |
JMF | 0:9d5134074d84 | 19 | #define BLU "\033[34m" |
JMF | 0:9d5134074d84 | 20 | #define MAG "\033[35m" |
JMF | 0:9d5134074d84 | 21 | #define CYN "\033[36m" |
JMF | 0:9d5134074d84 | 22 | #define WHT "\033[37m" |
JMF | 0:9d5134074d84 | 23 | #define DEF "\033[39m" |
JMF | 0:9d5134074d84 | 24 | #else |
JMF | 0:9d5134074d84 | 25 | #define BLK |
JMF | 0:9d5134074d84 | 26 | #define RED |
JMF | 0:9d5134074d84 | 27 | #define GRN |
JMF | 0:9d5134074d84 | 28 | #define YEL |
JMF | 0:9d5134074d84 | 29 | #define BLU |
JMF | 0:9d5134074d84 | 30 | #define MAG |
JMF | 0:9d5134074d84 | 31 | #define CYN |
JMF | 0:9d5134074d84 | 32 | #define WHT |
JMF | 0:9d5134074d84 | 33 | #define DEF |
JMF | 0:9d5134074d84 | 34 | #endif |
JMF | 0:9d5134074d84 | 35 | |
JMF | 0:9d5134074d84 | 36 | |
JMF | 0:9d5134074d84 | 37 | Serial pc(USBTX, USBRX); |
elmkom | 42:8500f0cb2ea5 | 38 | |
stefanrousseau | 16:17c5916f2d12 | 39 | DigitalOut led_green(LED_GREEN); |
stefanrousseau | 16:17c5916f2d12 | 40 | DigitalOut led_red(LED_RED); |
stefanrousseau | 16:17c5916f2d12 | 41 | DigitalOut led_blue(LED_BLUE); |
JMF | 0:9d5134074d84 | 42 | |
JMF | 0:9d5134074d84 | 43 | |
elmkom | 46:69966d555de7 | 44 | bool toggleLed = false; |
elmkom | 45:fe90f1fcb4e0 | 45 | |
elmkom | 36:f8d96ff1dd1b | 46 | |
elmkom | 38:532a0d929756 | 47 | |
elmkom | 36:f8d96ff1dd1b | 48 | //******************************************************************************************************************************************** |
elmkom | 36:f8d96ff1dd1b | 49 | //* Set the RGB LED's Color |
elmkom | 36:f8d96ff1dd1b | 50 | //* LED Color 0=Off to 7=White. 3 bits represent BGR (bit0=Red, bit1=Green, bit2=Blue) |
elmkom | 36:f8d96ff1dd1b | 51 | //******************************************************************************************************************************************** |
elmkom | 36:f8d96ff1dd1b | 52 | void SetLedColor(unsigned char ucColor) |
elmkom | 35:2e864bae3af0 | 53 | { |
elmkom | 42:8500f0cb2ea5 | 54 | |
elmkom | 46:69966d555de7 | 55 | led_red = !(ucColor & 0x1); //bit 0 |
elmkom | 46:69966d555de7 | 56 | led_green = !(ucColor & 0x2); //bit 1 |
elmkom | 46:69966d555de7 | 57 | led_blue = !(ucColor & 0x4); //bit 2 |
JMF | 0:9d5134074d84 | 58 | |
elmkom | 46:69966d555de7 | 59 | } //SetLedColor() |
stefanrousseau | 12:7c94ec5069dc | 60 | |
elmkom | 44:60008ebffdd4 | 61 | |
elmkom | 44:60008ebffdd4 | 62 | |
stefanrousseau | 16:17c5916f2d12 | 63 | |
elmkom | 40:45e4636d20cc | 64 | |
elmkom | 46:69966d555de7 | 65 | void scanStrip(int id) |
elmkom | 40:45e4636d20cc | 66 | { |
elmkom | 44:60008ebffdd4 | 67 | ATT160826& strip = *strips[id]; |
elmkom | 44:60008ebffdd4 | 68 | att160826_data_t *data = &strip_data[id]; |
elmkom | 44:60008ebffdd4 | 69 | bool ok = strip.scan(data); |
elmkom | 44:60008ebffdd4 | 70 | |
elmkom | 44:60008ebffdd4 | 71 | if(ok) |
elmkom | 44:60008ebffdd4 | 72 | { |
elmkom | 46:69966d555de7 | 73 | printf("%d : ",id); |
elmkom | 46:69966d555de7 | 74 | for (int i = 0; i < SENSORS_PER_STRIP;i++) { |
elmkom | 46:69966d555de7 | 75 | |
elmkom | 44:60008ebffdd4 | 76 | if (strip_data[id].sensor[i].present) { |
elmkom | 46:69966d555de7 | 77 | printf(" [%3d %3d %3d] ", strip_data[id].sensor[i].sample.prox, |
elmkom | 46:69966d555de7 | 78 | strip_data[id].sensor[i].sample.als_vis, |
elmkom | 46:69966d555de7 | 79 | strip_data[id].sensor[i].sample.als_ir); |
elmkom | 44:60008ebffdd4 | 80 | } else { |
elmkom | 44:60008ebffdd4 | 81 | printf(" %3s", "---"); |
elmkom | 44:60008ebffdd4 | 82 | } |
elmkom | 44:60008ebffdd4 | 83 | } |
elmkom | 44:60008ebffdd4 | 84 | } |
elmkom | 44:60008ebffdd4 | 85 | else |
elmkom | 44:60008ebffdd4 | 86 | printf("scan of strip %d failed",id); |
elmkom | 46:69966d555de7 | 87 | printf("\r\n"); |
elmkom | 44:60008ebffdd4 | 88 | } |
elmkom | 35:2e864bae3af0 | 89 | |
stefanrousseau | 11:e6602513730f | 90 | |
elmkom | 46:69966d555de7 | 91 | int main() { |
elmkom | 46:69966d555de7 | 92 | |
elmkom | 46:69966d555de7 | 93 | pc.baud(115200); |
elmkom | 44:60008ebffdd4 | 94 | |
elmkom | 46:69966d555de7 | 95 | myi2c = new I2C(PTC11, PTC10); |
elmkom | 44:60008ebffdd4 | 96 | myi2c->frequency(100000); |
elmkom | 46:69966d555de7 | 97 | ATT160826 strip0 (myi2c, 0 ); |
elmkom | 46:69966d555de7 | 98 | ATT160826 strip1 (myi2c, 1 ); |
elmkom | 46:69966d555de7 | 99 | ATT160826 strip2 (myi2c, 2 ); |
elmkom | 46:69966d555de7 | 100 | ATT160826 strip3 (myi2c, 3 ); |
elmkom | 44:60008ebffdd4 | 101 | strips[0] = &strip0; |
elmkom | 44:60008ebffdd4 | 102 | strips[1] = &strip1; |
elmkom | 46:69966d555de7 | 103 | strips[2] = &strip2; |
elmkom | 46:69966d555de7 | 104 | strips[3] = &strip3; |
elmkom | 45:fe90f1fcb4e0 | 105 | |
elmkom | 46:69966d555de7 | 106 | pc.printf(GRN "I2c init \n\r"); |
elmkom | 46:69966d555de7 | 107 | |
JMF | 2:0e2ef866af95 | 108 | while(1) { |
elmkom | 38:532a0d929756 | 109 | |
elmkom | 41:85a736a9b900 | 110 | toggleLed = !toggleLed; |
elmkom | 41:85a736a9b900 | 111 | if(toggleLed) |
elmkom | 41:85a736a9b900 | 112 | SetLedColor(0x2); //green |
elmkom | 41:85a736a9b900 | 113 | else |
elmkom | 46:69966d555de7 | 114 | SetLedColor(0); //off |
elmkom | 41:85a736a9b900 | 115 | |
elmkom | 46:69966d555de7 | 116 | scanStrip(0); |
elmkom | 46:69966d555de7 | 117 | // scanStrip(1); |
elmkom | 46:69966d555de7 | 118 | // scanStrip(2); |
elmkom | 46:69966d555de7 | 119 | // scanStrip(3); |
elmkom | 46:69966d555de7 | 120 | |
elmkom | 46:69966d555de7 | 121 | |
elmkom | 46:69966d555de7 | 122 | wait(1); |
stefanrousseau | 3:26b3cc155f39 | 123 | } //forever loop |
JMF | 0:9d5134074d84 | 124 | } |