[ایوارڈ یافتہ کیس] ذہین کیٹ فوڈ کنٹرول سسٹم

—— DWIN ڈویلپر فورم سے

اس شمارے میں، ہم آپ کو DWIN Developer Forum: Intelligent Cat Food Control System سے ایوارڈ یافتہ اوپن سورس کیس کا تعارف کرائیں گے۔ انجینئرز نے DWIN سمارٹ اسکرین کا استعمال درجہ حرارت، نمی، اور بلی کے کھانے کی بقیہ مقدار کو مانیٹر کرنے اور بلی کے کھانے کے ریکارڈ کو محفوظ کرنے کے لیے کیا۔ انہوں نے انک پینٹنگ اسٹائل UI کا ایک سیٹ بھی منفرد طریقے سے ڈیزائن کیا، ساتھ ہی انگلی سے چھونے پر سیاہی پر کلک کرنے والا اثر، ٹچ فیڈ بیک کے بصری تصور کو بڑھانے کے لیے۔

تعارف:

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

DWIN سمارٹ اسکرین تصویروں، آڈیو اور دیگر مواد کی بنیاد پر UI کی ترقی کو مکمل کرتی ہے اسکرین ڈسپلے کے مواد کے مطابق پہلے سے تیار کرنے کی ضرورت ہے۔

امریکہ (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)؛

        اگر(Va[0] == 0x5A01)

        {

        }

        اور

        {

            توڑنا

        }

    }

    if(i != 0) // داخل ہونے کے لیے پہلے کلک کریں۔

    {

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

        ٹچ اینیمیشن فلیگ = 1؛

        touchAnimationCnt = 0;

        touchPosX = Va[1]؛

        touchPosY = Va[2]؛

        write_dgus_vp(0x00A0، پلے، 2)؛

    }

}

 

(2) ٹچ اثر ڈسپلے کا کوڈ درج ذیل ہے:

باطل ٹچ اسٹارٹ ()

