——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) स्पर्श स्थान कोड शोधा आणि ऑडिओ प्ले करा:
void TouchDetect()
{
u16 आणि[3] = 0;
u8 i = 0;
साठी(i = 0;i
{
Va[i] = Read_Dgus(0x0016 + i);
जर(Va[0] == 0x5A01)
{
}
इतर
{
खंडित;
}
}
if(i != 0) //प्रविष्ट करण्यासाठी प्रथम क्लिक करा
{
u16 play[2] = {0x0001, 0x4000};
touchAnimationFlag = 1;
touchAnimationCnt = 0;
touchPosX = Va[1];
touchPosY = Va[2];
write_dgus_vp(0x00A0, प्ले, 2);
}
}
(२) टच इफेक्ट डिस्प्लेचा कोड खालीलप्रमाणे आहे:
शून्य टचस्टार्ट()
{
जर (टच ॲनिमेशन ध्वज == 1)
{
जर (touchAnimationCnt == 0)
{
Write_Dgus(0x5011, touchPosX - 100);
Write_Dgus(0x5012, touchPosY - 100);
}
Write_Dgus(0x5000, touchAnimationCnt);
touchAnimationCnt++;
जर (touchAnimationCnt == 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)
{
//एसलपलेले पृष्ठ
if(Va == 0x0103) //g ची संख्या ठेवा
{
u16 switchpage[2] = {0x5A01, 19};
setNum = placeGramNum;
बॅकपेज = 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 switchpage[2] = {0x5A01, 3};
साठी(i = 0;i
{
जर(i == 0)
{
Write_Dgus(0x3070 + i * 0x10 + 0, चालू वेळ[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, चालू वेळ[i] % 10);
Write_Dgus(0x3070 + i * 0x10 + 2, चालू वेळ[i] / 10 % 10);
}
}
write_dgus_vp(0x0084, स्विचपेज, 2); //सेटिंग्ज पृष्ठ प्रविष्ट करा
}
अन्यथा जर(Va == 0x0100) //आरecord पृष्ठ
{
u16 switchpage[2] = {0x5A01, 2};
साठी(i = 0;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); // रेकॉर्ड पृष्ठ प्रविष्ट करा
}
//आरecord पृष्ठ
else if(Va == 0x0201) // रेकॉर्ड पृष्ठ मागील पृष्ठ
{
जर (lookEatCnt > 0)
{
lookEatCnt--;
साठी(i = 0;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) //पुढील पान रेकॉर्ड करा
{
जर (lookEatCnt
{
lookEatCnt++;
साठी(i = 0;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)
{
जर (टाइममोड == 1)
{
timeMode = 0;
Write_Dgus(0x3A12, 139);
}
}
अन्यथा जर(Va == 0x0303)
{
जर (टाइममोड == 0)
{
timeMode = 1;
Write_Dgus(0x3A12, 242);
}
}
अन्यथा जर(Va >= 0x0304 && Va
{
u16 switchpage[2] = {0x5A01, 19};
बॅकपेज = 3;
backNum = आणि;
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
{
u16 switchpage[2] = {0x5A01, 19};
बॅकपेज = 3;
backNum = आणि;
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);
}
//एडेटा पृष्ठ समायोजित करा
अन्यथा जर(Va == 0x0400) //पुष्टी
{
u16 switchpage[2] = {0x5A01, 0x0000};
switchpage[1] = बॅकपेज;
if(backPage == 1) //स्थिती पृष्ठावर परत या
{
placeGramNum = setNum;
Write_Dgus(0x1140 + 0, placeGramNum % 10);
Write_Dgus(0x1140 + 2, placeGramNum / 10 % 10);
}
अन्यथा जर (बॅकपेज == 3)
{
जर (backNum >= 0x0304 && backNum
{
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
{
u16 निवडा = 0;
निवडा = (backNum - 0x0304) * 0x10;
चालू वेळ [backNum - 0x030A] = setNum;
जर (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, स्विचपेज, 2);
}
अन्यथा जर(Va == 0x0401) //मागे
{
u16 switchpage[2] = {0x5A01, 0x0000};
switchpage[1] = बॅकपेज;
write_dgus_vp(0x0084, स्विचपेज, 2);
}
अन्यथा जर(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);
}
अन्यथा (Va == 0x0403) //संख्यात्मक घट
{
जर (सेटनंबर > 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