——Ti DWIN Forum pamekar
Dina masalah ieu, kami bakal ngenalkeun ka anjeun kasus open source anu meunang pangajén ti DWIN Developer Forum: Intelligent Cat Food Control System.Insinyur ngagunakeun layar pinter DWIN pikeun ngawas suhu, kalembaban, sareng jumlah sésana dahareun ucing, sareng nyimpen catetan tuangeun tuangeun ucing.Éta ogé dirancang unik sakumpulan UI gaya lukisan tinta, kitu ogé pangaruh klik tinta nalika keuna ku ramo, pikeun ningkatkeun persepsi visual ngeunaan eupan balik touch.
bubuka:
1.bahan gambar UI
Layar pinter DWIN ngalengkepan pamekaran UI dumasar kana gambar, audio sareng bahan sanésna kedah disiapkeun sateuacanna dumasar kana eusi tampilan layar.
2. Pangwangunan panganteur
Software DGUS malikkeun éfék UI ngaliwatan lapisan overlay, ngagabungkeun bahan disusun kana gambar lengkep dina software DGUS, tur nyetel tampilan na touch fungsi.
3. Laksanakeun épék klik sareng épék sora
Posisi rampa dimeunangkeun ngaliwatan program 51, pangaruh mencét nuturkeun gerakan ramo, sarta pangaruh sora iringan konci ogé kahontal.
(1) Deteksi kode lokasi touch sareng muter audio:
batal TouchDetec()
{
u16 Va[3] = 0;
u8 abdi = 0;
pikeun(i = 0;i <3;i++)
{
Va[i] = Read_Dgus(0x0016 + i);
lamun (Va[0] == 0x5A01)
{
}
lain
{
megatkeun;
}
}
lamun (abdi! = 0) // Klik munggaran pikeun ngasupkeun
{
u16 muter [2] = {0x0001, 0x4000};
touchAnimationFlag = 1;
touchAnimationCnt = 0;
touchPosX = Va[1];
touchPosY = Va[2];
write_dgus_vp(0x00A0, muter, 2);
}
}
(2) Kodeu pikeun tampilan éfék touch nyaéta kieu:
batal TouchStart()
{
lamun (touchAnimationFlag == 1)
{
lamun (touchAnimationCnt == 0)
{
Write_Dgus(0x5011, touchPosX - 100);
Write_Dgus(0x5012, touchPosY - 100);
}
Write_Dgus(0x5000, touchAnimationCnt);
touchAnimationCnt ++;
lamun (touchAnimationCnt == 6)
{
touchAnimationFlag = 0;
Write_Dgus(0x5011, 1024);
Write_Dgus(0x5012, 600);
}
}
}
4. Lengkah saterusna nyaéta pikeun ngeset parameter pakait ngaliwatan layar, lajeng ngirimkeun data ka controller dahareun ucing ngaliwatan ESP32 pikeun ngawujudkeun fungsi dahar otomatis dahareun ucing.Kode husus nyaéta kieu:
// Kéngingkeun status tombol
batal get_key_status()
{
int i = 0;
//u16 Va=Read_Dgus(addr);
u16 Va=Read_Dgus(0x1000);
lamun (Va! = 0x0000)
{
//Skaca tatus
lamun (Va == 0x0103) //Teundeun jumlah g
{
u16 switchpage[2] = {0x5A01, 19};
setNum = placeGramNum;
backPage = 1;//Balik deui ka kaca status
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);
}
lain lamun (Va == 0x0102)
{
OneSendData3(placeGramNum);//Tempatkadaharan ucingsakali
}
lain lamun (Va == 0x0101) // Nyetél kaca
{
u16 switchpage[2] = {0x5A01, 3};
pikeun(i = 0;i < 6;i++)
{
lamun (i == 0)
{
Write_Dgus(0x3070 + i * 0x10 + 0, currentTime [abdi] % 10);
Write_Dgus(0x3070 + i * 0x10 + 2, currentTime [abdi] / 10 % 10);
Write_Dgus(0x3070 + i * 0x10 + 4, currentTime [abdi] / 100 % 10);
Write_Dgus(0x3070 + i * 0x10 + 6, currentTime [abdi] / 1000 % 10);
}
lain
{
Write_Dgus(0x3070 + i * 0x10 + 0, currentTime [abdi] % 10);
Write_Dgus(0x3070 + i * 0x10 + 2, currentTime [abdi] / 10 % 10);
}
}
write_dgus_vp(0x0084, switchpage, 2);//Asupkeun kaca setélan
}
lain lamun (Va == 0x0100) //Rkaca ecord
{
u16 switchpage[2] = {0x5A01, 2};
pikeun(i = 0;i < 6;i++)
{
lamun (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);
}
lain
{
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);//Asupkeun kaca catetan
}
//Rkaca ecord
lain lamun (Va == 0x0201) // Rékam kaca kaca saméméhna
{
lamun (lookEatCnt > 0)
{
lookEatCnt--;
pikeun(i = 0;i < 6;i++)
{
lamun (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);
}
lain
{
Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i]% 10);
Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);
}
}
}
}
lain lamun (Va == 0x0202) // Rékam kaca hareup kaca
{
lamun (lookEatCnt < eatCnt - 1)
{
lookEatCnt++;
pikeun(i = 0;i < 6;i++)
{
lamun (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);
}
lain
{
Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i]% 10);
Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);
}
}
}
}
//Setélan kaca
lain lamun (Va == 0x0302)
{
lamun (timeMode == 1)
{
TimeMode = 0;
Write_Dgus(0x3A12, 139);
}
}
lain lamun (Va == 0x0303)
{
lamun (timeMode == 0)
{
TimeMode = 1;
Write_Dgus(0x3A12, 242);
}
}
lain lamun (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);
}
lain lamun (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);
}
//Anyaluyukeun kaca data
lain lamun (Va == 0x0400) //Konpirmasi
{
u16 switchpage[2] = {0x5A01, 0x0000};
switchpage [1] = backPage;
lamun (backPage == 1) // Balik deui ka kaca status
{
placeGramNum = setNum;
Write_Dgus(0x1140 + 0, placeGramNum% 10);
Write_Dgus(0x1140 + 2, placeGramNum / 10 % 10);
}
lain lamun (backPage == 3)
{
lamun (backNum>= 0x0304 && backNum <= 0x0309)
{
u16 pilih = 0;
pilih = (backNum - 0x0304) * 0x10;
timrIntervalHour[backNum - 0x0304] = setNum;
Write_Dgus(0x3010 + pilih + 0, setNum% 10);
Write_Dgus(0x3010 + pilih + 2, setNum / 10 % 10);
}
lain lamun (backNum>= 0x030A && backNum <= 0x030F)
{
u16 pilih = 0;
pilih = (backNum - 0x0304) * 0x10;
currentTime [backNum - 0x030A] = setNum;
lamun (backNum == 0x030A)
{
Write_Dgus(0x3010 + pilih + 0, setNum% 10);
Write_Dgus(0x3010 + pilih + 2, setNum / 10 % 10);
Write_Dgus(0x3010 + pilih + 4, setNum / 100 % 10);
Write_Dgus(0x3010 + pilih + 6, setNum / 1000 % 10);
}
lain
{
Write_Dgus(0x3010 + pilih + 0, setNum% 10);
Write_Dgus(0x3010 + pilih + 2, setNum / 10 % 10);
}
}
}
write_dgus_vp(0x0084, switchpage, 2);
}
lain lamun (Va == 0x0401) //Balik deui
{
u16 switchpage[2] = {0x5A01, 0x0000};
switchpage [1] = backPage;
write_dgus_vp(0x0084, switchpage, 2);
}
lain lamun (Va == 0x0402) // Kanaékan angka
{
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);
}
lain lamun (Va == 0x0403) // Numeris panurunan
{
lamun (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);
}
}
waktos pos: Sep-19-2023