{

    اگر (ٹچ اینیمیشن فلیگ == 1)

    {

        اگر (touchAnimationCnt == 0)

        {

            Write_Dgus(0x5011, touchPosX - 100);

            Write_Dgus(0x5012, touchPosY - 100);

        }

 

        Write_Dgus(0x5000, touchAnimationCnt)؛

        touchAnimationCnt++;

 

        اگر (touchAnimationCnt == 6)

        {

            ٹچ اینیمیشن فلیگ = 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)؛

    اگر (Va != 0x0000)

    {

        //ایسپوشیدہ صفحہ

        if(Va == 0x0103) //g کی تعداد رکھیں

        {

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

            setNum = placeGramNum;

             بیک پیج = 1؛ // اسٹیٹس پیج پر واپس جائیں۔

            Write_Dgus(0x4000 + 0, setNum % 10);

            لکھیں_Dgus(0x4000 + 2, setNum / 10% 10);

            لکھیں_Dgus(0x4000 + 4, setNum / 100% 10);

            لکھیں_Dgus(0x4000 + 6, setNum / 1000% 10);

            write_dgus_vp(0x0084، سوئچ پیج، 2)؛

        }

        ورنہ اگر(Va == 0x0102)

        {

             OneSendData3(placeGramNum)؛ //جگہبلی کی خوراکایک بار

        }

        else if(Va == 0x0101) // ترتیب صفحہ

        {

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

            برائے (i = 0;i

            {

                اگر (i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0، موجودہ وقت[i] % 10)؛

                    Write_Dgus(0x3070 + i * 0x10 + 2، موجودہ وقت[i] / 10 % 10)؛

                    Write_Dgus(0x3070 + i * 0x10 + 4، موجودہ وقت[i] / 100% 10)؛

                    Write_Dgus(0x3070 + i * 0x10 + 6، موجودہ وقت[i] / 1000 % 10)؛

                }

                اور

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0، موجودہ وقت[i] % 10)؛

                    Write_Dgus(0x3070 + i * 0x10 + 2، موجودہ وقت[i] / 10 % 10)؛

                }

            }

             write_dgus_vp(0x0084، سوئچ پیج، 2)؛ //ترتیبات کا صفحہ درج کریں۔

        }

        ورنہ اگر (Va == 0x0100) //آرecord صفحہ

        {

            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، سوئچ پیج، 2)؛ // ریکارڈ کا صفحہ درج کریں۔

        }

        //آرecord صفحہ

        else if(Va == 0x0201) // صفحہ پچھلا صفحہ ریکارڈ کریں۔

        {

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

                    }

                }

            }

        }

        ورنہ اگر (Va == 0x0202) // اگلے صفحہ کو ریکارڈ کریں۔

        {

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

                    }

                }

            }

        }

        // ترتیب صفحہ

        ورنہ اگر (Va == 0x0302)

        {

            اگر (ٹائم موڈ == 1)

            {

                ٹائم موڈ = 0؛

                Write_Dgus(0x3A12, 139);

            }

        }

        ورنہ اگر (Va == 0x0303)

        {

            اگر (ٹائم موڈ == 0)

            {

                ٹائم موڈ = 1؛

                Write_Dgus(0x3A12, 242);

            }

        }

        ورنہ اگر(Va >= 0x0304 && Va

        {

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

            بیک پیج = 3؛

            backNum = اور؛

            setNum = timrIntervalHour[Va - 0x0304]؛

            Write_Dgus(0x4000 + 0, setNum % 10);

            لکھیں_Dgus(0x4000 + 2, setNum / 10% 10);

            لکھیں_Dgus(0x4000 + 4, setNum / 100% 10);

            لکھیں_Dgus(0x4000 + 6, setNum / 1000% 10);

            write_dgus_vp(0x0084، سوئچ پیج، 2)؛

        }

        ورنہ اگر(Va >= 0x030A && Va

        {

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

            بیک پیج = 3؛

            backNum = اور؛

            setNum = موجودہ وقت[Va - 0x030A]؛

            Write_Dgus(0x4000 + 0, setNum % 10);

            لکھیں_Dgus(0x4000 + 2, setNum / 10% 10);

            لکھیں_Dgus(0x4000 + 4, setNum / 100% 10);

            لکھیں_Dgus(0x4000 + 6, setNum / 1000% 10);

            write_dgus_vp(0x0084، سوئچ پیج، 2)؛

        }

        //اےڈیٹا پیج کو ایڈجسٹ کریں۔

        ورنہ اگر (Va == 0x0400) //تصدیق کریں۔

        {

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

            switchpage[1] = بیک پیج؛

            اگر (بیک پیج == 1) // اسٹیٹس پیج پر واپس جائیں۔

            {

                placeGramNum = setNum؛

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

                لکھیں_Dgus(0x1140 + 2, placeGramNum / 10% 10);

            }

            ورنہ اگر (بیک پیج == 3)

            {

                اگر (backNum >= 0x0304 && backNum

                {

                    u16 سلیکٹ = 0;

                    منتخب کریں = (backNum - 0x0304) * 0x10؛

                    timrIntervalHour [backNum - 0x0304] = setNum؛

                    Write_Dgus(0x3010 + سلیکٹ + 0، سیٹ نمبر % 10)؛

                    Write_Dgus(0x3010 + سلیکٹ + 2، سیٹ نمبر / 10 % 10)؛

                }

                ورنہ اگر (backNum >= 0x030A && backNum

                {

                    u16 سلیکٹ = 0;

                    منتخب کریں = (backNum - 0x0304) * 0x10؛

                    موجودہ وقت [backNum - 0x030A] = setNum؛

                    

                    اگر (backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + سلیکٹ + 0، سیٹ نمبر % 10)؛

                        Write_Dgus(0x3010 + سلیکٹ + 2، سیٹ نمبر / 10 % 10)؛

                        Write_Dgus(0x3010 + سلیکٹ + 4، سیٹ نمبر / 100 % 10)؛

                        Write_Dgus(0x3010 + سلیکٹ + 6، سیٹ نمبر / 1000 % 10)؛

                    }

                    اور

                    {

                        Write_Dgus(0x3010 + سلیکٹ + 0، سیٹ نمبر % 10)؛

                        Write_Dgus(0x3010 + سلیکٹ + 2، سیٹ نمبر / 10 % 10)؛

                    }

                }

            }

            write_dgus_vp(0x0084، سوئچ پیج، 2)؛

        }

        ورنہ اگر (Va == 0x0401) //پیچھے

        {

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

            switchpage[1] = بیک پیج؛

            write_dgus_vp(0x0084، سوئچ پیج، 2)؛

        }

        ورنہ اگر (Va == 0x0402) // عددی اضافہ

        {

            setNum++;

            Write_Dgus(0x4000 + 0, setNum % 10);

            لکھیں_Dgus(0x4000 + 2, setNum / 10% 10);

            لکھیں_Dgus(0x4000 + 4, setNum / 100% 10);

            لکھیں_Dgus(0x4000 + 6, setNum / 1000% 10);

        }

        ورنہ اگر (Va == 0x0403) // عددی کمی

        {

            اگر (سیٹ نمبر > 0)

                setNum--;

            Write_Dgus(0x4000 + 0, setNum % 10);

            لکھیں_Dgus(0x4000 + 2, setNum / 10% 10);

            لکھیں_Dgus(0x4000 + 4, setNum / 100% 10);

            لکھیں_Dgus(0x4000 + 6, setNum / 1000% 10);

        }

        

        لکھیں_Dgus(0x1000, 0);

    }

}


پوسٹ ٹائم: ستمبر 19-2023