——DWIN Developer Forumundan
Bu buraxılışda biz sizə DWIN Developer Forumundan mükafat qazanmış açıq mənbə işi təqdim edəcəyik: Ağıllı Pişik Qidasına Nəzarət Sistemi.Mühəndislər pişik yeminin temperaturunu, rütubətini və qalan miqdarını izləmək və pişiyin yemək yemək qeydlərini saxlamaq üçün DWIN smart ekranından istifadə ediblər.Onlar həmçinin toxunma rəyinin vizual qavranılmasını artırmaq üçün mürəkkəb rəsm üslubu UI dəstini, eləcə də barmaqla toxunduqda mürəkkəb klik effektini unikal şəkildə tərtib etdilər.
Giriş:
1.UI şəkil materialı
DWIN smart ekranı şəkillər, audio və ekranın məzmununa uyğun olaraq əvvəlcədən hazırlanmalı olan digər materiallar əsasında UI inkişafını tamamlayır.
2. İnterfeys inkişafı
DGUS proqramı təbəqə örtüyü vasitəsilə UI effektini bərpa edir, hazırlanmış materialları DGUS proqramında tam təsvirdə birləşdirir, ekran və toxunma funksiyalarını təyin edir.
3. Klik effektləri və səs effektlərini həyata keçirin
Toxunma mövqeyi 51 proqramı vasitəsilə əldə edilir, basma effekti barmağın hərəkətini izləyir və əsas müşayiət səs effekti də əldə edilir.
(1) Toxunma yeri kodunu aşkar edin və səsi səsləndirin:
void TouchDetect()
{
u16 Va[3] = 0;
u8 i = 0;
üçün(i = 0;i < 3;i++)
{
Va[i] = Read_Dgus(0x0016 + i);
əgər(Va[0] == 0x5A01)
{
}
başqa
{
fasilə;
}
}
if(i != 0) //Daxil olmaq üçün birinci klikləyin
{
u16 play[2] = {0x0001, 0x4000};
touchAnimationFlag = 1;
touchAnimationCnt = 0;
touchPosX = Va[1];
touchPosY = Va[2];
write_dgus_vp(0x00A0, oyun, 2);
}
}
(2) Toxunma effekti ekranı üçün kod aşağıdakı kimidir:
TouchStart-ı ləğv edin()
{
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. Növbəti addım müvafiq parametrləri ekran vasitəsilə təyin etmək və sonra pişik qidasının avtomatik qidalanma funksiyasını həyata keçirmək üçün məlumatları ESP32 vasitəsilə pişik qidası nəzarətçisinə ötürməkdir.Xüsusi kod aşağıdakı kimidir:
//Düymə statusunu əldə edin
get_key_statusunu ləğv edin()
{
int i = 0;
//u16 Va=Read_Dgus(addr);
u16 Va=Read_Dgus(0x1000);
əgər(Va != 0x0000)
{
//Status səhifəsi
if(Va == 0x0103) //g sayını yerləşdirin
{
u16 keçid səhifəsi[2] = {0x5A01, 19};
setNum = placeGramNum;
arxa səhifə = 1;//Status səhifəsinə qayıdın
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, keçid səhifəsi, 2);
}
başqa əgər (Va == 0x0102)
{
OneSendData3(placeGramNum);//yerpişik yemibir dəfə
}
else if(Va == 0x0101) //Parametrlər səhifəsi
{
u16 keçid səhifəsi[2] = {0x5A01, 3};
üçün(i = 0;i < 6;i++)
{
əgər (i == 0)
{
Write_Dgus(0x3070 + i * 0x10 + 0, cariTime[i] % 10);
Write_Dgus(0x3070 + i * 0x10 + 2, cariTime[i] / 10 % 10);
Write_Dgus(0x3070 + i * 0x10 + 4, cariTime[i] / 100 % 10);
Write_Dgus(0x3070 + i * 0x10 + 6, cariTime[i] / 1000 % 10);
}
başqa
{
Write_Dgus(0x3070 + i * 0x10 + 0, cariTime[i] % 10);
Write_Dgus(0x3070 + i * 0x10 + 2, cariTime[i] / 10 % 10);
}
}
write_dgus_vp(0x0084, keçid səhifəsi, 2);//Parametrlər səhifəsinə daxil olun
}
başqa əgər (Va == 0x0100) //Rekord səhifəsi
{
u16 keçid səhifəsi[2] = {0x5A01, 2};
üçün(i = 0;i < 6;i++)
{
əgər (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);
}
başqa
{
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, keçid səhifəsi, 2);//Qeyd səhifəsinə daxil olun
}
//Rekord səhifəsi
else if(Va == 0x0201) //Səhifəni qeyd edin əvvəlki səhifə
{
if(lookEatCnt > 0)
{
lookEatCnt--;
üçün(i = 0;i < 6;i++)
{
əgər (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);
}
başqa
{
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) //Növbəti səhifəni qeyd edin
{
if(lookEatCnt < eatCnt - 1)
{
lookEatCnt++;
üçün(i = 0;i < 6;i++)
{
əgər (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);
}
başqa
{
Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);
Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);
}
}
}
}
// Səhifənin qurulması
başqa əgər (Va == 0x0302)
{
if(zaman rejimi == 1)
{
timeMode = 0;
Write_Dgus(0x3A12, 139);
}
}
başqa əgər (Va == 0x0303)
{
əgər (zaman rejimi == 0)
{
timeMode = 1;
Write_Dgus(0x3A12, 242);
}
}
başqa if(Va >= 0x0304 && Va <= 0x0309)
{
u16 keçid səhifəsi[2] = {0x5A01, 19};
arxa səhifə = 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, keçid səhifəsi, 2);
}
başqa əgər(Va >= 0x030A && Va <= 0x030F)
{
u16 keçid səhifəsi[2] = {0x5A01, 19};
arxa səhifə = 3;
backNum = Va;
setNum = cari vaxt[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, keçid səhifəsi, 2);
}
//Aməlumat səhifəsini tənzimləyin
başqa əgər (Va == 0x0400) //Təsdiq edin
{
u16 keçid səhifəsi[2] = {0x5A01, 0x0000};
keçid səhifəsi [1] = arxa səhifə;
if(backPage == 1) //Status səhifəsinə qayıdın
{
placeGramNum = setNum;
Write_Dgus(0x1140 + 0, placeGramNum % 10);
Write_Dgus(0x1140 + 2, placeGramNum / 10 % 10);
}
başqa əgər (arxa səhifə == 3)
{
if(backNum >= 0x0304 && backNum <= 0x0309)
{
u16 seçin = 0;
seçin = (backNum - 0x0304) * 0x10;
timrIntervalHour[backNum - 0x0304] = setNum;
Write_Dgus(0x3010 + seçin + 0, setNum % 10);
Write_Dgus(0x3010 + seçin + 2, setNum / 10 % 10);
}
başqa əgər (geri Num >= 0x030A && geri Num <= 0x030F)
{
u16 seçin = 0;
seçin = (backNum - 0x0304) * 0x10;
cariTime[backNum - 0x030A] = setNum;
əgər (geri Num == 0x030A)
{
Write_Dgus(0x3010 + seçin + 0, setNum % 10);
Write_Dgus(0x3010 + seçin + 2, setNum / 10 % 10);
Write_Dgus(0x3010 + seçin + 4, setNum / 100 % 10);
Write_Dgus(0x3010 + seçin + 6, setNum / 1000 % 10);
}
başqa
{
Write_Dgus(0x3010 + seçin + 0, setNum % 10);
Write_Dgus(0x3010 + seçin + 2, setNum / 10 % 10);
}
}
}
write_dgus_vp(0x0084, keçid səhifəsi, 2);
}
başqa if(Va == 0x0401) //Geri
{
u16 keçid səhifəsi[2] = {0x5A01, 0x0000};
keçid səhifəsi [1] = arxa səhifə;
write_dgus_vp(0x0084, keçid səhifəsi, 2);
}
else if(Va == 0x0402) //Ədəd artım
{
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) //Ədəd azalma
{
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);
}
}
Göndərmə vaxtı: 19 sentyabr 2023-cü il