[ဆုရကိစ္စ] Intelligent Cat Food Control စနစ်

—— DWIN Developer Forum မှ

ဤစာစောင်တွင်၊ DWIN Developer Forum- Intelligent Cat Food Control System မှ ဆုရ open source case ကို သင့်အား မိတ်ဆက်ပေးပါမည်။အင်ဂျင်နီယာများသည် DWIN စမတ်စခရင်ကို အသုံးပြု၍ အပူချိန်၊ စိုထိုင်းဆနှင့် ကြောင်စာကျန်ပမာဏကို စောင့်ကြည့်ကာ ကြောင်၏ အစာစားခြင်းမှတ်တမ်းများကို သိမ်းဆည်းရန်။၎င်းတို့သည် ထိတွေ့တုံ့ပြန်မှု၏ အမြင်အာရုံကို မြှင့်တင်ရန်အတွက် လက်ချောင်းဖြင့်ထိသည့်အခါ မှင်နှိပ်သည့်အကျိုးသက်ရောက်မှုအပြင် မှင်ပန်းချီစတိုင် UI အစုံကိုလည်း ထူးထူးခြားခြား ဒီဇိုင်းထုတ်ထားသည်။

နိဒါန်း-

1.UI ရုပ်ပုံပစ္စည်း

DWIN စမတ်စခရင်သည် ရုပ်ပုံများ၊ အသံနှင့် အခြားပစ္စည်းများကို အခြေခံ၍ UI ဖွံ့ဖြိုးတိုးတက်မှုကို ပြီးမြောက်စေကာ မျက်နှာပြင်ပြသမှုအကြောင်းအရာအရ ကြိုတင်ပြင်ဆင်ထားရန် လိုအပ်ပါသည်။

asv (၂)

2.Interface ဖွံ့ဖြိုးတိုးတက်မှု

DGUS ဆော့ဖ်ဝဲလ်သည် အလွှာထပ်လွှာမှတဆင့် UI အကျိုးသက်ရောက်မှုကို ပြန်လည်ရယူပြီး ပြင်ဆင်ထားသည့်ပစ္စည်းများကို DGUS ဆော့ဖ်ဝဲရှိ ပြီးပြည့်စုံသောရုပ်ပုံအဖြစ် ပေါင်းစပ်ကာ မျက်နှာပြင်နှင့် ထိခြင်းလုပ်ဆောင်ချက်များကို သတ်မှတ်ပေးသည်။

asv (၁)

3. ကလစ်အကျိုးသက်ရောက်မှုများနှင့် အသံအကျိုးသက်ရောက်မှုများကို အကောင်အထည်ဖော်ပါ။

ထိတွေ့အနေအထားကို 51 ပရိုဂရမ်မှရရှိပြီး၊ လက်ချောင်းလှုပ်ရှားမှုကို လိုက်၍ နှိပ်သည့်အကျိုးသက်ရောက်မှုကို ရရှိပြီး သော့တွဲပါ အသံအကျိုးသက်ရောက်မှုကိုလည်း ရရှိပါသည်။

(1) ထိတွေ့တည်နေရာကုဒ်ကို ရှာဖွေပြီး အသံဖွင့်ပါ-

TouchDetect() ပျက်ပြယ်သည်

{

    u16 Va[3] = 0;

    u8 i = 0;

 

    for(i=0;i <3;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၊ ကစား၊ 2);

    }

}

 

(၂) ထိတွေ့အကျိုးသက်ရောက်မှုပြသမှုအတွက် ကုဒ်မှာ အောက်ပါအတိုင်းဖြစ်သည်။

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 မှတစ်ဆင့် ကြောင်အစားအစာ ထိန်းချုပ်ကိရိယာသို့ ဒေတာကို ပေးပို့ပါ။သီးခြားကုဒ်မှာ အောက်ပါအတိုင်းဖြစ်သည်-

// ခလုတ်အခြေအနေကို ရယူပါ။

