সুচিপত্র:

ESP32 ডিসপ্লে ওলেড সহ - অগ্রগতি বার: 6 টি ধাপ
ESP32 ডিসপ্লে ওলেড সহ - অগ্রগতি বার: 6 টি ধাপ

ভিডিও: ESP32 ডিসপ্লে ওলেড সহ - অগ্রগতি বার: 6 টি ধাপ

ভিডিও: ESP32 ডিসপ্লে ওলেড সহ - অগ্রগতি বার: 6 টি ধাপ
ভিডিও: Corona Test System: Ritu Ahmed 2024, নভেম্বর
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

আজ আমরা যে ESP32 সম্পর্কে কথা বলতে যাচ্ছি তা হল ইতিমধ্যেই ডিসপ্লে ওলেড বিল্ট-ইন সহ। এই ফাংশনটি আমাদের জীবনকে অনেক সহজ করে তোলে, কারণ আমরা যে ভেরিয়েবলের মান সম্পর্কে একটি ধারণা তৈরি করতে পারি। এমনকি আপনাকে একটি ডিবাগ উইন্ডো দেখতে হবে না। এছাড়াও, আপনি অন্যান্য জিনিসের মধ্যে উপস্থাপনা একত্রিত করতে এবং পারফরম্যান্স চার্ট আঁকতে পারেন। এই সুবিধাগুলির কারণে, আমি এই মডেলটিকে একটি দুর্দান্ত পণ্য হিসাবে বিবেচনা করি এবং আমরা আজ এটি Arduino IDE ব্যবহার করে প্রোগ্রামিং করব।

সুতরাং, এই ভিডিওতে আমরা একটি অগ্রগতি বার প্রোগ্রাম করব। এটা মনে রাখা জরুরী যে যদি আপনার ESP32 এর ডিসপ্লে ওলেড না থাকে, তাহলে এটি আলাদাভাবে কেনা সম্ভব। এছাড়াও, যদি আপনি কখনও ESP32 প্রোগ্রাম না করে থাকেন, আমি আপনাকে এই ভিডিওটি দেখার পরামর্শ দিচ্ছি: ESP32 এর ভিডিও পরিচয়, যা বিষয়টির সাথে আরও বিস্তারিতভাবে কাজ করে।

ধাপ 1: লাইব্রেরি

ওলেড ডিসপ্লে ব্যবহার করার জন্য, আমাদের Arduino IDE তে লাইব্রেরি কনফিগার করতে হবে। এটি করার জন্য, লিঙ্কটির মাধ্যমে লাইব্রেরি ডাউনলোড করুন।

ফাইলটি আনজিপ করুন এবং Arduino IDE এর লাইব্রেরি ফোল্ডারে পেস্ট করুন।

C:/ProgramFiles (x86)/Arduino/লাইব্রেরি

ধাপ 2: Wemos Lolin ESP32 OLED

Wemos Lolin এই ESP এর নাম। ছবিতে, কালো অংশটি প্রদর্শন এবং, ডিভাইসের পাশে, আমরা পুরো পিনআউট প্রদর্শন করি। যেমন দেখানো হয়েছে, বেশ কয়েকটি আইও রয়েছে যা আমাদের বিভিন্ন উপাদান চালু এবং বন্ধ করতে দেয়। এছাড়াও, এই মডেলটিতে রয়েছে লেটেস্ট জেনারেশন ওয়াইফাই এবং ব্লুটুথ।

ধাপ 3: উদাহরণ

উদাহরণ
উদাহরণ

ভিডিওতে, আপনি আমাদের প্রস্তুত প্রজেক্টটি দেখতে পারেন, এবং একটি পোটেন্টিওমিটার দ্বারা নিয়ন্ত্রিত একটি অগ্রগতি বার প্রদর্শন করতে কিভাবে ওলেড ডিসপ্লে ব্যবহার করবেন।

ধাপ 4: সমাবেশ

সমাবেশ
সমাবেশ

আমাদের সমাবেশের জন্য আমি 10k এর একটি potentiometer ব্যবহার করেছি, এবং আমি কার্সারের GPIO25 চালু করেছি। আমাদের 3v3 এবং GND আছে, যেমন আপনি নীচের চিত্রে দেখতে পাচ্ছেন। ইউএসবি থেকেই পাওয়ার আসবে।

ধাপ 5: কোড

