[Ka ki genyen prim] Entelijan Cat Food Control System

——Soti nan DWIN Developer Forum

Nan nimewo sa a, nou pral prezante w ka sous ouvè ki genyen prim ki soti nan Forum Developer DWIN la: Sistèm Entelijan Kontwòl Manje Chat.Enjenyè yo te itilize ekran entelijan DWIN pou kontwole tanperati, imidite, ak kantite manje chat ki rete yo, epi pou konsève pou dosye manje chat la.Yo menm tou yo fèt inikman yon seri UI style penti lank, osi byen ke yon efè klike sou lank lè yo manyen pa yon dwèt, amelyore pèsepsyon vizyèl nan fidbak manyen.

Entwodiksyon:

1.UI materyèl foto

DWIN entelijan ekran konplete devlopman UI ki baze sou foto, odyo ak lòt materyèl yo bezwen prepare davans dapre kontni ekspozisyon ekran an.

asv (2)

2.Devlopman entèfas

Lojisyèl DGUS la retabli efè a UI atravè kouch kouch, konbine materyèl yo prepare nan yon foto konplè nan lojisyèl an DGUS, epi li mete fonksyon yo ekspozisyon ak manyen.

asv (1)

3. Aplike efè klike ak efè son

Pozisyon manyen la jwenn nan pwogram 51 la, efè a peze swiv mouvman dwèt la, epi efè son akonpayman kle a reyalize tou.

(1) Detekte kòd kote manyen epi jwe odyo:

anile TouchDetect ()

{

    u16 Va[3] = 0;

    u8 mwen = 0;

 

    pou(mwen = 0;mwen <3;i++)

    {

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

        si(Va[0] == 0x5A01)

        {

        }

        lòt bagay

        {

            kraze;

        }

    }

    if(i != 0) //Premye klike pou antre

    {

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

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, jwe, 2);

    }

}

 

(2) Kòd pou ekspozisyon efè touche se jan sa a:

void TouchStart ()

{

    if(toucheAnimationFlag == 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. Pwochen etap la se mete paramèt korespondan yo atravè ekran an, ak Lè sa a, transmèt done yo nan kontwolè a manje chat atravè ESP32 reyalize fonksyon an manje otomatik nan manje chat.Kòd espesifik la se jan sa a:

//Jwenn estati bouton an

anile get_key_status()

{

    int mwen = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    si (Va != 0x0000)

    {

        //Spaj tatus

        si(Va == 0x0103) //Mete kantite g

        {

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

            setNum = placeGramNum;

            backPage = 1;//Retounen nan paj estati a

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

        }

        lòt moun si (Va == 0x0102)

        {

            OneSendData3 (placeGramNum);//Kotemanje chatyon fwa

        }

        else if(Va == 0x0101) //Anviwònman paj

        {

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

            pou (mwen = 0;i < 6;i++)

            {

                si (mwen == 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, currentTime[i] / 100% 10);

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

                }

                lòt bagay

                {

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

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

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);// Antre nan paj paramèt la

        }

        lòt moun si (Va == 0x0100) //Record paj

        {

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

            pou (mwen = 0;i < 6;i++)

            {

                si (mwen == 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);

                }

                lòt bagay

                {

                    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, switchpage, 2);// Antre nan paj dosye a

        }

        //Record paj

        else if(Va == 0x0201) //Anrejistre paj paj anvan an

        {

            si (gadeManjeCnt > 0)

            {

                gadeManjeCnt--;

                pou (mwen = 0;i < 6;i++)

                {

                    si (mwen == 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);

                    }

                    lòt bagay

                    {

                        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) //Anrejistre paj pwochen paj la

        {

            si(gadeManjeCnt <manjeCnt - 1)

            {

                gadeEatCnt++;

                pou (mwen = 0;i < 6;i++)

                {

                    si (mwen == 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);

                    }

                    lòt bagay

                    {

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

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

                    }

                }

            }

        }

        //Anviwònman paj

        lòt moun si (Va == 0x0302)

        {

            if(timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        lòt moun si (Va == 0x0303)

        {

            si(timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        lòt moun si (Va >= 0x0304 && Va <= 0x0309)

        {

            u16 switchpage [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, switchpage, 2);

        }

        lòt moun si (Va >= 0x030A && Va <= 0x030F)

        {

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

            backPage = 3;

            backNum = 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, switchpage, 2);

        }

        //Aajiste paj done yo

        lòt moun si (Va == 0x0400) //Konfime

        {

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

            switchpage[1] = BackPage;

            if(backPage == 1) //Retounen nan paj estati a

            {

                placeGramNum = setNum;

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

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

            }

            lòt bagay si (backPage == 3)

            {

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

                {

                    u16 chwazi = 0;

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

                    timrIntervalHour[backNum - 0x0304] = setNum;

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

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

                }

                lòt moun si (backNum >= 0x030A && backNum <= 0x030F)

                {

                    u16 chwazi = 0;

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

                    currentTime[backNum - 0x030A] = setNum;

                    

                    si (backNum == 0x030A)

                    {

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

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

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

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

                    }

                    lòt bagay

                    {

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

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

                    }

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);

        }

        lòt moun si (Va == 0x0401) //Retounen

        {

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

            switchpage[1] = BackPage;

            write_dgus_vp(0x0084, switchpage, 2);

        }

        lòt bagay si (Va == 0x0402) //Ogmantasyon nimerik

        {

            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) //Diminisyon nimerik

        {

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

    }

}


Tan pòs: 19 septanm 2023