[Шагнал хүртсэн тохиолдол] Муурын хоолны хяналтын ухаалаг систем

——DWIN хөгжүүлэгчдийн форумаас

Энэ дугаарт бид DWIN хөгжүүлэгчдийн форумаас шагнал хүртсэн нээлттэй эх сурвалжийн кейсийг танилцуулах болно: Муурын хоолны хяналтын ухаалаг систем.Инженерүүд DWIN ухаалаг дэлгэцийг ашиглан муурны тэжээлийн температур, чийгшил, үлдэгдэл хэмжээг хянаж, муурны хоол идэж буй бичлэгийг хадгалсан байна.Тэд мөн хуруугаараа хүрэх үед бэхний товшилтын эффект болон мэдрэгчтэй санал хүсэлтийн харааны ойлголтыг сайжруулахын тулд бэхний зургийн хэв маягийн UI-г өвөрмөц байдлаар бүтээжээ.

Оршил:

1.UI зургийн материал

DWIN ухаалаг дэлгэц нь дэлгэцийн агуулгын дагуу урьдчилан бэлтгэсэн зураг, аудио болон бусад материалд суурилсан UI хөгжүүлэлтийг дуусгадаг.

asv (2)

2. Интерфейс хөгжүүлэлт

DGUS программ хангамж нь давхаргын давхаргын тусламжтайгаар UI эффектийг сэргээж, бэлтгэсэн материалыг DGUS программ хангамжид бүрэн дүрс болгон нэгтгэж, дэлгэц болон мэдрэгчтэй функцуудыг тохируулдаг.

asv (1)

3. Товшилтын эффект болон дууны эффектийг хэрэгжүүлэх

Мэдрэгчийн байрлалыг 51 програмын тусламжтайгаар олж авдаг, хурууны хөдөлгөөнийг даган дарах эффект, мөн гол дагалдах дууны эффектийг олж авдаг.

(1) Мэдрэгчтэй байршлын кодыг илрүүлж, аудио тоглуулах:

хүчингүй TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

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

    {

        Va[i] = Унших_Dgus(0x0016 + i);

        хэрэв(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) Мэдрэгч эффект харуулах код дараах байдалтай байна:

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

    хэрэв(Va != 0x0000)

    {

        //Status хуудас

        if(Va == 0x0103) //g-ийн тоог байрлуул

        {

            u16 шилжих хуудас[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, шилжих хуудас, 2);

        }

        өөр бол (Va == 0x0102)

        {

            OneSendData3(placeGramNum);//Газармуурны хоолнэг удаа

        }

        else if(Va == 0x0101) //Тохиргооны хуудас

        {

            u16 шилжих хуудас[2] = {0x5A01, 3};

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

            {

                хэрэв(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, шилжих хуудас, 2);//Тохиргооны хуудас руу орно

        }

        өөрөөр бол (Va == 0x0100) //Record хуудас

        {

            u16 шилжих хуудас[2] = {0x5A01, 2};

            for(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) //Өмнөх хуудсыг бичих

        {

            if(lookEatCnt > 0)

            {

                lookEatCnt--;

                for(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) //Дараагийн хуудсыг бичих

        {

            if(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

                for(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)

        {

            хэрэв (timeMode == 1)

            {

                timeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        өөр бол (Va == 0x0303)

        {

            хэрэв (timeMode == 0)

            {

                timeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        өөр бол (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, шилжих хуудас, 2);

        }

        өөр бол(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, шилжих хуудас, 2);

        }

        //Aөгөгдлийн хуудсыг тохируулах

        өөрөөр бол (Va == 0x0400) //Баталгаажуулах

        {

            u16 шилжих хуудас[2] = {0x5A01, 0x0000};

            шилжих хуудас[1] = backPage;

            if(backPage == 1) //Статус хуудас руу буцах

            {

                placeGramNum = setNum;

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

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

            }

            өөр бол (арын хуудас == 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);

                }

                өөрөөр бол (буцах тоо >= 0x030A && арын тоо <= 0x030F)

                {

                    u16 сонгох = 0;

                    сонгох = (backNum - 0x0304) * 0x10;

                    currentTime[backNum - 0x030A] = setNum;

                    

                    хэрэв (буцах тоо == 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};

            шилжих хуудас[1] = backPage;

            write_dgus_vp(0x0084, шилжих хуудас, 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 оны 9-р сарын 19