ዝርዝር ሁኔታ:

ESP32 ከማሳያ ኦሌድ ጋር - የእድገት አሞሌ 6 ደረጃዎች
ESP32 ከማሳያ ኦሌድ ጋር - የእድገት አሞሌ 6 ደረጃዎች

ቪዲዮ: ESP32 ከማሳያ ኦሌድ ጋር - የእድገት አሞሌ 6 ደረጃዎች

ቪዲዮ: ESP32 ከማሳያ ኦሌድ ጋር - የእድገት አሞሌ 6 ደረጃዎች
ቪዲዮ: Arduino Nano, BME280 and SSD1306 OLED Weather Station 2024, ህዳር
Anonim
Image
Image
ወሞስ ሎሊን ESP32 OLED
ወሞስ ሎሊን ESP32 OLED

ዛሬ የምንነጋገረው ESP32 ቀድሞውኑ ከማሳያ ኦሌድ አብሮገነብ ጋር የሚመጣው ነው። የሚታየውን ተለዋዋጭ እሴት በተመለከተ ግንዛቤ ሊኖረን ስለሚችል ይህ ተግባር ህይወታችንን በጣም ቀላል ያደርገዋል። የማረም መስኮት እንኳን ማየት የለብዎትም። እንዲሁም ፣ ከሌሎች ነገሮች መካከል ውክልናዎችን መሰብሰብ እና የአፈፃፀም ገበታዎችን መሳል ይችላሉ። በእነዚህ ጥቅሞች ምክንያት ፣ ይህንን ሞዴል እንደ ድንቅ ምርት እቆጥረዋለሁ ፣ እና ዛሬ አርዱዲኖ አይዲኢን በመጠቀም ፕሮግራሙን እናዘጋጃለን።

ስለዚህ ፣ በዚህ ቪዲዮ ውስጥ የእድገት አሞሌን እናዘጋጃለን። የእርስዎ ESP32 የማሳያ ዘይት ከሌለው ለብቻው ሊገዛ እንደሚችል ማስታወሱ አስፈላጊ ነው። እንዲሁም ፣ ESP32 ን በጭራሽ ፕሮግራም ካላደረጉ ፣ ይህንን ቪዲዮ እንዲመለከቱ እመክርዎታለሁ - የቪዲዮው መግቢያ ለ ESP32 ፣ ስለ ጉዳዩ የበለጠ በዝርዝር የሚመለከተው።

ደረጃ 1 ቤተ -መጽሐፍት

የተቀባውን ማሳያ ለመጠቀም ፣ በአርዱዲኖ አይዲኢ ውስጥ ያለውን ቤተ -መጽሐፍት ማዋቀር አለብን። ይህንን ለማድረግ በአገናኝ በኩል ቤተ -መጽሐፍቱን ያውርዱ።

ፋይሉን ይንቀሉ እና በአርዱዲኖ አይዲኢ ቤተመፃህፍት አቃፊ ውስጥ ይለጥፉት።

ሐ:/ProgramFiles (x86)/አርዱinoኖ/ቤተመፃህፍት

ደረጃ 2 - ወሞስ ሎሊን ESP32 OLED

ዌሞስ ሎሊን የዚህ ESP ስም ነው። በምስሉ ውስጥ ፣ ጥቁር ክፍሉ ማሳያ ነው ፣ እና ከመሣሪያው ቀጥሎ ፣ ሙሉውን ፒኖትን እናሳያለን። እንደሚታየው ፣ የተለያዩ ንጥረ ነገሮችን ለማብራት እና ለማጥፋት የሚያስችሉን በርካታ አይኦዎች አሉ። በተጨማሪም ፣ ይህ ሞዴል የቅርብ ጊዜ ትውልድ WiFi እና ብሉቱዝ አለው።

ደረጃ 3 - ምሳሌ

ለምሳሌ
ለምሳሌ

በቪዲዮው ውስጥ የእኛን ዝግጁ ፕሮጄክት ፣ እና በፖታቲሞሜትር ቁጥጥር የሚደረግበትን የሂደት አሞሌ ለማሳየት የዘይት ማሳያውን እንዴት መጠቀም እንደሚቻል ማየት ይችላሉ።

ደረጃ 4 - ስብሰባ

ስብሰባ
ስብሰባ

ለስብሰባችን የ 10 ኪ.ሜትር ፖታቲሜትር ተጠቀምኩ ፣ እና ጠቋሚውን GPIO25 ን አብራለሁ። ከዚህ በታች ባለው ስእል እንደሚመለከቱት እኛ ደግሞ 3v3 እና GND አለን። ኃይሉ የሚመጣው ከዩኤስቢ ራሱ ነው።

ደረጃ 5 ኮድ

በመጀመሪያ ፣ ቤተ -መጽሐፍቱን “SSD1306.h” እንጨምራለን። በዚህ ፣ የተቀባውን ማሳያ እናገኛለን። በኋላ ፣ በዘይት ማሳያ ላይ የሚታየውን ይዘት ለመቆጣጠር ኃላፊነት የሚወስደው ዓይነት SSD1306 የማሳያ ነገር እንፈጥራለን።

