photocell to led matrix touch display
Dependencies: mbed Adafruit_LEDBackpack USBDevice
main.cpp@0:c88ac8c87673, 2018-12-05 (annotated)
- Committer:
- chessemaster5000
- Date:
- Wed Dec 05 22:18:09 2018 +0000
- Revision:
- 0:c88ac8c87673
Never Eat Pears
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chessemaster5000 | 0:c88ac8c87673 | 1 | #include "mbed.h" |
chessemaster5000 | 0:c88ac8c87673 | 2 | #include "Adafruit_LEDBackpack.h" |
chessemaster5000 | 0:c88ac8c87673 | 3 | #include "Adafruit_GFX.h" |
chessemaster5000 | 0:c88ac8c87673 | 4 | |
chessemaster5000 | 0:c88ac8c87673 | 5 | I2C i2c(p9, p10); //declare led matrix 12c ports |
chessemaster5000 | 0:c88ac8c87673 | 6 | |
chessemaster5000 | 0:c88ac8c87673 | 7 | Adafruit_8x8matrix matrix = Adafruit_8x8matrix(&i2c); //set up matrix |
chessemaster5000 | 0:c88ac8c87673 | 8 | //AnalogIn sensor0(p16); |
chessemaster5000 | 0:c88ac8c87673 | 9 | //AnalogIn sensor1(p17); |
chessemaster5000 | 0:c88ac8c87673 | 10 | //AnalogIn sensor2(p18); // declare photocells and their pins |
chessemaster5000 | 0:c88ac8c87673 | 11 | //AnalogIn sensor3(p19); |
chessemaster5000 | 0:c88ac8c87673 | 12 | //AnalogIn sensor4(p20); |
chessemaster5000 | 0:c88ac8c87673 | 13 | //DigitalOut pin8 (p8); //power |
chessemaster5000 | 0:c88ac8c87673 | 14 | |
chessemaster5000 | 0:c88ac8c87673 | 15 | AnalogIn cell0(p15); |
chessemaster5000 | 0:c88ac8c87673 | 16 | AnalogIn cell1(p16); |
chessemaster5000 | 0:c88ac8c87673 | 17 | AnalogIn cell2(p17); |
chessemaster5000 | 0:c88ac8c87673 | 18 | AnalogIn cell3(p18); |
chessemaster5000 | 0:c88ac8c87673 | 19 | AnalogIn cell4(p19); |
chessemaster5000 | 0:c88ac8c87673 | 20 | AnalogIn cell5(p20); |
chessemaster5000 | 0:c88ac8c87673 | 21 | DigitalOut pin8(p8); |
chessemaster5000 | 0:c88ac8c87673 | 22 | |
chessemaster5000 | 0:c88ac8c87673 | 23 | float threshold = 0.2; //Whatever makes a good sensitivity level |
chessemaster5000 | 0:c88ac8c87673 | 24 | |
chessemaster5000 | 0:c88ac8c87673 | 25 | int leds[8][8]; |
chessemaster5000 | 0:c88ac8c87673 | 26 | int row; |
chessemaster5000 | 0:c88ac8c87673 | 27 | int col; |
chessemaster5000 | 0:c88ac8c87673 | 28 | |
chessemaster5000 | 0:c88ac8c87673 | 29 | int main() { |
chessemaster5000 | 0:c88ac8c87673 | 30 | matrix.begin(0x70); |
chessemaster5000 | 0:c88ac8c87673 | 31 | pin8=1; //power on |
chessemaster5000 | 0:c88ac8c87673 | 32 | |
chessemaster5000 | 0:c88ac8c87673 | 33 | while(1) { |
chessemaster5000 | 0:c88ac8c87673 | 34 | for (row = 7; row >=1; row--) |
chessemaster5000 | 0:c88ac8c87673 | 35 | for (col = 0; col <=7; col++) |
chessemaster5000 | 0:c88ac8c87673 | 36 | leds[row][col] = leds[row+1][col]; // These nested loops move everything down one row, except the top row |
chessemaster5000 | 0:c88ac8c87673 | 37 | |
chessemaster5000 | 0:c88ac8c87673 | 38 | leds[0][0] = (int)(cell0 + threshold); // These assignments fill the top row with the cell values |
chessemaster5000 | 0:c88ac8c87673 | 39 | leds[0][1] = (int)(cell1 + threshold); // Each value should be 0 or 1 |
chessemaster5000 | 0:c88ac8c87673 | 40 | leds[0][2] = (int)(cell2 + threshold); |
chessemaster5000 | 0:c88ac8c87673 | 41 | leds[0][3] = (int)(cell3 + threshold); |
chessemaster5000 | 0:c88ac8c87673 | 42 | leds[0][4] = (int)(cell4 + threshold); |
chessemaster5000 | 0:c88ac8c87673 | 43 | leds[0][5] = (int)(cell5 + threshold); |
chessemaster5000 | 0:c88ac8c87673 | 44 | |
chessemaster5000 | 0:c88ac8c87673 | 45 | printf("Value0 = %f\r\n", cell0.read()); |
chessemaster5000 | 0:c88ac8c87673 | 46 | printf("Value1 = %f\r\n", cell1.read()); |
chessemaster5000 | 0:c88ac8c87673 | 47 | printf("Value2 = %f\r\n", cell2.read()); |
chessemaster5000 | 0:c88ac8c87673 | 48 | printf("Value3 = %f\r\n", cell3.read()); |
chessemaster5000 | 0:c88ac8c87673 | 49 | printf("Value4 = %f\r\n", cell4.read()); |
chessemaster5000 | 0:c88ac8c87673 | 50 | wait(1.0); |
chessemaster5000 | 0:c88ac8c87673 | 51 | |
chessemaster5000 | 0:c88ac8c87673 | 52 | matrix.clear(); |
chessemaster5000 | 0:c88ac8c87673 | 53 | |
chessemaster5000 | 0:c88ac8c87673 | 54 | if(cell0 <= 0.2){ |
chessemaster5000 | 0:c88ac8c87673 | 55 | matrix.drawPixel (0, 0, LED_ON);} |
chessemaster5000 | 0:c88ac8c87673 | 56 | else matrix.drawPixel (0, 0, LED_OFF); |
chessemaster5000 | 0:c88ac8c87673 | 57 | |
chessemaster5000 | 0:c88ac8c87673 | 58 | if(cell1 <= 0.2){ |
chessemaster5000 | 0:c88ac8c87673 | 59 | matrix.drawPixel (1, 0, LED_ON);} |
chessemaster5000 | 0:c88ac8c87673 | 60 | else matrix.drawPixel (1, 0, LED_OFF); |
chessemaster5000 | 0:c88ac8c87673 | 61 | |
chessemaster5000 | 0:c88ac8c87673 | 62 | if(cell2 <= 0.2){ |
chessemaster5000 | 0:c88ac8c87673 | 63 | matrix.drawPixel (2, 0, LED_ON);} |
chessemaster5000 | 0:c88ac8c87673 | 64 | else matrix.drawPixel (2, 0, LED_OFF); |
chessemaster5000 | 0:c88ac8c87673 | 65 | |
chessemaster5000 | 0:c88ac8c87673 | 66 | if(cell3 <= 0.2){ |
chessemaster5000 | 0:c88ac8c87673 | 67 | matrix.drawPixel (3, 0, LED_ON);} |
chessemaster5000 | 0:c88ac8c87673 | 68 | else matrix.drawPixel (3, 0, LED_OFF); |
chessemaster5000 | 0:c88ac8c87673 | 69 | |
chessemaster5000 | 0:c88ac8c87673 | 70 | if(cell4 <= 0.2){ |
chessemaster5000 | 0:c88ac8c87673 | 71 | matrix.drawPixel (4, 0, LED_ON);} |
chessemaster5000 | 0:c88ac8c87673 | 72 | else matrix.drawPixel (4, 0, LED_OFF); |
chessemaster5000 | 0:c88ac8c87673 | 73 | |
chessemaster5000 | 0:c88ac8c87673 | 74 | matrix.writeDisplay(); // write the changes we just made to the display |
chessemaster5000 | 0:c88ac8c87673 | 75 | wait(0.2); |
chessemaster5000 | 0:c88ac8c87673 | 76 | } |
chessemaster5000 | 0:c88ac8c87673 | 77 | } |