TSL3301
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
Fork of DISCO-F746NG_TSL3301 by
Diff: main.cpp
- Revision:
- 2:6d7063605e3a
- Parent:
- 1:979d4820e32a
- Child:
- 3:cb16c3af98de
--- a/main.cpp Tue Mar 06 13:04:48 2018 +0000 +++ b/main.cpp Tue Mar 20 12:06:47 2018 +0000 @@ -1,10 +1,16 @@ #include "mbed.h" +#include "TS_DISCO_F746NG.h" +#include "LCD_DISCO_F746NG.h" + +LCD_DISCO_F746NG lcd; +int line = 1; DigitalIn miso(D8); DigitalOut mosi(D7); DigitalOut clk(D6); unsigned char lcam_buffer[102]; +unsigned char max_area; void lcam_pulse(void) { clk = 1; @@ -133,9 +139,53 @@ } } +unsigned char lcam_getpic(void) +{ + unsigned char i, value, highest = 0, max_region = 0; + unsigned int average = 0; + for(i = 0; i < 25; i++) + { + // take 4-byte average and divide by 4 (shift to right by 2) + value = ((lcam_buffer[i*4] + lcam_buffer[i*4+1] + lcam_buffer[i*4+2] + lcam_buffer[i*4+3]) >> 2); + if(value > highest) + { + highest = value; + max_region = i; + } + average += value; + } + + average /= 25; + + if(highest > average + 30) + { + return max_region; + } + else + { + return 0; + } +} + int main() { lcam_setup(); while(1) { - + if (line == 10){ + line = 1; + } + + lcd.Clear(LCD_COLOR_WHITE); + lcd.SetBackColor(LCD_COLOR_WHITE); + lcd.SetTextColor(LCD_COLOR_RED); + + lcam_integrate(10); + + lcam_read(); + + max_area = lcam_getpic(); + + lcd.DisplayStringAt(0, LINE(line), (uint8_t *)max_area, CENTER_MODE); + line +=1; + wait_ms(200); } }