[Жеңімпаз оқиға] Мысық тағамын басқарудың интеллектуалды жүйесі

——DWIN әзірлеушілер форумынан

Бұл шығарылымда біз сізге DWIN әзірлеушілер форумының жүлделі ашық бастапқы кодымен таныстырамыз: Мысық тағамын басқарудың интеллектуалды жүйесі.Инженерлер DWIN смарт экранын мысық тағамының температурасын, ылғалдылығын және қалған мөлшерін бақылау үшін және мысықтың тамақ жеу жазбаларын сақтау үшін пайдаланды.Сондай-ақ, олар сенсорлық кері байланысты көрнекі қабылдауды жақсарту үшін сия кескіндеме стилінің UI жиынтығын, сондай-ақ саусақпен түрткен кезде сияны басу эффектісін бірегей етіп жасады.

Кіріспе:

1.UI сурет материалы

DWIN смарт экраны экран дисплейінің мазмұнына сәйкес алдын ала дайындалуы қажет суреттер, аудио және басқа материалдар негізінде UI әзірлеуін аяқтайды.

asv (2)

2.Интерфейсті дамыту

DGUS бағдарламалық құралы қабат қабаты арқылы UI әсерін қалпына келтіреді, дайындалған материалдарды DGUS бағдарламалық құралында толық суретке біріктіреді және дисплей мен түрту функцияларын орнатады.

asv (1)

3. Басу әсерлері мен дыбыс әсерлерін енгізіңіз

Сенсорлық позиция 51 бағдарламасы арқылы алынады, басу әсері саусақтың қозғалысына сәйкес келеді, сонымен қатар перне сүйемелдеуінің дыбыс әсеріне қол жеткізіледі.

(1) Сенсорлық орын кодын анықтап, дыбысты ойнату:

void TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

    үшін(i = 0;i < 3;i++)

    {

        Va[i] = Read_Dgus(0x0016 + i);

        егер(Va[0] == 0x5A01)

        {

        }

        басқа

        {

            үзіліс;

        }

    }

    if(i != 0) //Енгізу үшін алдымен басыңыз

    {

        u16 ойнату[2] = {0x0001, 0x4000};

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, ойнату, 2);

    }

}

 

(2) Сенсорлық әсерді көрсету коды келесідей:

жарамсыз TouchStart()

{

    if(touchAnimationFlag == 1)

    {

        if(touchAnimationCnt == 0)

        {

            Write_Dgus(0x5011, touchPosX - 100);

            Write_Dgus(0x5012, touchPosY - 100);

        }

 

        Write_Dgus(0x5000, touchAnimationCnt);

        touchAnimationCnt++;

 

        if(touchAnimationCnt == 6)

        {

            touchAnimationFlag = 0;

            Write_Dgus(0x5011, 1024);

            Write_Dgus(0x5012, 600);

        }

    }

    

}

 

4. Келесі қадам - ​​экран арқылы сәйкес параметрлерді орнату, содан кейін мысық тамағын автоматты түрде беру функциясын жүзеге асыру үшін деректерді ESP32 арқылы мысық тағамын басқару құралына жіберу.Арнайы код келесідей:

//Түйменің күйін алу

