[Verðlaunuð tilfelli] Intelligent Cat Food Control System

——Frá DWIN Developer Forum

Í þessu hefti munum við kynna fyrir þér hið margverðlaunaða opna tilvik frá DWIN Developer Forum: Intelligent Cat Food Control System.Verkfræðingar notuðu DWIN snjallskjáinn til að fylgjast með hitastigi, rakastigi og eftirstandandi magni kattafóðurs og til að vista matarskrár kattarins.Þeir hönnuðu einnig einstaklega sett af blekmálunarstíl notendaviðmóti, sem og bleksmelluáhrif þegar fingur snertir, til að auka sjónræna skynjun á snertiendurgjöf.

Kynning:

1.UI myndefni

DWIN snjallskjár lýkur UI þróun byggt á myndum, hljóði og öðru efni þarf að undirbúa fyrirfram í samræmi við innihald skjásins.

asv (2)

2.Þróun viðmóts

DGUS hugbúnaðurinn endurheimtir notendaviðmótið með lagyfirlagi, sameinar tilbúið efni í heildarmynd í DGUS hugbúnaðinum og stillir skjá- og snertiaðgerðir.

asv (1)

3. Innleiða smelluáhrif og hljóðbrellur

Snertistaðan er fengin með 51 forritinu, þrýstiáhrifin fylgja hreyfingu fingursins, og einnig næst hljómar undirleiksins.

(1) Finndu snertistaðsetningarkóða og spilaðu hljóð:

ógilt TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

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

    {

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

        if(Va[0] == 0x5A01)

        {

        }

        Annar

        {

            brjóta;

        }

    }

    if(i != 0) //Smelltu fyrst til að slá inn

    {

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

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, spila, 2);

    }

}

 

(2) Kóðinn fyrir snertiáhrifaskjáinn er sem hér segir:

ógilt 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æsta skref er að stilla samsvarandi færibreytur í gegnum skjáinn og senda síðan gögnin til kattamatsstýringarinnar í gegnum ESP32 til að átta sig á sjálfvirkri fóðrunaraðgerð kattafóðurs.Sérstakur kóðinn er sem hér segir:

//Fá stöðu hnapps

ógilt get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    ef(Va != 0x0000)

    {

        //Status síðu

        if(Va == 0x0103) //Setjið fjölda g

        {

            u16 switchpage[2] = {0x5A01, 19};

            setNum = placeGramNum;

            baksíða = 1;// Fara aftur á stöðusíðu

            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, skiptisíða, 2);

        }

        annað ef(Va == 0x0102)

        {

            OneSendData3(placeGramNum);//Staðurkattamateinu sinni

        }

        else if(Va == 0x0101) // Stillingarsíða

        {

            u16 switchpage[2] = {0x5A01, 3};

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

            {

                ef(i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, núverandi tími[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, núverandi tími[i] / 10 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 4, núverandiTími[i] / 100 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, núverandi tími[i] / 1000 % 10);

                }

                Annar

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, núverandi tími[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, núverandi tími[i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, skiptisíða, 2);//Fáðu inn stillingasíðuna

        }

        annað ef(Va == 0x0100) //Rhljómplötu síðu

        {

            u16 switchpage[2] = {0x5A01, 2};

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

            {

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

                }

                Annar

                {

                    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, skiptisíða, 2);//Sláðu inn skráningarsíðu

        }

        //Rhljómplötu síðu

        else if(Va == 0x0201) //Taka upp síðu fyrri síðu

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

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

                {

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

                    }

                    Annar

                    {

                        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) //Taka upp síðu næstu síðu

        {

            if(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

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

                {

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

                    }

                    Annar

                    {

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

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

                    }

                }

            }

        }

        //Stillingarsíða

        annað ef(Va == 0x0302)

        {

            if(timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        annað ef (Va == 0x0303)

        {

            if(timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        annað ef (Va >= 0x0304 && Va <= 0x0309)

        {

            u16 switchpage[2] = {0x5A01, 19};

            baksíða = 3;

            bakNum = 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, skiptisíða, 2);

        }

        annað ef (Va >= 0x030A && Va <= 0x030F)

        {

            u16 switchpage[2] = {0x5A01, 19};

            baksíða = 3;

            bakNum = Va;

            setNum = currentTime[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, skiptisíða, 2);

        }

        //Astilla gagnasíðuna

        annað ef(Va == 0x0400) //Staðfesta

        {

            u16 switchpage[2] = {0x5A01, 0x0000};

            switchpage[1] = baksíða;

            if(backPage == 1) // Fara aftur á stöðusíðu

            {

                placeGramNum = setNum;

                Write_Dgus(0x1140 + 0, staðGramNum % 10);

                Write_Dgus(0x1140 + 2, staðGramNum / 10 % 10);

            }

            annað ef(backPage == 3)

            {

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

                {

                    u16 velja = 0;

                    velja = (afturNum - 0x0304) * 0x10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + veldu + 0, setNum % 10);

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

                }

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

                {

                    u16 velja = 0;

                    velja = (afturNum - 0x0304) * 0x10;

                    currentTime[backNum - 0x030A] = setNum;

                    

                    if(backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + veldu + 0, setNum % 10);

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

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

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

                    }

                    Annar

                    {

                        Write_Dgus(0x3010 + veldu + 0, setNum % 10);

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

                    }

                }

            }

            write_dgus_vp(0x0084, skiptisíða, 2);

        }

        annað ef(Va == 0x0401) //Til baka

        {

            u16 switchpage[2] = {0x5A01, 0x0000};

            switchpage[1] = baksíða;

            write_dgus_vp(0x0084, skiptisíða, 2);

        }

        annað ef(Va == 0x0402) //Töluleg aukning

        {

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

        }

        annað ef(Va == 0x0403) //Töluleg lækkun

        {

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

    }

}


Birtingartími: 19. september 2023