Droni e Droidi / Mbed OS F746NG_TestAll

Dependencies:   TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG BUTTON_GROUP Arduino

Functions.h

Committer:
MaxScorda
Date:
2020-12-21
Revision:
5:19f1743cecb1
Parent:
4:0ce191d3f0ce
Child:
6:ba00a5cd9466

File content as of revision 5:19f1743cecb1:

#ifndef FUNCTIONS_H
#define FUNCTIONS_H
using namespace ButGrp;

void PressButton()
{
    static int ccont=0;
    led1= !led1;
    ccont++;
    sprintf(str, "Tasto premuto %d volte", ccont);
    BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *) str, CENTER_MODE);
}

void GestioneButton()
{
    int num;
    bool touched = bGroup.GetTouchedNumber(num, LCD_COLOR_DARKBLUE);
    const int Y0 = 5;
    const int X1 = 30;
    const int Y1 = 100;

    if (touched) {
        char str[20];
        BSP_LCD_.SetFont(&Font16);
        BSP_LCD_.SetTextColor(LCD_COLOR_WHITE);
        sprintf(str, "Button%d pressed", num+1);
        BSP_LCD_.DisplayStringAt(X1, Y1, (uint8_t *)str, LEFT_MODE);

        reset.Redraw();
    }

    if (sw.Touched(0, LCD_COLOR_DARKGREEN))
        BSP_LCD_.DisplayStringAt(X1, LINE(7), (uint8_t *)"ON ", LEFT_MODE);
    if (sw.Touched(1, LCD_COLOR_DARKGREEN))
        BSP_LCD_.DisplayStringAt(X1, LINE(7), (uint8_t *)"OFF", LEFT_MODE);

    if (reset.Touched()) {
        bGroup.Redraw(num);
        reset.Draw(INACTIVE, LCD_COLOR_GRAY);
        BSP_LCD_.SetFont(&Font16);
        BSP_LCD_.DisplayStringAt(X1, Y1, (uint8_t *)"               ", LEFT_MODE);
    }

    int mNum;
    if (multiTouch.GetTouchedNumber(mNum, LCD_COLOR_DARKBLUE)) {
        Button::SetMultiTouch(mNum == 0);   // Set or reset multi-touch
        if (mNum == 0)
            BSP_LCD_.DisplayStringAt(320, Y0+150, (uint8_t *)"ON ", LEFT_MODE);
        else
            BSP_LCD_.DisplayStringAt(320, Y0+150, (uint8_t *)"OFF", LEFT_MODE);
    }
    wait(0.01f);

}

void GestioneTouch()
{
    static uint16_t x=0, y=0;
    uint8_t cleared = 0;
    uint8_t prev_nb_touches = 0;
    BSP_TS_GetState(&TS_State);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
    BSP_LCD_.SetFont(&Font16);
    if (TS_State.touchDetected) {
        // Clear lines corresponding to old touches coordinates
        if (TS_State.touchDetected < prev_nb_touches) {
            for (int idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
                BSP_LCD_ClearStringLine(idx);
            }
        }
        prev_nb_touches = TS_State.touchDetected;
        cleared = 0;
        sprintf(str, "Touches: %d", TS_State.touchDetected);
        BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)str, LEFT_MODE);

        BSP_LCD_DrawPixel(x, y, LCD_COLOR_BLACK);
        for (int idx = 0; idx < TS_State.touchDetected; idx++) {
            x = TS_State.touchX[idx];
            y = TS_State.touchY[idx];
            sprintf(str, "Touch %d: x=%d y=%d    ", idx+1, x, y);
            BSP_LCD_DisplayStringAt(50, LINE(idx+4), (uint8_t *)str, LEFT_MODE);
        }

        BSP_LCD_DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_WHITE);
    } else {
        if (!cleared) {
            sprintf(str, "Touches: 0");
            BSP_LCD_DisplayStringAt(50, LINE(3), (uint8_t *)&str, LEFT_MODE);
            cleared = 1;
        }
    }
}

void SetLayer(int numlayer)
{
    // vedere come passare BSPLCD_
    for (int idx = 0; idx < NUMLAYER; idx++) {
        //  sprintf(str, "Touches: %d",idx);
        BSP_LCD_DisplayStringAt(0, LINE(12+idx), (uint8_t *)&str, LEFT_MODE);
        if (idx==numlayer) {
            BSP_LCD_SelectLayer(idx);
            BSP_LCD_SetLayerVisible(idx, ENABLE);
            //   BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"ON", RIGHT_MODE);
        } else {
            BSP_LCD_SetLayerVisible(idx, DISABLE);
            //      BSP_LCD_DisplayStringAt(50, LINE(12+idx), (uint8_t *)"OFF", RIGHT_MODE);
        }
    }
}

#endif