get_key_status() жарамсыз

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    егер(Va != 0x0000)

    {

        //Sтату беті

        if(Va == 0x0103) //g санын қойыңыз

        {

            u16 ауысу беті[2] = {0x5A01, 19};

            setNum = placeGramNum;

            backPage = 1;//Күй бетіне оралу

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, ауысу беті, 2);

        }

        басқа егер(Va == 0x0102)

        {

            OneSendData3(placeGramNum);//Орынмысық тамағыбір рет

        }

        else if(Va == 0x0101) //Баптау беті

        {

            u16 ауысу беті[2] = {0x5A01, 3};

            үшін(i = 0;i < 6;i++)

            {

                егер(i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, currentTime[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, CurrentTime[i] / 10 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 4, ағымдағыУақыт[i] / 100 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, CurrentTime[i] / 1000 % 10);

                }

                басқа

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, currentTime[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, CurrentTime[i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, ауысу беті, 2);//Параметрлер бетіне кіріңіз

        }

        басқа болса (Va == 0x0100) //Rжазба беті

        {

            u16 ауысу беті[2] = {0x5A01, 2};

            үшін(i = 0;i < 6;i++)

            {

                егер(i == 0)

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[0][i] / 100 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[0][i] / 1000 % 10);

                }

                басқа

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, ауысу беті, 2);//Жазба бетін енгізіңіз

        }

        //Rжазба беті

        else if(Va == 0x0201) //Алдыңғы бетті жазу

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

                үшін(i = 0;i < 6;i++)

                {

                    егер(i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    басқа

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        else if(Va == 0x0202) //Жазба беті келесі бет

        {

            if(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

                үшін(i = 0;i < 6;i++)

                {

                    егер(i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    басқа

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        //Баптау беті

        басқа егер(Va == 0x0302)

        {

            егер(уақыт режимі == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        басқа егер(Va == 0x0303)

        {

            егер(уақыт режимі == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        басқа болса(Va >= 0x0304 && Va <= 0x0309)

        {

            u16 ауысу беті[2] = {0x5A01, 19};

            backPage = 3;

            backNum = Va;

            setNum = timrIntervalHour[Va - 0x0304];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, ауысу беті, 2);

        }

        басқа болса(Va >= 0x030A && Va <= 0x030F)

        {

            u16 ауысу беті[2] = {0x5A01, 19};

            backPage = 3;

            backNum = Va;

            setNum = ағымдағыУақыт[Va - 0x030A];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, ауысу беті, 2);

        }

        //Aдеректер бетін реттеу

        басқа болса (Va == 0x0400) //Растау

        {

            u16 ауысу беті[2] = {0x5A01, 0x0000};

            ауысу беті[1] = кері бет;

            if(backPage == 1) //Күй бетіне оралу

            {

                placeGramNum = setNum;

                Write_Dgus(0x1140 + 0, placeGramNum % 10);

                Write_Dgus(0x1140 + 2, placeGramNum / 10 % 10);

            }

            басқа болса (артқы бет == 3)

            {

                if(backNum >= 0x0304 && backNum <= 0x0309)

                {

                    u16 таңдау = 0;

                    таңдаңыз = (backNum - 0x0304) * 0x10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + таңдау + 0, setNum % 10);

                    Write_Dgus(0x3010 + таңдау + 2, setNum / 10 % 10);

                }

                else if(backNum >= 0x030A && backNum <= 0x030F)

                {

                    u16 таңдау = 0;

                    таңдаңыз = (backNum - 0x0304) * 0x10;

                    currentTime[backNum - 0x030A] = setNum;

                    

                    егер(backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + таңдау + 0, setNum % 10);

                        Write_Dgus(0x3010 + таңдау + 2, setNum / 10 % 10);

                        Write_Dgus(0x3010 + таңдау + 4, setNum / 100 % 10);

                        Write_Dgus(0x3010 + таңдау + 6, setNum / 1000 % 10);

                    }

                    басқа

                    {

                        Write_Dgus(0x3010 + таңдау + 0, setNum % 10);

                        Write_Dgus(0x3010 + таңдау + 2, setNum / 10 % 10);

                    }

                }

            }

            write_dgus_vp(0x0084, ауысу беті, 2);

        }

        басқа егер(Va == 0x0401) //Артқа

        {

            u16 ауысу беті[2] = {0x5A01, 0x0000};

            ауысу беті[1] = кері бет;

            write_dgus_vp(0x0084, ауысу беті, 2);

        }

        else if(Va == 0x0402) //Сандық өсу

        {

            setNum++;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        else if(Va == 0x0403) //Сандық азаю

        {

            if(setNum > 0)

                setNum--;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        

        Write_Dgus(0x1000, 0);

    }

}


Жіберу уақыты: 19 қыркүйек 2023 ж