[Apbalvotais gadījums] Inteliģentā kaķu barības kontroles sistēma

——No DWIN izstrādātāju foruma

Šajā izdevumā mēs jūs iepazīstināsim ar godalgoto atvērtā pirmkoda gadījumu no DWIN izstrādātāju foruma: Intelligent Cat Food Control System.Inženieri izmantoja DWIN viedo ekrānu, lai uzraudzītu temperatūru, mitrumu un atlikušo kaķu barības daudzumu, kā arī saglabātu kaķu barības ēšanas ierakstus.Tie arī unikāli izstrādāja tintes krāsošanas stila lietotāja interfeisa komplektu, kā arī tintes klikšķa efektu, kad pieskaras ar pirkstu, lai uzlabotu pieskāriena atgriezeniskās saites vizuālo uztveri.

Ievads:

1.UI attēlu materiāls

DWIN viedais ekrāns pabeidz lietotāja interfeisa izstrādi, pamatojoties uz attēliem, audio un citiem materiāliem, kas iepriekš jāsagatavo atbilstoši ekrāna displeja saturam.

asv (2)

2. Interfeisa izstrāde

Programmatūra DGUS atjauno lietotāja interfeisa efektu, izmantojot slāņa pārklājumu, apvieno sagatavotos materiālus pilnā attēlā DGUS programmatūrā un iestata displeja un pieskāriena funkcijas.

asv (1)

3. Ieviesiet klikšķu efektus un skaņas efektus

Pieskāriena pozīcija tiek iegūta, izmantojot programmu 51, nospiešanas efekts seko pirksta kustībai, un tiek panākts arī taustiņu pavadījuma skaņas efekts.

(1) Nosakiet pieskāriena atrašanās vietas kodu un atskaņojiet audio:

nav spēkā TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

    for(i = 0;i < 3;i++)

    {

        Va[i] = Lasīt_Dgus(0x0016 + i);

        ja(Va[0] == 0x5A01)

        {

        }

        cits

        {

            pārtraukums;

        }

    }

    if(i != 0) //Pirmais noklikšķiniet, lai ievadītu

    {

        u16 play[2] = {0x0001, 0x4000};

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, atskaņot, 2);

    }

}

 

(2) Skārienefekta displeja kods ir šāds:

nederīgs 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. Nākamais solis ir iestatīt atbilstošos parametrus caur ekrānu un pēc tam pārsūtīt datus uz kaķu barības kontrolieri, izmantojot ESP32, lai realizētu kaķu barības automātiskās barošanas funkciju.Konkrētais kods ir šāds:

//Iegūt pogas statusu

spēkā neesošs get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    if(Va != 0x0000)

    {

        //Statusa lapa

        if(Va == 0x0103) //Ievietojiet g skaitli

        {

            u16 maiņas lapa[2] = {0x5A01, 19};

            setNum = placeGramNum;

            backPage = 1;//Atgriezties uz statusa lapu

            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, pārslēgšanas lapa, 2);

        }

        cits, ja(Va == 0x0102)

        {

            OneSendData3(vietaGramNum);//Vietakaķu barībavienreiz

        }

        else if(Va == 0x0101) //Iestatījumu lapa

        {

            u16 maiņas lapa[2] = {0x5A01, 3};

            for(i = 0;i < 6;i++)

            {

                ja(i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, pašreizējais laiks[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, pašreizējais laiks[i] / 10 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 4, pašreizējais laiks[i] / 100 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, pašreizējais laiks[i] / 1000 % 10);

                }

                cits

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, pašreizējais laiks[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, pašreizējais laiks[i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, pārslēgšanas lapa, 2);//Ievadiet iestatījumu lapu

        }

        else if(Va == 0x0100) //Rierakstu lapa

        {

            u16 maiņas lapa[2] = {0x5A01, 2};

            for(i = 0;i < 6;i++)

            {

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

                }

                cits

                {

                    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, pārslēgšanas lapa, 2);//Ievadiet ieraksta lapu

        }

        //Rierakstu lapa

        else if(Va == 0x0201) //Ieraksta lapas iepriekšējā lapa

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

                for(i = 0;i < 6;i++)

                {

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

                    }

                    cits

                    {

                        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) //Ieraksta lapa nākamā lapa

        {

            if(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

                for(i = 0;i < 6;i++)

                {

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

                    }

                    cits

                    {

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

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

                    }

                }

            }

        }

        //Iestatījumu lapa

        cits, ja(Va == 0x0302)

        {

            ja(laika režīms == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        cits, ja(Va == 0x0303)

        {

            ja(laika režīms == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        cits, ja(Va >= 0x0304 && Va <= 0x0309)

        {

            u16 maiņas lapa[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, pārslēgšanas lapa, 2);

        }

        cits, ja(Va >= 0x030A && Va <= 0x030F)

        {

            u16 maiņas lapa[2] = {0x5A01, 19};

            backPage = 3;

            backNum = Va;

            setNum = pašreizējaisLaiks[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, pārslēgšanas lapa, 2);

        }

        //Apielāgot datu lapu

        else if(Va == 0x0400) //Apstiprināt

        {

            u16 maiņas lapa[2] = {0x5A01, 0x0000};

            switchpage[1] = backPage;

            if(backPage == 1) //Atgriezties uz statusa lapu

            {

                placeGramNum = setNum;

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

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

            }

            cits, ja(backpage == 3)

            {

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

                {

                    u16 atlasīt = 0;

                    atlasīt = (backNum - 0x0304) * 0x10;

                    timrIntervalStunda[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + atlasīt + 0, setNum % 10);

                    Write_Dgus(0x3010 + atlasīt + 2, setNum / 10 % 10);

                }

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

                {

                    u16 atlasīt = 0;

                    atlasīt = (backNum - 0x0304) * 0x10;

                    pašreizējaisLaiks[backNum - 0x030A] = setNum;

                    

                    if(backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + atlasīt + 0, setNum % 10);

                        Write_Dgus(0x3010 + atlasīt + 2, setNum / 10 % 10);

                        Write_Dgus(0x3010 + atlasīt + 4, setNum / 100 % 10);

                        Write_Dgus(0x3010 + atlasīt + 6, setNum / 1000 % 10);

                    }

                    cits

                    {

                        Write_Dgus(0x3010 + atlasīt + 0, setNum % 10);

                        Write_Dgus(0x3010 + atlasīt + 2, setNum / 10 % 10);

                    }

                }

            }

            write_dgus_vp(0x0084, pārslēgšanas lapa, 2);

        }

        else if(Va == 0x0401) //Atpakaļ

        {

            u16 maiņas lapa[2] = {0x5A01, 0x0000};

            switchpage[1] = backPage;

            write_dgus_vp(0x0084, pārslēgšanas lapa, 2);

        }

        else if(Va == 0x0402) //Ciparu pieaugums

        {

            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) //Ciparu samazinājums

        {

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

    }

}


Publicēšanas laiks: 19. septembris 2023