विषयसूची:

पुराने डिस्प्ले के साथ ESP32 - प्रोग्रेस बार: 6 स्टेप्स
पुराने डिस्प्ले के साथ ESP32 - प्रोग्रेस बार: 6 स्टेप्स

वीडियो: पुराने डिस्प्ले के साथ ESP32 - प्रोग्रेस बार: 6 स्टेप्स

वीडियो: पुराने डिस्प्ले के साथ ESP32 - प्रोग्रेस बार: 6 स्टेप्स
वीडियो: Using LVGL to Display Temperature & Humidity Graph using ESP32 & ILI9341 #esp32 #arduino #lvgl 2024, नवंबर
Anonim
Image
Image
वेमोस लोलिन ESP32 OLED
वेमोस लोलिन ESP32 OLED

आज हम जिस ESP32 के बारे में बात करने जा रहे हैं, वह पहले से ही डिस्प्ले ओलेड बिल्ट-इन के साथ आता है। यह फ़ंक्शन हमारे जीवन को बहुत आसान बनाता है, क्योंकि हम प्रकट होने वाले चर के मूल्य के बारे में एक धारणा बना सकते हैं। आपको डिबग विंडो को देखने की भी आवश्यकता नहीं है। इसके अलावा, आप अन्य बातों के अलावा, अभ्यावेदन इकट्ठा कर सकते हैं और प्रदर्शन चार्ट बना सकते हैं। इन लाभों के कारण, मैं इस मॉडल को एक शानदार उत्पाद मानता हूं, और हम आज Arduino IDE का उपयोग करके इसकी प्रोग्रामिंग करेंगे।

तो, इस वीडियो में हम एक प्रोग्रेस बार प्रोग्राम करेंगे। यह याद रखना महत्वपूर्ण है कि यदि आपके ESP32 में पुराना डिस्प्ले नहीं है, तो इसे अलग से खरीदना संभव है। इसके अलावा, यदि आपने कभी ESP32 प्रोग्राम नहीं किया है, तो मेरा सुझाव है कि आप इस वीडियो को देखें: ESP32 का वीडियो परिचय, जो इस विषय से अधिक विस्तार से संबंधित है।

चरण 1: पुस्तकालय

पुराने डिस्प्ले का उपयोग करने के लिए, हमें Arduino IDE में लाइब्रेरी को कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए, लिंक के माध्यम से पुस्तकालय डाउनलोड करें।

फ़ाइल को अनज़िप करें और इसे Arduino IDE के लाइब्रेरी फ़ोल्डर में पेस्ट करें।

C: /ProgramFiles(x86)/Arduino/पुस्तकालय

चरण 2: वेमोस लोलिन ESP32 OLED

Wemos Lolin इस ESP का नाम है। छवि में, काला भाग डिस्प्ले है और डिवाइस के बगल में, हम संपूर्ण पिनआउट प्रदर्शित करते हैं। जैसा कि दिखाया गया है, कई आईओ हैं जो हमें विभिन्न तत्वों को चालू और बंद करने की अनुमति देते हैं। साथ ही इस मॉडल में लेटेस्ट जनरेशन वाईफाई और ब्लूटूथ है।

चरण 3: उदाहरण

उदाहरण
उदाहरण

वीडियो में, आप हमारे तैयार प्रोजेक्ट को देख सकते हैं, और एक पोटेंशियोमीटर द्वारा नियंत्रित प्रगति पट्टी को प्रदर्शित करने के लिए पुराने डिस्प्ले का उपयोग कैसे करें।

चरण 4: विधानसभा

सभा
सभा

हमारी असेंबली के लिए मैंने 10k के एक पोटेंशियोमीटर का उपयोग किया, और मैंने कर्सर के GPIO25 को चालू किया। हमारे पास 3v3 और GND भी हैं, जैसा कि आप नीचे दिए गए चित्र में देख सकते हैं। यूएसबी से ही पावर आएगी।

चरण 5: कोड