#SSD1306.h "// ተለዋጭ ስም" SSD1306Wire.h "// objeto controlador do ማሳያ de led /* 0x3c: é um identificador único para comunicação do pino 5 e 4 são os de comunicação (SDA, SDC)// SSD1306 ማያ ገጽ (0x3c ፣ 5 ፣ 4); // pino que ligamos o potenciometro #defiine PINO_POTENCIOMETRO 25 // utilizado para fazer o contador de porcentagem int contador;

አዘገጃጀት

በማዋቀር () ተግባር ውስጥ የሚታየውን ለመቆጣጠር እንድንችል የማሳያ ዕቃችንን እናስጀምራለን። በዚህ ነገር በኩል ፣ ለሚታዩት ጽሑፎች የጽሑፍ ምንጭንም እናዋቅራለን። እና ፣ በመጨረሻ ፣ እሴቱን ለማንበብ ፒኑን (በተለይ ፣ ፖታቲሞሜትር ያዞርንበትን ፒን) ወደ INPUT አዘጋጅተናል።

ባዶነት ማዋቀር () {Serial.begin (115200); Serial.println (); Serial.println (); // Inicializa o objeto que controlará o que será exibido na tela screen.init (); // gira o ማሳያ 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // ያዋቅሩ fonte de escrita "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // ያዋቅሩ o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO ፣ ግብዓት); }

ሉፕ

በ loop () ተግባር ውስጥ የአሁኑን የ potentiometer እሴት እናነባለን። እሴቱን ካነበቡ በኋላ ብዙም ሳይቆይ የ “ካርታ” ተግባሩን እየተጠቀምን መሆኑን ማስተዋል እንችላለን ፣ ምክንያቱም የተነበበው እሴት በሂደት አሞሌ ውስጥ ለማስቀመጥ በጣም ከፍተኛ ስለሆነ ፣ እሴቱን ከ 0 እስከ 100 ባለው ክልል ውስጥ እንዲሆን ካርታ እናቀርባለን።

ባዶነት loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println (ብርቱ); // 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); // ሁሉም ነገር ማሳያ ፣ አፓጋ o contudo da tela screen.clear (); // ++ ቆጣሪ; // ቆጣሪ> 100? ቆጣሪ = 0: ቆጣሪ = ቆጣሪ; // desenha አንድ የእድገት አሞሌ drawProgressBar (); // exibe na tela o que foi configurado até então. screen.display (); መዘግየት (10); }

በ “drawProgress ()” ተግባር ውስጥ ፣ በሂደት አሞሌ ውስጥ ለማቀናበር በተለዋዋጭ “percProgress” ውስጥ ከተቀመጠው ከ potentiometer የተነበበውን እሴት እንጠቀማለን። እንዲሁም የአሁኑን መቶኛ የሚያመለክት ከሂደት አሞሌው በላይ አንድ ጽሑፍ እናስቀምጣለን።

// função para desenhar አንድ የእድገት አሞሌ ማሳያ የለም drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha የእድገት አሞሌ / * * drawProgressBar (x ፣ y ፣ ስፋት ፣ ቁመት ፣ እሴት); ፓራሜትሮስ (ገጽ): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: ስፋት comprimento da barra de progresso p4: ቁመት altura da barra de progresso p5: valor que a barra de progresso deve assumir */ screen.drawProgressBar (10 ፣ 32 ፣ 100 ፣ 10 ፣ contador); // ያዋቅሩ 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 ፣ ጽሑፍ); 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 emá em ዜሮ ከሆነ ፣ “valor mínimo” (“contador == 0) {screen.drawString” (64 ፣ 45 ፣ “Valor mínimo”) ከሆነ አንድ ሕብረቁምፊ ይከታተሉ ፤ } /se o contador está em 100 ፣ ሌላ (“contoror == 100) {screen.drawString (64 ፣ 45 ፣“Valor máximo”) ከሆነ አንድ ሕብረቁምፊ“valor máximo”ን ይከታተሉ ፤ }}

ደረጃ 6 - አንዳንድ ሌሎች አስደሳች ተግባራት

ማሳያ

// ማሳያው ተገልብጦ ያስቀምጠዋል

ባዶ flipScreenVertically ();

ስዕል

// ከማያ ገጹ ላይ አንድ ነጠላ ፒክሰል ይስል

ባዶ ስብስብ ፒክስል (int16_t x ፣ int16_t y);

// መስመር ይሳሉ

ባዶ ባዶ መስመር (int16_t x0 ፣ int16_t y0 ፣ int16_t x1 ፣ int16_t y1);

// አራት ማዕዘን ይሳሉ

ባዶ ስዕል Drae (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 ርዝመት);

// ቀጥ ያለ መስመር ይሳሉ

ባዶ ስዕል VerticalLine (int16_t x ፣ int16_t y ፣ int16_t ርዝመት);

ጽሑፍ

// የጽሑፍ አሰላለፍ እንዲፃፍ ያዘጋጃል

// TEXT_ALIGN_LEFT ፣ TEXT_ALIGN_CENTER ፣ TEXT_ALIGN_RIGHT ፣ TEXT_ALIGN_CENTER_BOTH

ባዶ ስብስብTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

የሚመከር: