[Сыйлык алган учур] Мышыктардын тамак-ашын башкаруунун акылдуу системасы

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

 

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

    {

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

        if(Va[0] == 0x5A01)

        {

        }

        башка

        {

            үзүү;

        }

    }

    if(i != 0) //Кирүү үчүн биринчи чыкылдатыңыз

    {

        u16 ойнотуу[2] = {0x0001, 0x4000};

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, ойнотуу, 2);

    }

}

 

(2) Сенсордук эффект дисплейинин коду төмөнкүдөй:

void 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 аркылуу мышыктын тамак-аш контроллерине маалыматтарды берүү.конкреттүү код төмөнкүдөй:

// баскыч статусун алуу

void 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 switchpage[2] = {0x5A01, 19};

            setNum = placeGramNum;

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

        }

        else if(Va == 0x0102)

        {

            OneSendData3(placeGramNum);//Placeмышыктын тамагыбир жолу

        }

        else if(Va == 0x0101) //Орнотуу барагы

        {

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

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

            {

                if(i == 0)

                {

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

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

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

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

                }

                башка

                {

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

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

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);//Орнотуулар барагына кириңиз

        }

        else if(Va == 0x0100) //Record баракчасы

        {

            u16 switchpage[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);

                    }

                }

            }

        }

        //Орнотуу барагы

        else if(Va == 0x0302)

        {

            if(timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        else if(Va == 0x0303)

        {

            if(timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        else if(Va >= 0x0304 && Va <= 0x0309)

        {

            u16 switchpage[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);

        }

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

        {

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

            backPage = 3;

            backNum = Va;

            setNum = currentTime[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);

        }

        //Aмаалымат барагын тууралоо

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

            }

            else if(backPage == 3)

            {

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

                }

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

                {

                    u16 тандоо = 0;

                    тандоо = (backNum - 0x0304) * 0x10;

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

        }

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

    }

}


Посттун убактысы: 2023-жылдын 19-сентябрына чейин