Programme qui permet de piloter un bandeau de LED ring (de la marque adafruit) en fonction du son qui provient d'un microphone externe. Programme fonctionnant sur un microcontrôleur DISCO-F746NG. Ce projet a était fait dans la cadre du cour d'interface de la Licence MECSE de l'IUT de Cachan.
Dependencies: TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG NeoPixel BUTTON_GROUP
test
Diff: main.cpp
- Revision:
- 12:e2bb579c4455
- Parent:
- 11:74a4d2c3870e
- Child:
- 13:075e7b811cc6
--- a/main.cpp Thu Feb 18 10:05:00 2016 +0000 +++ b/main.cpp Mon Feb 22 13:40:13 2016 +0000 @@ -1,7 +1,7 @@ //--------------------------------------------------------------- // Demo program of Button class and ButtonGroup class // -// 2016/02/18, Copyright (c) 2016 MIKAMI, Naoki +// 2016/02/22, Copyright (c) 2016 MIKAMI, Naoki //--------------------------------------------------------------- #include "button_group.hpp" @@ -30,19 +30,32 @@ ButtonGroup sw(lcd_, ts_, 10, 160, 66, 40, LCD_COLOR_GREEN, BACK_COLOR, 2, STR_SW, 5, 0, 2); - Button Large(lcd_, ts_, 280, 100, 120, 60, - LCD_COLOR_GREEN, BACK_COLOR, "LARGE", Font24); - Button reset(lcd_, ts_, 410, Y0, 60, 40, LCD_COLOR_BLUE, BACK_COLOR, "Reset", Font12); reset.Draw(INACTIVE, LCD_COLOR_GRAY); + const string MULTI[2] = {"ON", "OFF"}; + ButtonGroup multiTouch(lcd_, ts_, 300, Y0+100, 60, 40, + LCD_COLOR_BLUE, BACK_COLOR, 2, MULTI, 5, 0, 2); + multiTouch.Draw(0, LCD_COLOR_DARKBLUE); + lcd_.SetTextColor(LCD_COLOR_WHITE); - lcd_.DisplayStringAt(100, 260, (uint8_t *)"02/17 15:27", LEFT_MODE); + lcd_.SetFont(&Font16); + lcd_.DisplayStringAt(250, Y0+80, (uint8_t *)"Multi-touch ON, OFF", LEFT_MODE); + + lcd_.SetFont(&Font20); + lcd_.DisplayStringAt(120, 250, (uint8_t *)"02/22 22:36", LEFT_MODE); + + DigitalOut dOut(D7); int num; + while (true) { - if (bGroup.GetTouchedNumber(num, LCD_COLOR_DARKBLUE)) + dOut = 1; + bool touched = bGroup.GetTouchedNumber(num, LCD_COLOR_DARKBLUE); + dOut = 0; + + if (touched) { char str[20]; lcd_.SetFont(&Font16); @@ -65,6 +78,17 @@ lcd_.SetFont(&Font16); lcd_.DisplayStringAt(X1, Y1, (uint8_t *)" ", LEFT_MODE); } - wait(0.5f); + + int mNum; + if (multiTouch.GetTouchedNumber(mNum, LCD_COLOR_DARKBLUE)) + { + Button::SetMultiTouch(mNum == 0); // Set or reset multi-touch + if (mNum == 0) + lcd_.DisplayStringAt(320, Y0+150, (uint8_t *)"ON ", LEFT_MODE); + else + lcd_.DisplayStringAt(320, Y0+150, (uint8_t *)"OFF", LEFT_MODE); + } + wait(0.01f); } } +