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

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

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

Кіріспе:

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

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

АҚШ (2)

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

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

АҚШ (1)

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

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

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

void TouchDetect()

{

    u16 And[3] = 0;

    u8 i = 0;

 

    үшін(i = 0;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)

    {

        //Сжасырын бет

        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

            {

                егер(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) //Ржазба беті

        {

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

            үшін(i = 0;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); //Жазба бетін енгізіңіз

        }

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

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

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

                үшін(i = 0;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

            {

                lookEatCnt++;

                үшін(i = 0;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

        {

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

            backPage = 3;

            backNum = Және;

            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

        {

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

            backPage = 3;

            backNum = Және;

            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);

        }

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

        басқа болса (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

                {

                    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

                {

                    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 ж