Mündəricat:
- Addım 1: Kitabxana
- Addım 2: Wemos Lolin ESP32 OLED
- Addım 3: Nümunə
- Addım 4: Montaj
- Addım 5: Kod
- Addım 6: Bəzi digər maraqlı funksiyalar
Video: Ekran Oled ilə ESP32 - Tərəqqi Çubuğu: 6 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Bu gün bəhs edəcəyimiz ESP32, artıq Display Oled quraşdırılmış bir cihazdır. Bu funksiya həyatımızı çox asanlaşdırır, çünki ortaya çıxan dəyişənin dəyəri ilə bağlı təəssürat yarada bilərik. Bir ayıklama pəncərəsinə baxmaq lazım deyil. Ayrıca, digər şeylər arasında təqdimatlar toplaya və performans cədvəlləri çəkə bilərsiniz. Bu üstünlüklərə görə bu modeli fantastik bir məhsul hesab edirəm və bu gün Arduino IDE -dən istifadə edərək proqramlaşdıracağıq.
Beləliklə, bu videoda bir irəliləyiş çubuğu proqramlaşdıracağıq. Xatırlamaq vacibdir ki, ESP32 -də ekranınız yoxdursa, onu ayrıca almaq mümkündür. Ayrıca, heç bir ESP32 proqramlamamısınızsa, bu videoya baxmanızı təklif edirəm: mövzu ilə daha ətraflı məşğul olan ESP32 -yə VİDEO GİRİŞ.
Addım 1: Kitabxana
Oled ekrandan istifadə etmək üçün kitabxananı Arduino IDE -də konfiqurasiya etməliyik. Bunu etmək üçün kitabxananı link vasitəsilə yükləyin.
Faylı açın və Arduino IDE kitabxana qovluğuna yapışdırın.
C:/ProgramFiles (x86)/Arduino/kitabxanaları
Addım 2: Wemos Lolin ESP32 OLED
Wemos Lolin bu ESP -nin adıdır. Şəkildə qara hissə ekrandır və cihazın yanında bütün pinoutu göstəririk. Göstərildiyi kimi, müxtəlif elementləri açmağa və söndürməyə imkan verən bir neçə IO var. Bundan əlavə, bu model ən son nəsil WiFi və Bluetooth -a malikdir.
Addım 3: Nümunə
Videoda hazır layihəmizi və potensiometr tərəfindən idarə olunan bir irəliləyiş çubuğunu göstərmək üçün oled displeydən necə istifadə edəcəyinizi görə bilərsiniz.
Addım 4: Montaj
Quraşdırma üçün 10k potensiometrdən istifadə etdim və kursorun GPIO25 -i işə saldım. Aşağıdakı şəkildə gördüyünüz kimi 3v3 və GND də var. Güc USB -nin özündən gələcək.
Addım 5: Kod
Əvvəlcə "SSD1306.h" kitabxanasını əlavə edirik. Bununla, oled ekranına daxil olacağıq. Sonra, ekranda göstərilən məzmuna nəzarət etməkdən məsul olan SSD1306 tipli bir görüntü obyekti yaradırıq.
#include "SSD1306.h" // "SSD1306Wire.h" daxil etmək üçün digər adlar // led /* 0x3c ekranını idarə etmək üçün istifadə edin: 5 və ya 4 saniyəlik tarixlərdə (SDA, SDC)) */ SSD1306 ekranı (0x3c, 5, 4); // pino que ligamos və ya potenciometro #define PINO_POTENCIOMETRO 25 // istifadə üçün lazım olan hər şeyi ayırın;
Qurmaq
Setup () funksiyasında, nümayiş etdiriləcək şeyi idarə edə bilmək üçün görüntü obyektimizi işə salacağıq. Bu obyekt vasitəsi ilə, göstəriləcək mətnlər üçün yazı mənbəyini də konfiqurasiya edəcəyik. Və nəhayət, dəyəri oxumaq üçün pimi (konkret olaraq potensiometrini çevirdiyimiz pin) INPUT olaraq təyin etdik.
void setup () {Serial.begin (115200); Serial.println (); Serial.println (); // Məlumatların yoxlanılması və yoxlanılması üçün ekran.init (); // ekran 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10) yazı tipini təyin edin; // konfiqurasiya etmək və ya istifadə etmək üçün. pinMode (PINO_POTENCIOMETRO, GİRİŞ); }
Döngə
Loop () funksiyasında cari potensiometr dəyərini oxuyacağıq. Dəyəri oxuduqdan qısa müddət sonra "xəritə" funksiyasından istifadə etdiyimizi görə bilərik, çünki oxumaq dəyəri irəliləyiş çubuğuna qoymaq üçün çox yüksəkdir, buna görə də dəyəri 0 ilə 100 aralığında olacağı üçün xəritəyə salacağıq.
void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println(valor); // mapeando o valor do potenciometro para o valor da barra de progresso // potenciometro faz a leitura do valor no intervalo de a a 4095 // a barra de progresso espera um valor entre 0 e 100 contador = map (valor, 0, 4095), 0, 100); // ekranda göstərə biləcəyiniz şeylər, telun ekranında aydınlıq. təmiz (); // ++ sayğac; // sayğac> 100? sayğac = 0: sayğac = sayğac; // bir irəliləyiş çubuğu çəkməkProgressBar (); // əvvəllər konfiqurasiya edilə bilər. ekran.display (); gecikmə (10); }
"DrawProgress ()" funksiyasında, "percProgress" dəyişənində saxlanılan potensiometrdən oxunan dəyəri tərəqqi çubuğuna təyin etmək üçün istifadə edəcəyik. Tərəqqi çubuğunun üstünə cari faizi göstərən bir mətn də yerləşdirəcəyik.
// inkişaf etdirmə çubuğu yoxdur displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // bir irəliləyiş çubuğu / * * drawProgressBar (x, y, en, hündürlük, dəyər); parametros (p): p1: x coordenada X plano cartesiano yoxdur p2: y koordinat Y yox plano cartesiano p3: eni ibarətdir, həm də barra de progresso p4: hündürlük altura da barra de progresso p5: dəyər dəyəri bir barra de progresso deve fərziyyə */ screen.drawProgressBar (10, 32, 100, 10, kontador); // mətn yazmaq üçün konfiqurasiya etmək lazımdır // mətn və ya ekranı mərkəzləşdirmək üçün ekran.setTextAlignment (TEXT_ALIGN_CENTER); // mətn yazmaq / * * drawString (x, y, mətn); parametros (p): p1: x koordinat X yox plano kart2 p2: y koordinat Y yox plano kartesiano p3: simli mətn yazmaq üçün */ screen.drawString (64, 15, String (contador) + "%"); // sıfırdan sonra, "cəsarət mínimo" sətrini çıxarın, əgər (contador == 0) {screen.drawString (64, 45, "Qəhrəmanlıq"); } // o zaman 100, başqa bir sətir "valor máximo" edin, əgər (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}
Addım 6: Bəzi digər maraqlı funksiyalar
Ekran
// ekranı alt -üst edir
void flipScreenVertically ();
Rəsm
// ekrandan tək bir piksel çəkir
boşluq setPixel (int16_t x, int16_t y);
// xətt çəkmək
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1);
// düzbucaqlı çəkin
void drawRect (int16_t x, int16_t y, int16_t eni, int16_t hündürlük);
// bir dairə çəkmək
void drawCircle (int16_t x, int16_t y, int16_t radius);
// bir dairə doldurun
void fillCircle (int16_t x, int16_t y, int16_t yarıçapı);
// üfüqi bir xətt çəkin
void drawHorizontalLine (int16_t x, int16_t y, int16_t uzunluq);
// şaquli bir xətt çəkin
void drawVerticalLine (int16_t x, int16_t y, int16_t uzunluq);
Mətn
// yazılacaq mətn hizalanmasını təyin edir
// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH
void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);
Tövsiyə:
Sensorlu ekran Macintosh - Ekran üçün IPad Mini ilə Klassik Mac: 5 Addım (Şəkillərlə birlikdə)
Sensorlu ekran Macintosh | Klassik Mac Ekran üçün IPad Mini ilə: Bu, köhnə bir Macintoshun ekranını iPad mini ilə necə dəyişdirəcəyimə dair yeniləmə və yenidən işlənmiş dizaynımdır. Bu, illər ərzində hazırladığım 6 -cı əsərdir və bunun təkamülündən və dizaynından olduqca məmnunam
CircuitPython ilə İkili Rəng Çubuğu Qrafiki: 5 Addım (Şəkillərlə)
CircuitPython ilə İkiqat Rəng Çubuğu Grafiği: Pimoroni saytında bu LED bar-qrafikini gördüm və covid-19 kilidlənməsi zamanı ucuz və əyləncəli bir layihə ola biləcəyini düşündüm. Hər birində qırmızı və yaşıl rəngli 24 LED var. 12 seqment, buna görə nəzəri olaraq r göstərə bilməlisiniz
MicroPython ilə SSD1306 Oled ilə ESP32 Arayüzü: 5 addım
MicroPython ilə SSD1306 Oled ilə ESP32 Arayüzü: Micropython, pythonun optimallaşdırdığı və kiçik bir piton izidir. Yaddaş məhdudiyyətləri və aşağı enerji istehlakı olan quraşdırılmış cihaz üçün qurulması nəzərdə tutulmuşdur
ESP32 ilə PWM - Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: 6 addım
ESP32 ilə PWM | Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: Bu təlimatlarda Arduino IDE istifadə edərək ESP32 ilə PWM siqnallarının necə yaradılacağını görəcəyik. PWM əsasən hər hansı bir MCU -dan analoq çıxışı yaratmaq üçün istifadə olunur və bu analog çıxış 0V ilə 3.3V arasında ola bilər (esp32 vəziyyətində) & dan
Bir Deodorant Çubuğu ilə Tez Ucuz LED Fənər Necə Hazırlanır!: 8 Addım
Bir Deodorant Çubuğu ilə Tez Ucuz LED Fənər Necə Hazırlanır ?: Bu Təlimat kitabında sizə bir dezodorant çubuğundan tez və ucuz LED fənərin necə hazırlanacağını göstərəcəyəm! (və bir neçə başqa hissə)