सबसे पहले, हम पुस्तकालय "SSD1306.h" जोड़ते हैं। इससे हम पुराने डिस्प्ले को एक्सेस कर पाएंगे। इसके बाद, हम SSD1306 प्रकार का एक डिस्प्ले ऑब्जेक्ट बनाते हैं जो पुराने डिस्प्ले में दिखाई गई सामग्री को नियंत्रित करने के लिए जिम्मेदार होगा।

#include "SSD1306.h" // उपनाम के लिए #include "SSD1306Wire.h" //objeto controlador do display de led /* 0x3c: é um identificador único para comunicação do display pino 5 e 4 são os de comunicação (SDA, SDC) */ SSD1306 स्क्रीन (0x3c, 5, 4); // पिनो क्यू लिगामोस ओ पोटेंशियोमेट्रो #define PINO_POTENCIOMETRO 25 // यूटिलिजैडो पैरा फेजर ओ कोंटाडोर डे पोर्सेंटेजम इंट कोंटाडोर;

सेट अप

सेटअप () फ़ंक्शन में, हम अपने डिस्प्ले ऑब्जेक्ट को इनिशियलाइज़ करेंगे ताकि हम नियंत्रित कर सकें कि क्या प्रदर्शित किया जाएगा। इस ऑब्जेक्ट के माध्यम से, हम प्रदर्शित होने वाले टेक्स्ट के लिए लेखन स्रोत को भी कॉन्फ़िगर करेंगे। और, अंत में, हम मूल्य को पढ़ने के लिए पिन (विशेष रूप से, पिन जहां हमने पोटेंशियोमीटर को बदल दिया) को INPUT पर सेट किया।

