——DWIN Developer Forum-ից
Այս թողարկումում մենք ձեզ կներկայացնենք DWIN Developer Forum-ից մրցանակակիր բաց կոդով գործը՝ Կատուների սննդի վերահսկման խելացի համակարգ:Ինժեներներն օգտագործել են DWIN խելացի էկրանը՝ վերահսկելու ջերմաստիճանը, խոնավությունը և կատուների սննդի մնացյալ քանակությունը, ինչպես նաև պահպանել կատվի կերակուրի գրառումները:Նրանք նաև յուրօրինակ ձևավորեցին թանաքով ներկելու ոճի միջերեսի հավաքածու, ինչպես նաև թանաքի սեղմման էֆեկտ, երբ մատով հպվում է, որպեսզի ուժեղացնեն հպման հետադարձ կապի տեսողական ընկալումը:
Ներածություն:
1.UI նկարի նյութ
DWIN խելացի էկրանն ավարտում է միջերեսի մշակումը, որը հիմնված է նկարների, աուդիո և այլ նյութերի վրա, որոնք պետք է նախապես պատրաստվեն՝ էկրանի ցուցադրման բովանդակությանը համապատասխան:
2. Ինտերֆեյսի մշակում
DGUS ծրագրաշարը վերականգնում է UI էֆեկտը շերտի ծածկույթի միջոցով, համատեղում է պատրաստված նյութերը DGUS ծրագրաշարի ամբողջական պատկերի մեջ և սահմանում ցուցադրման և հպման գործառույթները:
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};
touchAnimationFlag = 1;
touchAnimationCnt = 0;
touchPosX = Va[1];
touchPosY = Va[2];
write_dgus_vp (0x00A0, խաղալ, 2);
}
}
(2) Հպման էֆեկտի ցուցադրման կոդը հետևյալն է.
void TouchStart()
{
if (touch AnimationFlag == 1)
{
if (touch AnimationCnt == 0)
{
Write_Dgus (0x5011, touchPosX - 100);
Write_Dgus (0x5012, touchPosY - 100);
}
Write_Dgus (0x5000, touchAnimationCnt);
touchAnimationCnt++;
if (touch AnimationCnt == 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);
եթե (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);//Տեղկատվի սնունդմեկ անգամ
}
else if(Va == 0x0101) //Կարգավորման էջ
{
u16 switchpage[2] = {0x5A01, 3};
համար (i = 0;i <6;i++)
{
եթե (i == 0)
{
Write_Dgus(0x3070 + i * 0x10 + 0, ընթացիկTime[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, ընթացիկTime[i] % 10);
Write_Dgus (0x3070 + i * 0x10 + 2, ընթացիկԺամանակը[i] / 10 % 10);
}
}
write_dgus_vp (0x0084, switchpage, 2);//Մուտքագրեք կարգավորումների էջը
}
ուրիշ, եթե (Va == 0x0100) //Rձայնագրման էջ
{
u16 switchpage[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, switchpage, 2);//Մուտքագրեք գրանցման էջը
}
//Rձայնագրման էջ
else if(Va == 0x0201) //Ձայնագրել նախորդ էջը
{
if (lookEatCnt > 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) // Գրանցեք հաջորդ էջը
{
if(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);
}
}
}
}
//Կարգավորման էջ
else if (Va == 0x0302)
{
եթե (ժամանակի ռեժիմ == 1)
{
timeMode = 0;
Write_Dgus (0x3A12, 139);
}
}
else if (Va == 0x0303)
{
եթե (ժամանակի ռեժիմ == 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);
}
ուրիշ եթե (Va >= 0x030A && Va <= 0x030F)
{
u16 switchpage[2] = {0x5A01, 19};
backPage = 3;
backNum = Va;
setNum = ընթացիկTime[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հարմարեցնել տվյալների էջը
այլապես, եթե (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 (հետևի էջ == 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);
}
այլապես, եթե (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);
}
այլապես, եթե (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);
}
}
Հրապարակման ժամանակը՝ 19-2023