[પુરસ્કાર વિજેતા કેસ] બુદ્ધિશાળી બિલાડી ખોરાક નિયંત્રણ સિસ્ટમ

——DWIN ડેવલપર ફોરમ તરફથી

આ અંકમાં, અમે તમને DWIN ડેવલપર ફોરમ: ઇન્ટેલિજન્ટ કેટ ફૂડ કંટ્રોલ સિસ્ટમ તરફથી એવોર્ડ વિજેતા ઓપન સોર્સ કેસ રજૂ કરીશું.એન્જિનિયરોએ 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 પ્લે[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 દ્વારા કેટ ફૂડ કંટ્રોલરને ડેટા ટ્રાન્સમિટ કરવાનો છે.વિશિષ્ટ કોડ નીચે મુજબ છે:

//બટનની સ્થિતિ મેળવો

રદબાતલ get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    જો(Va != 0x0000)

    {

        //Status પાનું

        if(Va == 0x0103) //g ની સંખ્યા મૂકો

        {

            u16 સ્વીચપેજ[2] = {0x5A01, 19};

            setNum = placeGramNum;

            બેકપેજ = 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, સ્વિચપેજ, 2);

        }

        બાકી જો(Va == 0x0102)

        {

            OneSendData3(placeGramNum);//સ્થળબિલાડીનો ખોરાકએકવાર

        }

        else if(Va == 0x0101) //સેટિંગ પેજ

        {

            u16 સ્વીચપેજ[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 સ્વીચપેજ[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) // પાછલા પૃષ્ઠને રેકોર્ડ કરો

        {

            જો (જોઈએટસીન્ટ > 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);

                    }

                }

            }

        }

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

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        બાકી જો(Va == 0x0303)

        {

            જો (ટાઇમ મોડ == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        બાકી જો (Va >= 0x0304 && Va <= 0x0309)

        {

            u16 સ્વીચપેજ[2] = {0x5A01, 19};

            બેકપેજ = 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, સ્વિચપેજ, 2);

        }

        બાકી જો (Va >= 0x030A && Va <= 0x030F)

        {

            u16 સ્વીચપેજ[2] = {0x5A01, 19};

            બેકપેજ = 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, સ્વિચપેજ, 2);

        }

        //Adjust ડેટા પેજ

        બાકી જો (Va == 0x0400) //પુષ્ટિ કરો

        {

            u16 સ્વીચપેજ[2] = {0x5A01, 0x0000};

            switchpage[1] = બેકપેજ;

            જો (બેકપેજ == 1) //સ્થિતિ પૃષ્ઠ પર પાછા ફરો

            {

                placeGramNum = setNum;

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

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

            }

            બાકી જો (બેકપેજ == 3)

            {

                જો (backNum >= 0x0304 && backNum <= 0x0309)

                {

                    u16 પસંદ = 0;

                    પસંદ કરો = (backNum - 0x0304) * 0x10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + પસંદ કરો + 0, setNum % 10);

                    Write_Dgus(0x3010 + પસંદ કરો + 2, setNum / 10 % 10);

                }

                બાકી જો (backNum >= 0x030A && backNum <= 0x030F)

                {

                    u16 પસંદ = 0;

                    પસંદ કરો = (backNum - 0x0304) * 0x10;

                    વર્તમાન સમય[backNum - 0x030A] = setNum;

                    

                    જો (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, સ્વિચપેજ, 2);

        }

        બાકી જો (Va == 0x0401) //પાછળ

        {

            u16 સ્વીચપેજ[2] = {0x5A01, 0x0000};

            switchpage[1] = બેકપેજ;

            write_dgus_vp(0x0084, સ્વિચપેજ, 2);

        }

        બાકી જો(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);

        }

        બાકી જો(Va == 0x0403) //સંખ્યાત્મક ઘટાડો

        {

            જો (સેટનમ > 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