[אַוואָרד-ווינינג פאַל] ינטעליגענט קאַט פוד קאָנטראָל סיסטעם

——פֿון DWIN דעוועלאָפּער פאָרום

אין דעם אַרויסגעבן, מיר פאָרשטעלן צו איר די אַוואָרד-ווינינג עפֿענען מקור פאַל פון די DWIN דעוועלאָפּער פורום: ינטעליגענט קאַט פוד קאָנטראָל סיסטעם.ענדזשאַנירז געניצט די DWIN סמאַרט פאַרשטעלן צו מאָניטאָר די טעמפּעראַטור, הומידיטי, און רוען סומע פון ​​קאַץ עסנוואַרג, און צו ראַטעווען די קאַץ ס עסנוואַרג עסן רעקאָרדס.זיי אויך יינציק דיזיינד אַ גאַנג פון טינט געמעל נוסח וי, ווי געזונט ווי אַ טינט קליק ווירקונג ווען גערירט דורך אַ פינגער, צו פאַרבעסערן די וויזשאַוואַל מערקונג פון פאַרבינדן באַמערקונגען.

הקדמה:

1.וי בילד מאַטעריאַל

DWIN סמאַרט פאַרשטעלן קאַמפּליץ UI אַנטוויקלונג באזירט אויף בילדער, אַודיאָ און אנדערע מאַטעריאַלס דאַרפֿן צו זיין צוגעגרייט אין שטייַגן לויט די פאַרשטעלן אַרויסווייַזן אינהאַלט.

asv (2)

2.ינטערפאַסע אַנטוויקלונג

די DGUS ווייכווארג ריסטאָרז די וי ווירקונג דורך שיכטע אָוווערליי, קאַמביינז די צוגעגרייט מאַטעריאַלס אין אַ גאַנץ בילד אין די DGUS ווייכווארג, און באַשטעטיקט די אַרויסווייַזן און פאַרבינדן פאַנגקשאַנז.

asv (1)

3. ימפּלעמענט גיט יפעקץ און געזונט יפעקץ

די פאַרבינדן שטעלע איז באקומען דורך די 51 פּראָגראַם, די דרינגלעך ווירקונג גייט די באַוועגונג פון די פינגער, און דער שליסל אַקאַמפּנימאַנט געזונט ווירקונג איז אויך אַטשיווד.

(1) דעטעקט ריר אָרט קאָד און שפּיל אַודיאָ:

void TouchDetect ()

{

    ו16 וואַ[3] = 0;

    ו8 איך = 0;

 

    פֿאַר (איך = 0; איך <3; איך++)

    {

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

        אויב (וואַ[0] == 0x5A01)

        {

        }

        אַנדערש

        {

            ברעכן;

        }

    }

    אויב (איך != 0) // ערשטער גיט צו אַרייַן

    {

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

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp (0x00A0, שפּיל, 2);

    }

}

 

(2) די קאָד פֿאַר פאַרבינדן ווירקונג אַרויסווייַזן איז ווי גייט:

פּאָסל טאָוטשסטאַרט()

{

    אויב (רירן אַנימאַטיאָן פלאַג == 1)

    {

        אויב (טאַפּן אַנימאַטיאָן קנט == 0)

        {

            Write_Dgus (0x5011, touchPosX - 100);

            Write_Dgus (0x5012, touchPosY - 100);

        }

 

        Write_Dgus (0x5000, touchAnimationCnt);

        touchAnimationCnt++;

 

        אויב (טאַפּן אַנימאַטיאָן קנט == 6)

        {

            touchAnimationFlag = 0;

            Write_Dgus (0x5011, 1024);

            Write_Dgus (0x5012, 600);

        }

    }

    

}

 

4. דער ווייַטער שריט איז צו שטעלן די קאָראַספּאַנדינג פּאַראַמעטערס דורך דעם עקראַן, און דעמאָלט יבערשיקן די דאַטן צו די קאַץ עסנוואַרג קאָנטראָללער דורך ESP32 צו פאַרשטיין די אָטאַמאַטיק פידינג פונקציע פון ​​קאַץ עסנוואַרג.דער ספּעציפיש קאָד איז ווי גייט:

// באַקומען קנעפּל סטאַטוס

void get_key_status()

{

    ינט איך = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va = Read_Dgus (0x1000);

    אויב (וואַ != 0x0000)

    {

        //Sטאַטוס בלאַט

        אויב (וואַ == 0x0103) // שטעלן די נומער פון ג

        {

            ו16 סוויטטשפּאַגע [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);

        }

        אַנדערש אויב (וואַ == 0x0102)

        {

            OneSendData3(placeGramNum);//אָרטקאַץ עסנוואַרגאַמאָל

        }

        אַנדערש אויב (וואַ == 0x0101) // באַשטעטיקן בלאַט

        {

            ו16 סוויטטשפּאַגע [2] = {0x5A01, 3};

            פֿאַר (איך = 0; איך <6; איך++)

            {

                אויב (איך == 0)

                {

                    Write_Dgus (0x3070 + איך * 0x10 + 0, קראַנט צייט [איך] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, currentTime[i] / 10% 10);

                    Write_Dgus (0x3070 + איך * 0x10 + 4, קראַנט צייט [איך] / 100% 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, currentTime[i] / 1000% 10);

                }

                אַנדערש

                {

                    Write_Dgus (0x3070 + איך * 0x10 + 0, קראַנט צייט [איך] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, currentTime[i] / 10% 10);

                }

            }

            write_dgus_vp (0x0084, סוויטטשפּאַגע, 2);// אַרייַן די סעטטינגס בלאַט

        }

        אַנדערש אויב (וואַ == 0x0100) //Rרעקאָרד בלאַט

        {

            ו16 סוויטטשפּאַגע [2] = {0x5A01, 2};

            פֿאַר (איך = 0; איך <6; איך++)

            {

                אויב (איך == 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);// אַרייַן רעקאָרד בלאַט

        }

        //Rרעקאָרד בלאַט

        else if (Va == 0x0201) // רעקאָרד בלאַט פרייַערדיק בלאַט

        {

            אויב (קוקעאַטקנט> 0)

            {

                lookEatCnt--;

                פֿאַר (איך = 0; איך <6; איך++)

                {

                    אויב (איך == 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);

                    }

                }

            }

        }

        אַנדערש אויב (וואַ == 0x0202) // רעקאָרד בלאַט ווייַטער בלאַט

        {

            if (lookEatCnt <eatCnt - 1)

            {

                lookEatCnt++;

                פֿאַר (איך = 0; איך <6; איך++)

                {

                    אויב (איך == 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);

                    }

                }

            }

        }

        // באַשטעטיקן בלאַט

        אַנדערש אויב (וואַ == 0x0302)

        {

            אויב (צייטמאָדע == 1)

            {

                צייטמאָדע = 0;

                Write_Dgus (0x3A12, 139);

            }

        }

        אַנדערש אויב (וואַ == 0x0303)

        {

            אויב (צייטמאָדע == 0)

            {

                צייטמאָדע = 1;

                Write_Dgus (0x3A12, 242);

            }

        }

        אַנדערש אויב (וואַ >= 0x0304 && וואַ <= 0x0309)

        {

            ו16 סוויטטשפּאַגע [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);

        }

        אַנדערש אויב (וואַ >= 0x030A && Va <= 0x030F)

        {

            ו16 סוויטטשפּאַגע [2] = {0x5A01, 19};

            באַקפּאַגע = 3;

            backNum = Va;

            setNum = קראַנט צייט [וואַ - 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);

        }

        //Aסטרויערן די דאַטן בלאַט

        אַנדערש אויב (וואַ == 0x0400) //באַשטעטיקן

        {

            ו16 סוויטטשפּאַגע [2] = {0x5A01, 0x0000};

            סוויטטשפּאַגע[1] = באַקפּאַגע;

            אויב (backPage == 1) // צוריקקומען צו סטאַטוס בלאַט

            {

                placeGramNum = setNum;

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

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

            }

            אַנדערש אויב (backPage == 3)

            {

                אויב (backNum >= 0x0304 && backNum <= 0x0309)

                {

                    ו16 אויסקלייַבן = 0;

                    אויסקלייַבן = (באַקקנום - 0קס0304) * 0קס10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus (0x3010 + אויסקלייַבן + 0, סעטנום% 10);

                    Write_Dgus(0x3010 + אויסקלייַבן + 2, setNum / 10% 10);

                }

                else if (backNum >= 0x030A && backNum <= 0x030F)

                {

                    ו16 אויסקלייַבן = 0;

                    אויסקלייַבן = (באַקקנום - 0קס0304) * 0קס10;

                    CurrentTime[backNum - 0x030A] = setNum;

                    

                    אויב (backNum == 0x030A)

                    {

                        Write_Dgus (0x3010 + אויסקלייַבן + 0, סעטנום% 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, סעטנום% 10);

                        Write_Dgus(0x3010 + אויסקלייַבן + 2, setNum / 10% 10);

                    }

                }

            }

            write_dgus_vp (0x0084, סוויטטשפּאַגע, 2);

        }

        אַנדערש אויב (וואַ == 0x0401) //צוריק

        {

            ו16 סוויטטשפּאַגע [2] = {0x5A01, 0x0000};

            סוויטטשפּאַגע[1] = באַקפּאַגע;

            write_dgus_vp (0x0084, סוויטטשפּאַגע, 2);

        }

        אַנדערש אויב (וואַ == 0x0402) // נומעריקאַל פאַרגרעסערן

        {

            סעטנום++;

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

        }

        אַנדערש אויב (וואַ == 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 סעפטעמבער