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

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

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

تعارف:

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

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

asv (2)

2. انٹرفیس کی ترقی

DGUS سافٹ ویئر لیئر اوورلے کے ذریعے UI اثر کو بحال کرتا ہے، DGUS سافٹ ویئر میں تیار شدہ مواد کو ایک مکمل تصویر میں یکجا کرتا ہے، اور ڈسپلے اور ٹچ کے افعال کو سیٹ کرتا ہے۔

asv (1)

3. کلک اثرات اور صوتی اثرات کو لاگو کریں۔

ٹچ پوزیشن 51 پروگرام کے ذریعے حاصل کی جاتی ہے، دبانے کا اثر انگلی کی حرکت کے بعد ہوتا ہے، اور کلیدی ساتھی آواز کا اثر بھی حاصل ہوتا ہے۔

(1) ٹچ لوکیشن کوڈ کا پتہ لگائیں اور آڈیو چلائیں:

void TouchDetect()

{

    u16 Va[3] = 0؛

    u8 i = 0;

 

    برائے (i = 0;i <3;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)

    {

        //Status صفحہ

        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 <6;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) //Record صفحہ

        {

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

            برائے (i = 0;i <6;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)؛// ریکارڈ کا صفحہ درج کریں۔

        }

        //Record صفحہ

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

        {

            اگر (lookEatCnt > 0)

            {

                lookEatCnt--;

                برائے (i = 0;i <6;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 < eatCnt - 1)

            {

                lookEatCnt++;

                برائے (i = 0;i <6;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 <= 0x0309)

        {

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

            بیک پیج = 3؛

            backNum = Va;

            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 <= 0x030F)

        {

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

            بیک پیج = 3؛

            backNum = Va;

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

        }

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

        ورنہ اگر (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 <= 0x0309)

                {

                    u16 سلیکٹ = 0;

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

                    timrIntervalHour [backNum - 0x0304] = setNum؛

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

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

                }

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

                {

                    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