প্রথমে, আমরা "SSD1306.h" লাইব্রেরি যোগ করি। এর সাহায্যে আমরা ওলেড ডিসপ্লে অ্যাক্সেস করব। এর পরে, আমরা SSD1306 টাইপের একটি ডিসপ্লে অবজেক্ট তৈরি করি যা ওলেড ডিসপ্লেতে দেখানো কন্টেন্ট নিয়ন্ত্রণের জন্য দায়ী থাকবে।

#অন্তর্ভুক্ত "SSD1306.h" // উপনাম #অন্তর্ভুক্ত "SSD1306Wire.h" // objeto controlador do display de led /* 0x3c: ident um identificador único para comunicação do display pino 5 e 4 são os de comunicação (SDA, SDC) */ SSD1306 স্ক্রিন (0x3c, 5, 4); // পিনো কিউ লিগামোস ও পোটেনসিওমেট্রো #ডিফাইন পিনো_পোটেনসিওমেট্রো 25 // ইউটিলিজাডো প্যারা ফাজার ও কন্টেডোর ডি পোর্সেন্টেজম ইন্ট কনটডোর;

সেটআপ

সেটআপ () ফাংশনে, আমরা আমাদের ডিসপ্লে অবজেক্টটি আরম্ভ করব যাতে আমরা কী প্রদর্শন করা হবে তা নিয়ন্ত্রণ করতে পারি। এই বস্তুর মাধ্যমে, আমরা যে লেখাগুলি প্রদর্শিত হবে তার জন্য লেখার উৎস কনফিগার করব। এবং, পরিশেষে, আমরা পিন সেট করি (বিশেষ করে, পিন যেখানে আমরা পোটেন্টিওমিটারটি চালু করেছি) মান পড়ার জন্য INPUT এ।

অকার্যকর সেটআপ () {Serial.begin (115200); Serial.println (); Serial.println (); // Inicializa o objeto que controlará o que será exibido na tela screen.init (); // gira o display 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // 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 এর মধ্যে মানচিত্র করব।

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); // সিরিয়াল.প্রিন্টলন (মূল্যবান); // mapeando o valor do potenciometro para o valor da barra de progresso // potenciometro faz a leitura do valor no intervalo de 0 a 4095 // a barra de progresso espera um valor entre 0 e 100 contador = map (valor, 0, 4095, 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ কাউন্টার; // কাউন্টার> 100? কাউন্টার = 0: কাউন্টার = কাউন্টার; // desenha a progress bar drawProgressBar (); // exibe na tela o que foi configurado até então। পর্দা প্রদর্শন(); বিলম্ব (10); }

"DrawProgress ()" ফাংশনে, আমরা অগ্রগতি বারে সেট করতে "percProgress" ভেরিয়েবলে সংরক্ষিত পোটেন্টিওমিটার থেকে পড়া মান ব্যবহার করব। আমরা প্রগতি বারের ঠিক উপরে একটি পাঠ্য স্থাপন করব, যা বর্তমান শতাংশ নির্দেশ করে।

// função para desenhar a progress bar no displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha a progress bar / * * drawProgressBar (x, y, width, height, value); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: width comprimento da barra de progresso p4: height altura da barra de progresso p5: value valor que a barra de progresso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, contador); // configura o alinhamento do texto que será escrito // nesse caso alinharemos o texto ao centro screen.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * drawString (x, y, text); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: string texto que será exibido */ screen.drawString (64, 15, String (contador) + "%"); // se o contador está em zero, escreve a string "valor mínimo" if (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, escreve a string "valor máximo" else if (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

ধাপ 6: কিছু অন্যান্য আকর্ষণীয় কাজ

প্রদর্শন

// ডিসপ্লে উল্টো করে রাখে

অকার্যকর flipScreenVertically ();

অঙ্কন

// পর্দা থেকে একটি একক পিক্সেল আঁকে

অকার্যকর পিক্সেল (int16_t x, int16_t y);

// একটি লাইন আঁক

অকার্যকর ড্র লাইন (int16_t x0, int16_t y0, int16_t x1, int16_t y1);

// একটি আয়তক্ষেত্র আঁকুন

অকার্যকর drawRect (int16_t x, int16_t y, int16_t প্রস্থ, int16_t উচ্চতা);

// একটি বৃত্ত আঁক

অকার্যকর ড্র বৃত্ত (int16_t x, int16_t y, int16_t ব্যাসার্ধ);

// একটি বৃত্ত পূরণ করুন

void fillCircle (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

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

প্রস্তাবিত: