[Mukofotga sazovor bo'lgan ish] Mushuklarning oziq-ovqat mahsulotlarini boshqarishning aqlli tizimi

——DWIN dasturchilar forumidan

Ushbu sonda biz sizga DWIN Developer Forumidan mukofotga sazovor bo'lgan ochiq manbali ishni taqdim etamiz: Mushuklarning oziq-ovqat mahsulotlarini boshqarishning intellektual tizimi.Muhandislar DWIN smart-ekranini harorat, namlik va mushuk ovqatining qolgan miqdorini kuzatish va mushukning ovqat iste'mol qilish rekordini saqlash uchun ishlatishdi.Ular, shuningdek, teginish bilan bog'liq fikr-mulohazalarni vizual idrok etishni yaxshilash uchun siyoh bilan bo'yash uslubi UI to'plamini, shuningdek, barmoq bilan tegilganda siyohni bosish effektini noyob tarzda ishlab chiqdilar.

Kirish:

1.UI rasm materiali

DWIN aqlli ekrani tasvirlar, audio va boshqa materiallarga asoslangan foydalanuvchi interfeysini ishlab chiqishni yakunlaydi, bu esa ekran ko'rinishi tarkibiga ko'ra oldindan tayyorlanishi kerak.

asv (2)

2.Interfeysni ishlab chiqish

DGUS dasturiy ta'minoti qatlam qoplamasi orqali UI effektini tiklaydi, tayyorlangan materiallarni DGUS dasturida to'liq rasmga birlashtiradi va displey va teginish funktsiyalarini o'rnatadi.

asv (1)

3. Bosish effektlari va ovoz effektlarini amalga oshirish

Sensorli pozitsiya 51 dasturi orqali olinadi, bosish effekti barmoqning harakatini kuzatib boradi va kalit hamrohlik ovoz effektiga ham erishiladi.

(1) Sensorli joylashuv kodini aniqlang va audio tinglang:

void TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

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

    {

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

        agar(Va[0] == 0x5A01)

        {

        }

        boshqa

        {

            sindirish;

        }

    }

    if(i != 0) //Kirish uchun birinchi marta bosing

    {

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

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, o'ynatish, 2);

    }

}

 

(2) Sensorli effektli displey uchun kod quyidagicha:

TouchStart() bekor qilinadi

{

    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. Keyingi qadam, mos keladigan parametrlarni ekran orqali o'rnatish va keyin mushuklarning oziq-ovqat mahsulotlarini avtomatik oziqlantirish funktsiyasini amalga oshirish uchun ma'lumotlarni ESP32 orqali mushuklar uchun oziq-ovqat boshqaruvchisiga uzatishdir.Maxsus kod quyidagicha:

// Tugma holatini olish

bekor get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    agar(Va != 0x0000)

    {

        //Status sahifasi

        if(Va == 0x0103) //g sonini joylashtiring

        {

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

            setNum = placeGramNum;

            orqa sahifa = 1;//Holat sahifasiga qaytish

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

        }

        boshqa agar (Va == 0x0102)

        {

            OneSendData3 (placeGramNum);//Joymushuk ovqatibir marta

        }

        else if(Va == 0x0101) //Sozlash sahifasi

        {

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

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

            {

                agar (i == 0)

                {

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

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

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

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

                }

                boshqa

                {

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

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

                }

            }

            write_dgus_vp(0x0084, almashtirish sahifasi, 2);//Sozlamalar sahifasiga kiring

        }

        Aks holda (Va == 0x0100) //Rekord sahifasi

        {

            u16 almashtirish sahifasi[2] = {0x5A01, 2};

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

            {

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

                }

                boshqa

                {

                    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, almashtirish sahifasi, 2);//Yozuv sahifasini kiriting

        }

        //Rekord sahifasi

        else if(Va == 0x0201) //Yozuv sahifasi oldingi sahifa

        {

            agar (lookEatCnt > 0)

            {

                lookEatCnt--;

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

                {

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

                    }

                    boshqa

                    {

                        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) //Yozuv sahifasi keyingi sahifa

        {

            if(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

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

                {

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

                    }

                    boshqa

                    {

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

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

                    }

                }

            }

        }

        // Sahifani sozlash

        boshqa agar (Va == 0x0302)

        {

            agar (timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        boshqa agar (Va == 0x0303)

        {

            agar (timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        boshqa agar (Va >= 0x0304 && Va <= 0x0309)

        {

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

            orqa sahifa = 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, almashtirish sahifasi, 2);

        }

        boshqa agar (Va >= 0x030A && Va <= 0x030F)

        {

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

            orqa sahifa = 3;

            backNum = Va;

            setNum = joriyTime[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, almashtirish sahifasi, 2);

        }

        //Ama'lumotlar sahifasini sozlash

        Aks holda, agar (Va == 0x0400) //Tasdiqlang

        {

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

            switchpage[1] = backPage;

            if(backPage == 1) //Holat sahifasiga qaytish

            {

                placeGramNum = setNum;

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

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

            }

            boshqa agar (orqa sahifa == 3)

            {

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

                {

                    u16 tanlash = 0;

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

                    timrIntervalHour[backNum - 0x0304] = setNum;

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

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

                }

                Aks holda (backNum >= 0x030A && backNum <= 0x030F)

                {

                    u16 tanlash = 0;

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

                    currentTime[backNum - 0x030A] = setNum;

                    

                    agar (backNum == 0x030A)

                    {

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

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

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

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

                    }

                    boshqa

                    {

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

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

                    }

                }

            }

            write_dgus_vp(0x0084, almashtirish sahifasi, 2);

        }

        Aks holda, agar (Va == 0x0401) //Orqaga

        {

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

            switchpage[1] = backPage;

            write_dgus_vp(0x0084, almashtirish sahifasi, 2);

        }

        else if(Va == 0x0402) //Raqamli ortish

        {

            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) //Raqam kamayishi

        {

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

    }

}


Yuborilgan vaqt: 2023 yil 19-sentabr