[Auhinnatud juhtum] Intelligentne kassitoidu juhtimissüsteem

——DWINi arendajafoorumist

Selles numbris tutvustame teile DWIN-i arendajafoorumi auhinnatud avatud lähtekoodiga juhtumit: intelligentne kassitoidu juhtimissüsteem.Insenerid kasutasid DWIN nutiekraani, et jälgida kassitoidu temperatuuri, niiskust ja järelejäänud kogust ning salvestada kassi toidu söömise rekordeid.Samuti kujundasid nad ainulaadselt tindiga maalimise stiilis kasutajaliidese komplekti ja tindiga klõpsamise efekti, kui neid puudutatakse sõrmega, et parandada puutetundlikkuse visuaalset tajumist.

Sissejuhatus:

1.UI pildimaterjal

DWIN nutiekraan lõpetab kasutajaliidese arendamise piltide, heli ja muude materjalide põhjal, mis tuleb eelnevalt ette valmistada vastavalt ekraanikuva sisule.

asv (2)

2.Liidese arendamine

Tarkvara DGUS taastab kasutajaliidese efekti läbi kihi ülekatte, kombineerib ettevalmistatud materjalid DGUS tarkvaras tervikpildiks ning seadistab kuva- ja puutefunktsioonid.

asv (1)

3. Rakendage klikiefekte ja heliefekte

Puuteasend saadakse läbi programmi 51, vajutamise efekt järgib sõrme liikumist ning saavutatakse ka klahvi saateheliefekt.

(1) Tuvastage puutetundlik asukohakood ja esitage heli:

tühine TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

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

    {

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

        if(Va[0] == 0x5A01)

        {

        }

        muidu

        {

            murda;

        }

    }

    if(i != 0) //Sisestamiseks esimene klõps

    {

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

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, esitus, 2);

    }

}

 

(2) Puuteefekti kuvamise kood on järgmine:

tühine TouchStart()

{

    if(puuteanimatsioonilipp == 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. Järgmine samm on ekraani kaudu vastavate parameetrite seadistamine ja andmete edastamine ESP32 kaudu kassitoidu kontrollerile, et realiseerida kassitoidu automaatne söötmise funktsioon.Konkreetne kood on järgmine:

//Hangi nupu olek

void get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    if(Va != 0x0000)

    {

        //Status leht

        if(Va == 0x0103) //Paigutage g arv

        {

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

            setNum = placeGramNum;

            tagaleht = 1;//Tagasi olekulehele

            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, vahetusleht, 2);

        }

        else if(Va == 0x0102)

        {

            OneSendData3(kohtGramNum);//Kohtkassitoitüks kord

        }

        else if(Va == 0x0101) //Seadistusleht

        {

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

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

            {

                if(i == 0)

                {

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

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

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

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

                }

                muidu

                {

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

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

                }

            }

            write_dgus_vp(0x0084, vahetusleht, 2);//Sisenege seadete lehele

        }

        else if(Va == 0x0100) //Rrekordileht

        {

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

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

            {

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

                }

                muidu

                {

                    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, vahetusleht, 2);//Sisenege salvestuslehele

        }

        //Rrekordileht

        else if(Va == 0x0201) //Salvesta leht eelmine leht

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

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

                {

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

                    }

                    muidu

                    {

                        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) //Salvesta järgmine leht

        {

            if(lookSööCnt < eatCnt - 1)

            {

                lookEatCnt++;

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

                {

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

                    }

                    muidu

                    {

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

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

                    }

                }

            }

        }

        //Seadistusleht

        else if(Va == 0x0302)

        {

            if(ajarežiim == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        else if(Va == 0x0303)

        {

            if(ajarežiim == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        else if(Va >= 0x0304 && Va <= 0x0309)

        {

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

            tagaleht = 3;

            tagaarv = 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, vahetusleht, 2);

        }

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

        {

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

            tagaleht = 3;

            tagaarv = Va;

            setNum = praeguneAeg[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, vahetusleht, 2);

        }

        //Akohandada andmelehte

        else if(Va == 0x0400) //Kinnita

        {

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

            vahetusleht[1] = tagaleht;

            if(backPage == 1) //Tagasi olekulehele

            {

                placeGramNum = setNum;

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

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

            }

            else if(tagaleht == 3)

            {

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

                {

                    u16 vali = 0;

                    vali = (backNum - 0x0304) * 0x10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

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

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

                }

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

                {

                    u16 vali = 0;

                    vali = (backNum - 0x0304) * 0x10;

                    praeguneAeg[tagasiarv - 0x030A] = setNum;

                    

                    if(tagaarv == 0x030A)

                    {

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

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

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

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

                    }

                    muidu

                    {

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

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

                    }

                }

            }

            write_dgus_vp(0x0084, vahetusleht, 2);

        }

        else if(Va == 0x0401) //tagasi

        {

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

            vahetusleht[1] = tagaleht;

            write_dgus_vp(0x0084, vahetusleht, 2);

        }

        else if(Va == 0x0402) //Arvuline suurenemine

        {

            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) //Arvuline vähenemine

        {

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

    }

}


Postitusaeg: 19. september 2023