get_key_status() ပျက်ပြယ်သည်

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    if(Va != 0x0000)

    {

        //Status စာမျက်နှာ

        if(Va == 0x0103) // g အရေအတွက်ကို ထည့်ပါ။

        {

            u16 စာမျက်နှာ[2] = {0x5A01၊ 19};

            setNum = နေရာGramNum;

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

        }

        အခြား if(Va == 0x0102)

        {

            OneSendData3(placeGramNum);//နေရာကြောင်အစားအစာတခါ

        }

        else if(Va == 0x0101) // ဆက်တင်စာမျက်နှာ

        {

            u16 စာမျက်နှာ[2] = {0x5A01၊ 3};

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

            {

                if(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၊ switchpage၊ 2);// ဆက်တင်စာမျက်နှာကိုဝင်ပါ။

        }

        အခြား if(Va == 0x0100) //Record စာမျက်နှာ

        {

            u16 စာမျက်နှာ[2] = {0x5A01၊ 2};

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

            {

                if(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);// မှတ်တမ်းစာမျက်နှာကို ရိုက်ထည့်ပါ။

        }

        //Record စာမျက်နှာ

        else if(Va == 0x0201) // စာမျက်နှာ ယခင်စာမျက်နှာကို မှတ်တမ်းတင်ပါ။

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

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

                {

                    if(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 < eatCnt - 1)

            {

                lookEatCnt++;

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

                {

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

                    }

                }

            }

        }

        // ဆက်တင်စာမျက်နှာ

        အခြား if(Va == 0x0302)

        {

            if(timeMode == 1)

            {

                အချိန်မုဒ် = 0;

                Write_Dgus(0x3A12၊ 139);

            }

        }

        အခြား if(Va == 0x0303)

        {

            if(အချိန်မုဒ် == 0)

            {

                အချိန်မုဒ် = 1;

                Write_Dgus(0x3A12၊ 242);

            }

        }

        အခြား if(Va >= 0x0304 && Va <= 0x0309)

        {

            u16 စာမျက်နှာ[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);

        }

        အခြား if(Va >= 0x030A && Va <= 0x030F)

        {

            u16 စာမျက်နှာ[2] = {0x5A01၊ 19};

            backPage = 3;

            backNum = Va;

            setNum = လက်ရှိအချိန်[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);

        }

        //Adjust data စာမျက်နှာ

        အခြား if(Va == 0x0400) //အတည်ပြုပါ။

        {

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

            switchpage[1] = backPage;

            if(backPage == 1) // အခြေအနေစာမျက်နှာသို့ ပြန်သွားပါ။

            {

                placeGramNum = setNum;

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

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

            }

            တခြား if(backPage == 3)

            {

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

                {

                    u16 ကို ရွေးပါ = 0;

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

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + ရွေးပါ + 0၊ setNum % 10);

                    Write_Dgus(0x3010 + ရွေးပါ + 2၊ setNum / 10 % 10);

                }

                အခြား if(backNum >= 0x030A && backNum <= 0x030F)

                {

                    u16 ကို ရွေးပါ = 0;

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

                    လက်ရှိအချိန်[backNum - 0x030A] = setNum;

                    

                    if(backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + ရွေးပါ + 0၊ setNum % 10);

                        Write_Dgus(0x3010 + ရွေးပါ + 2၊ setNum / 10 % 10);

                        Write_Dgus(0x3010 + ရွေးပါ + 4၊ setNum / 100 % 10);

                        Write_Dgus(0x3010 + ရွေးပါ + 6၊ setNum / 1000 % 10);

                    }

                    တခြား

                    {

                        Write_Dgus(0x3010 + ရွေးပါ + 0၊ setNum % 10);

                        Write_Dgus(0x3010 + ရွေးပါ + 2၊ setNum / 10 % 10);

                    }

                }

            }

            write_dgus_vp(0x0084၊ switchpage၊ 2);

        }

        အခြား if(Va == 0x0401) //ကျော

        {

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

            switchpage[1] = backPage;

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

    }

}


တင်ချိန်- စက်တင်ဘာ ၁၉-၂၀၂၃