शून्य सेटअप () {Serial.begin(११५२००); सीरियल.प्रिंट्लन (); सीरियल.प्रिंट्लन (); // इनिशियलाइज़ा ओ ओब्जेक्टो क्यू कंट्रोलारा ओ क्यू सेरा एक्सिबिडो और तेला स्क्रीन.इनिट (); //gira o display 180º (deixa de ponta kabeça) // display.flipScreenVertically(); // configura a fonte de escrita "ArialMT_Plain_10" Screen.setFont(ArialMT_Plain_10); // configura o pino para fazer a leitura do potenciômetro. पिनमोड (PINO_POTENCIOMETRO, INPUT); }

कुंडली

लूप () फ़ंक्शन में, हम वर्तमान पोटेंशियोमीटर मान पढ़ेंगे। हम देख सकते हैं कि हम मान को पढ़ने के तुरंत बाद "मानचित्र" फ़ंक्शन का उपयोग कर रहे हैं, क्योंकि पढ़ा गया मान प्रगति पट्टी में डालने के लिए बहुत अधिक है, इसलिए हम मान को 0 से 100 की सीमा के भीतर मैप करेंगे।

शून्य लूप () {// लिटुरा डो वेलोर पोटेंसीओमेट्रो इंट वेलोर = एनालॉग रीड (PINO_POTENCIOMETRO); // सीरियल.प्रिंट्लन (वीरता); // मैपेंडो ओ वेलोर डो पोटेंशियोमेट्रो पैरा ओ वेलोर दा बर्रा डे प्रोग्रेसो // पोटेंशियोमेट्रो फैज़ ए लेइटुरा डू वेलोर नो इंटरवेलो डी 0 ए 4095 // ए बारा डे प्रोग्रेसो एस्पेरा उम वेलोर एंट्रे 0 ई 100 कोंटाडोर = नक्शा (वीरता, 0, 4095), 0, 100); // लिम्पा टूडू ओ डिस्प्ले, अपागा या कॉन्टेडो दा तेला स्क्रीन। क्लियर (); // ++ काउंटर; // काउंटर> 100? काउंटर = 0: काउंटर = काउंटर; // desenha एक प्रगति पट्टी drawProgressBar (); //exibe na tela o que foi configurado até então. स्क्रीन डिस्प्ले(); देरी(10); }

फ़ंक्शन "ड्रॉप्रोग्रेस ()" में, हम पोटेंशियोमीटर से पढ़े गए मान का उपयोग करेंगे जो कि प्रोग्रेस बार में सेट करने के लिए वेरिएबल "percProgress" में सहेजा गया है। हम वर्तमान प्रतिशत को दर्शाते हुए प्रगति पट्टी के ठीक ऊपर एक टेक्स्ट भी रखेंगे।

// função para desenhar a प्रगति पट्टी कोई प्रदर्शन नहीं drawProgressBar () {Serial.print(">>"); Serial.println (contador); // desenha एक प्रगति पट्टी /* * drawProgressBar(x, y, चौड़ाई, ऊंचाई, मान); पैरामेट्रोस (पी): पी१: एक्स कोर्डेनाडा एक्स नो प्लेनो कार्टेसियानो पी२: वाई कोर्डेनाडा वाई नो प्लेनो कार्टेसियानो पी३: चौड़ाई कॉम्प्रिमेंटो दा बारा डे प्रोग्रेसो पी४: हाइट अल्तुरा दा बारा डे प्रोग्रेसो पी५: वैल्यू वेलोर क्यू ए बारा डे प्रोग्रेसो देवे अस्सुमिर */ Screen.drawProgressBar(10, 32, 100, 10, contador); // configura o alinhamento do texto que será escrito //ness caso alinharemos o texto ao centro screen.setTextAlignment(TEXT_ALIGN_CENTER); // एस्क्रेव ओ टेक्स्टो डे पोर्सेंटेजम / * * ड्रॉस्ट्रिंग (एक्स, वाई, टेक्स्ट); पैरामेट्रोस (पी): पी१: एक्स कोर्डेनाडा एक्स नो प्लेनो कार्टेसियानो पी२: वाई कोर्डेनाडा वाई नो प्लानो कार्टेसियानो पी३: स्ट्रिंग टेक्स्टो क्यू सेरा एक्सिबिडो */ स्क्रीन.ड्रास्ट्रिंग (६४, १५, स्ट्रिंग (कॉन्टाडोर) + "%"); // से ओ कॉन्टाडोर एस्टा एम ज़ीरो, एक स्ट्रिंग "वैलोर मिनिमो" को एस्क्रेव करें अगर (contador == 0) { Screen.drawString (64, 45, "वैलोर मिनिमो");] } }

चरण 6: कुछ अन्य दिलचस्प कार्य

प्रदर्शन

// डिस्प्ले को उल्टा रखता है

शून्य फ्लिपस्क्रीनखड़ी ();

चित्रकारी

// स्क्रीन से सिंगल पिक्सेल खींचता है

शून्य सेट पिक्सेल (int16_t x, int16_t y);

// एक रेखा खींचो

शून्य ड्रॉलाइन (int16_t x0, int16_t y0, int16_t x1, int16_t y1);

// एक आयत बनाएं

शून्य ड्रॉरेक्ट (int16_t x, int16_t y, int16_t चौड़ाई, int16_t ऊंचाई);

// एक चक्र बनाएं

शून्य ड्रॉसर्कल (int16_t x, int16_t y, int16_t त्रिज्या);

// एक सर्कल में भरें

शून्य भरण चक्र (int16_t x, int16_t y, int16_t त्रिज्या);

// एक क्षैतिज रेखा खींचें

शून्य आरेखण क्षैतिज रेखा (int16_t x, int16_t y, int16_t लंबाई);

// एक लंबवत रेखा खींचें

शून्य ड्रा वर्टिकललाइन (int16_t x, int16_t y, int16_t लंबाई);

मूलपाठ

// टेक्स्ट अलाइनमेंट को लिखे जाने के लिए सेट करता है

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

शून्य सेट टेक्स्ट एलाइनमेंट (OLEDDISPLAY_TEXT_ALIGNMENT टेक्स्ट एलाइनमेंट);

सिफारिश की: