Proximity strip reader

Dependencies:   mbed sfh7779

Fork of StarterKit by Rick McConney

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?

UserRevisionLine numberNew 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 }