[پرونده برنده جایزه] سیستم کنترل هوشمند غذای گربه

——از انجمن توسعه دهندگان DWIN

در این شماره، کیس منبع باز برنده جایزه از انجمن توسعه دهندگان DWIN: سیستم هوشمند کنترل غذای گربه را به شما معرفی می کنیم. مهندسان از صفحه نمایش هوشمند DWIN برای نظارت بر دما، رطوبت و مقدار باقیمانده غذای گربه و ذخیره سوابق غذا خوردن گربه استفاده کردند. آن‌ها همچنین مجموعه‌ای از رابط کاربری سبک نقاشی جوهر را به‌طور منحصربه‌فرد طراحی کردند، و همچنین یک افکت کلیک جوهر هنگام لمس انگشت، برای افزایش درک بصری بازخورد لمسی طراحی کردند.

معرفی:

1.UI مواد تصویر

صفحه نمایش هوشمند DWIN توسعه رابط کاربری را بر اساس تصاویر، صدا و سایر مواد تکمیل می کند که باید از قبل مطابق با محتوای نمایش صفحه آماده شوند.

ایالات متحده آمریکا (2)

2. توسعه رابط

نرم افزار DGUS جلوه UI را از طریق لایه لایه بازیابی می کند، مواد آماده شده را در یک تصویر کامل در نرم افزار DGUS ترکیب می کند و عملکردهای نمایش و لمس را تنظیم می کند.

ایالات متحده آمریکا (1)

3. افکت های کلیکی و جلوه های صوتی را پیاده سازی کنید

موقعیت لمس از طریق برنامه 51 به دست می آید، اثر فشار دادن به دنبال حرکت انگشت، و افکت صدای همراه کلید نیز به دست می آید.

(1) شناسایی کد مکان لمسی و پخش صدا:

void TouchDetect()

{

    u16 و[3] = 0;

    u8 i = 0;

 

    برای (i = 0;i

    {

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

        if (Va[0] == 0x5A01)

        {

        }

        دیگر

        {

            زنگ تفريح؛

        }

    }

    if(i != 0) //برای ورود ابتدا کلیک کنید

    {

        u16 play[2] = {0x0001، 0x4000}؛

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, play, 2);

    }

}

 

(2) کد نمایش افکت لمسی به شرح زیر است:

void 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. مرحله بعدی این است که پارامترهای مربوطه را از طریق صفحه تنظیم کنید و سپس داده ها را از طریق ESP32 به کنترل کننده غذای گربه منتقل کنید تا عملکرد تغذیه خودکار غذای گربه را متوجه شوید. کد خاص به شرح زیر است:

//دریافت وضعیت دکمه

void get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    if (Va != 0x0000)

    {

        //اسصفحه مخفی

        if(Va == 0x0103) //تعداد g را قرار دهید

        {

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

            setNum = placeGramNum;

             BackPage = 1; //بازگشت به صفحه وضعیت

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

        }

        else if (Va == 0x0102)

        {

             OneSendData3 (placeGramNum); //محلغذای گربهیک بار

        }

        else if(Va == 0x0101) //صفحه تنظیم

        {

            صفحه سوئیچ u16[2] = {0x5A01, 3};

            برای (i = 0;i

            {

                اگر (i == 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);

                }

                دیگر

                {

                    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); // وارد صفحه تنظیمات شوید

        }

        else if(Va == 0x0100) //آرصفحه ضبط

        {

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

            برای (i = 0;i

            {

                اگر (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)؛

                }

                دیگر

                {

                    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); // وارد صفحه رکورد شوید

        }

        //آرصفحه ضبط

        else if(Va == 0x0201) //صفحه قبلی را ضبط کنید

        {

            if (lookEatCnt > 0)

            {

                lookEatCnt--;

                برای (i = 0;i

                {

                    اگر (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);

                    }

                    دیگر

                    {

                        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) //صفحه بعدی را ضبط کنید

        {

            if(lookEatCnt

            {

                lookEatCnt++;

                برای (i = 0;i

                {

                    اگر (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);

                    }

                    دیگر

                    {

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

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

                    }

                }

            }

        }

        //صفحه تنظیمات

        else if (Va == 0x0302)

        {

            if (timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        else if (Va == 0x0303)

        {

            if (timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        else if(Va >= 0x0304 && Va

        {

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

            BackPage = 3;

            BackNum = And;

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

        }

        else if(Va >= 0x030A && Va

        {

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

            BackPage = 3;

            BackNum = And;

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

        }

        //آتنظیم صفحه داده

        else if(Va == 0x0400) //تایید

        {

            صفحه سوئیچ u16[2] = {0x5A01، 0x0000}؛

            سوئیچ پیج[1] = صفحه پشتی.

            if(backPage == 1) //بازگشت به صفحه وضعیت

            {

                placeGramNum = setNum;

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

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

            }

            else if (backPage == 3)

            {

                if (backNum >= 0x0304 && backNum

                {

                    u16 انتخاب = 0;

                    انتخاب = (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

                {

                    u16 انتخاب = 0;

                    انتخاب = (BackNum - 0x0304) * 0x10;

                    CurrentTime[BackNum - 0x030A] = setNum;

                    

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

                    }

                    دیگر

                    {

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

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

                    }

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);

        }

        else if(Va == 0x0401) //بازگشت

        {

            صفحه سوئیچ u16[2] = {0x5A01، 0x0000}؛

            سوئیچ پیج[1] = صفحه پشتی.

            write_dgus_vp(0x0084, switchpage, 2);

        }

        else if(Va == 0x0402) //افزایش عددی

        {

            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) //کاهش عددی

        {

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

    }

}


زمان ارسال: سپتامبر 19-2023