—— DWIN ясаучылар форумыннан
Бу санда без сезгә DWIN уйлап табучылар форумы: интеллектуаль мәче азык-төлек контроле системасы премиясе лауреаты булган ачык чыганак белән таныштырырбыз. Инженерлар DWIN акыллы экранын кулланып, температураны, дымны, калган күләмдә мәче ризыкларын күзәттеләр, һәм мәчеләрнең ашау язмаларын саклап калдылар. Алар шулай ук UI сыя буяу стиле комплектын уникаль итеп эшләделәр, шулай ук бармак белән кагылганда сыя басу эффектын, сенсорның кире визуаль кабул итү көчен арттыру өчен.
Кереш:
1.UI рәсем материалы
DWIN акыллы экран рәсемнәр, аудио һәм башка материалларга нигезләнеп UI үсешен тәмамлый, экран күрсәтү эчтәлеге буенча алдан әзерләнергә кирәк.
![АКШ (2)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bce84b7f87048.jpg)
2. Интерфейс үсеше
DGUS программа тәэминаты UI эффектын катлам каплау аша торгыза, әзерләнгән материалларны DGUS программасында тулы рәсемгә берләштерә, дисплей һәм сенсор функцияләрен куя.
![АКШ (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bd07e78a77806.jpg)
3. Басу эффектларын һәм тавыш эффектларын тормышка ашырыгыз
Сенсор позициясе 51 программа ярдәмендә алына, басу эффекты бармак хәрәкәтен күзәтә, һәм төп озату тавыш эффекты да ирешелә.
(1) Сенсор урыны кодын ачыклагыз һәм аудио уйнагыз:
буш TouchDetect ()
{
u16 һәм [3] = 0;
u8 i = 0;
өчен (i = 0; 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];
wrote_dgus_vp (0x00A0, уйнау, 2);
}
}
(2) Сенсор эффектын күрсәтү коды түбәндәгечә:
буш TouchStart ()
{
if (touchAnimationFlag == 1)
{
if (touchAnimationCnt == 0)
{
Язу_Дгус (0x5011, touchPosX - 100);
Язу_Дгус (0x5012, touchPosY - 100);
}
Язу_Дгус (0x5000, touchAnimationCnt);
touchAnimationCnt ++;
if (touchAnimationCnt == 6)
{
touchAnimationFlag = 0;
Язу_Дгус (0х5011, 1024);
Язу_Дгус (0х5012, 600);
}
}
}
4. Киләсе адым - экран аша тиешле параметрларны кую, аннары мәче азыкының автоматик туклану функциясен тормышка ашыру өчен мәгълүматны ESP32 аша мәче азык контроллерына тапшыру. Конкрет код түбәндәгечә:
// Кнопка статусын алыгыз
буш get_key_status ()
{
int i = 0;
// u16 Va = Read_Dgus (өстәмә);
u16 Va = Read_Dgus (0x1000);
if (Va! = 0x0000)
{
//С.яшерен бит
if (Va == 0x0103) // g санын урнаштырыгыз
{
u16 күчергеч [2] = {0x5A01, 19};
setNum = placeGramNum;
backPage = 1; // Статус битенә кайту
Язу_Дгус (0x4000 + 0, setNum% 10);
Язу_Дгус (0x4000 + 2, setNum / 10% 10);
Язу_Дгус (0x4000 + 4, setNum / 100% 10);
Язу_Дгус (0x4000 + 6, setNum / 1000% 10);
wrote_dgus_vp (0x0084, күчергеч, 2);
}
бүтән булса (Va == 0x0102)
{
OneSendData3 (placeGramNum); //Урынмәче ризыгыбер тапкыр
}
бүтән булса (Va == 0x0101) // Битне көйләү
{
u16 күчергеч [2] = {0x5A01, 3};
өчен (i = 0; i
{
if (i == 0)
{
Язу_Дгус (0x3070 + i * 0x10 + 0, агымдагы вакыт [i]% 10);
Язу_Дгус (0x3070 + i * 0x10 + 2, агымдагы вакыт [i] / 10% 10);
Язу_Дгус (0x3070 + i * 0x10 + 4, агымдагы вакыт [i] / 100% 10);
Язу_Дгус (0x3070 + i * 0x10 + 6, агымдагы вакыт [i] / 1000% 10);
}
бүтән
{
Язу_Дгус (0x3070 + i * 0x10 + 0, агымдагы вакыт [i]% 10);
Язу_Дгус (0x3070 + i * 0x10 + 2, агымдагы вакыт [i] / 10% 10);
}
}
wrote_dgus_vp (0x0084, күчергеч, 2); // көйләүләр битен кертегез
}
бүтән булса (Va == 0x0100) //Р.экорд бите
{
u16 күчергеч бите [2] = {0x5A01, 2};
өчен (i = 0; i
{
if (i == 0)
{
Яз_Дгус (0x2000 + i * 0x10 + 0, eatFeedList [0] [i]% 10);
Язу_Дгус (0x2000 + i * 0x10 + 2, eatFeedList [0] [i] / 10% 10);
Язу_Дгус (0x2000 + i * 0x10 + 4, eatFeedList [0] [i] / 100% 10);
Язу_Дгус (0x2000 + i * 0x10 + 6, eatFeedList [0] [i] / 1000% 10);
}
бүтән
{
Яз_Дгус (0x2000 + i * 0x10 + 0, eatFeedList [0] [i]% 10);
Язу_Дгус (0x2000 + i * 0x10 + 2, eatFeedList [0] [i] / 10% 10);
}
}
wrote_dgus_vp (0x0084, күчергеч, 2); // Язма битен кертегез
}
//Р.экорд бите
бүтән очракта (Va == 0x0201) // Алдагы битне язып алыгыз
{
if (lookEatCnt> 0)
{
lookEatCnt--;
өчен (i = 0; 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);
Язу_Дгус (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 == 0x0202) // Киләсе битне яздырыгыз
{
if (lookEatCnt
{
lookEatCnt ++;
өчен (i = 0; 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);
Язу_Дгус (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)
{
if (timeMode == 1)
{
timeMode = 0;
Язу_Дгус (0x3A12, 139);
}
}
бүтән булса (Va == 0x0303)
{
if (timeMode == 0)
{
timeMode = 1;
Язу_Дгус (0x3A12, 242);
}
}
бүтән очракта (Va> = 0x0304 && Va
{
u16 күчергеч [2] = {0x5A01, 19};
backPage = 3;
backNum = һәм;
setNum = timrIntervalHour [Va - 0x0304];
Язу_Дгус (0x4000 + 0, setNum% 10);
Язу_Дгус (0x4000 + 2, setNum / 10% 10);
Язу_Дгус (0x4000 + 4, setNum / 100% 10);
Язу_Дгус (0x4000 + 6, setNum / 1000% 10);
wrote_dgus_vp (0x0084, күчергеч, 2);
}
бүтән очракта (Va> = 0x030A && Va
{
u16 күчергеч [2] = {0x5A01, 19};
backPage = 3;
backNum = һәм;
setNum = агымдагы вакыт [Va - 0x030A];
Язу_Дгус (0x4000 + 0, setNum% 10);
Язу_Дгус (0x4000 + 2, setNum / 10% 10);
Язу_Дгус (0x4000 + 4, setNum / 100% 10);
Язу_Дгус (0x4000 + 6, setNum / 1000% 10);
wrote_dgus_vp (0x0084, күчергеч, 2);
}
//А.мәгълүмат бите
бүтән булса (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);
}
бүтән очракта (backPage == 3)
{
if (backNum> = 0x0304 && backNum
{
u16 сайлау = 0;
сайлау = (backNum - 0x0304) * 0x10;
timrIntervalHour [backNum - 0x0304] = setNum;
Язу_Дгус (0x3010 + сайлау + 0, setNum% 10);
Язу_Дгус (0x3010 + сайлау + 2, setNum / 10% 10);
}
бүтән очракта (backNum> = 0x030A && backNum
{
u16 сайлау = 0;
сайлау = (backNum - 0x0304) * 0x10;
currentTime [backNum - 0x030A] = setNum;
if (backNum == 0x030A)
{
Язу_Дгус (0x3010 + сайлау + 0, setNum% 10);
Язу_Дгус (0x3010 + сайлау + 2, setNum / 10% 10);
Язу_Дгус (0x3010 + сайлау + 4, setNum / 100% 10);
Язу_Дгус (0x3010 + сайлау + 6, setNum / 1000% 10);
}
бүтән
{
Язу_Дгус (0x3010 + сайлау + 0, setNum% 10);
Язу_Дгус (0x3010 + сайлау + 2, setNum / 10% 10);
}
}
}
wrote_dgus_vp (0x0084, күчергеч, 2);
}
бүтән булса (Va == 0x0401) //Кире
{
u16 күчергеч бите [2] = {0x5A01, 0x0000};
күчергеч [1] = backPage;
wrote_dgus_vp (0x0084, күчергеч, 2);
}
бүтән булса (Va == 0x0402) // Сан арту
{
setNum ++;
Язу_Дгус (0x4000 + 0, setNum% 10);
Язу_Дгус (0x4000 + 2, setNum / 10% 10);
Язу_Дгус (0x4000 + 4, setNum / 100% 10);
Язу_Дгус (0x4000 + 6, setNum / 1000% 10);
}
бүтән булса (Va == 0x0403) // Сан кимү
{
if (setNum> 0)
setNum--;
Язу_Дгус (0x4000 + 0, setNum% 10);
Язу_Дгус (0x4000 + 2, setNum / 10% 10);
Язу_Дгус (0x4000 + 4, setNum / 100% 10);
Язу_Дгус (0x4000 + 6, setNum / 1000% 10);
}
Яз_Дгус (0х1000, 0);
}
}
Пост вакыты: 19-2023 сентябрь