ኮድ ይፈልጉ

ESP32 ቱቶሪያል 6/55 - RGB LED መጠቀም ፕሮጀክት 2.3 -SunFounder's ESP32 IoT መማሪያ ኪት

ESP32 ቱቶሪያል 6/55 - RGB LED መጠቀም ፕሮጀክት 2.3 -SunFounder's ESP32 IoT መማሪያ ኪት

በዚህ ትምህርት ውስጥ፣ የRGB LEDን በESP32 ማይክሮኮንትሮለር በመጠቀም እንዴት መቆጣጠር እንደምንችል እንማራለን። ይህ ፕሮጀክት የRGB LEDን እንዴት ማገናኘት እና ቀለሞቹን በPWM (Pulse Width Modulation) ምልክቶች እንዴት መቆጣጠር እንደምንችል ለመረዳት ይረዳዎታል። በዚህ ትምህርት መጨረሻ ላይ፣ የእያንዳንዱን የLED ክፍል ጥንካሬ በማስተካከል ማንኛውንም የቀለም ጥምረት መፍጠር ይችላሉ። ይህ ለዓይን ማራኪ የሆኑ ፕሮጀክቶችን ለመፍጠር መሠረታዊ ችሎታ ነው።

ስለ RGB LED እና የቀለም መቀላቀል ችሎታዎቹ የተሻለ ግንዛቤ ለማግኘት፣ ከESP32 ጋር ለመቆጣጠር የሚያስፈልገውን ሽቦ አያያዥነት እና ኮድ እንመረምራለን። የእይታ እገዛ ከፈለጉ፣ ስለ ሽቦ አያያዥነት እና የኮድ ዝግጅት የበለጠ ግልጽ ማብራሪያ ለማግኘት ቪዲዮውን (በቪዲዮው 03:20 ላይ) መመልከትዎን ያረጋግጡ።

ሃርድዌር ተብራርቷል

የዚህ ፕሮጀክት ዋና ዋና ክፍሎች የESP32 ሞጁል፣ የRGB LED እና ተከላካዮች (resistors) ያካትታሉ። ESP32 ኃይለኛ ማይክሮኮንትሮለር ሲሆን አብሮ የተሰራ Wi-Fi እና ብሉቱዝ ያለው በመሆኑ ለIoT አፕሊኬሽኖች ተስማሚ ያደርገዋል። የRGB LED በአንድ ጥቅል ውስጥ የተቀመጡ ሶስት የተለያዩ LEDs (ቀይ፣ አረንጓዴ እና ሰማያዊ) ያቀፈ ሲሆን፣ በሶስቱ ቀለሞች ጥምረት ላይ በመመስረት ሰፊ የቀለም ክልል እንዲኖር ያስችላል።

በእኛ ዝግጅት ውስጥ፣ የRGB LED በጋራ አኖድ (common anode) አወቃቀር ይሰራል፣ የአኖድ ፒን ከአዎንታዊ ቮልቴጅ ጋር ይገናኛል፣ እና የእያንዳንዱ ቀለም ካቶድ ፒን በተናጥል ይቆጣጠራል። በዚህ መንገድ፣ በESP32 በኩል የPWM ምልክቶችን በመላክ የእያንዳንዱን ቀለም ብሩህነት ማስተካከል እንችላለን።

የዳታሼት ዝርዝሮች

አምራችSunFounder
የክፍል ቁጥርRGB-LED-4PIN
የጋራ አይነትየጋራ አኖድ
የፊት ቮልቴጅ (በእያንዳንዱ LED)2.0 ቪ (ቀይ)፣ 3.2 ቪ (አረንጓዴ)፣ 3.2 ቪ (ሰማያዊ)
ከፍተኛ አምፔር (በእያንዳንዱ LED)20 ሚሊአምፔር
የስራ ሙቀት-25 እስከ 85 °ሴ
ጥቅል4-ፒን ቀዳዳ-አማላጅ

  • አምፔርን ለመገደብ እና ጉዳትን ለመከላከል ለእያንዳንዱ ቀለም 220 Ω ተከላካይ ይጠቀሙ።
  • የጋራ ፒን ከተገቢው ቮልቴጅ (ለESP32 3.3 ቪ) ጋር መገናኘቱን ያረጋግጡ።
  • የተገላቢጦሽ ጉዳትን ለማስቀረት የRGB LEDን ሲያገናኙ የፖላሪቲውን ሁለት ጊዜ ያረጋግጡ።
  • የብሩህነት ደረጃዎችን ለመቆጣጠር PWM ይጠቀሙ፣ በግምት 5000 Hz ድግግሞሽ ይመከራል።
  • ሙሉውን ዝግጅት ከማገናኘትዎ በፊት እያንዳንዱን ቀለም በተናጠል ይሞክሩ።

የሽቦ አያያዥነት መመሪያዎች

የRGB LEDን ከESP32 ጋር ለማገናኘት፣ በRGB LED ላይ ያሉትን ፒኖች በመለየት ይጀምሩ። ረጅሙ ፒን የጋራ አኖድ ነው፣ እሱም በESP32 ላይ ካለው 3.3 ቪ አቅርቦት ጋር ይገናኛል። ሌሎቹ ሶስት ፒኖች ለቀይ፣ አረንጓዴ እና ሰማያዊ ናቸው። በእኛ ዝግጅት ውስጥ፣ የቀይ ፒንን ከGPIO 27፣ የአረንጓዴ ፒንን ከGPIO 26፣ እና የሰማያዊ ፒንን ከGPIO 25 ጋር ያገናኙ። እያንዳንዳቸው እነዚህ ፒኖች ከእነሱ ጋር የተገናኘ 220 Ω ተከላካይ ይኖራቸዋል።

የRGB LEDን በብሬድቦርዱ ላይ በማስቀመጥ ይጀምሩ፣ የጋራ አኖድ ፒን በግራ በኩል መሆኑን ያረጋግጡ። የቀይ ፒንን ወደ ብሬድቦርዱ ያስገቡ እና ከተከላካዩ አንድ ጫፍ ጋር ያገናኙት፣ የተከላካዩ ሌላኛው ጫፍ ወደ GPIO 27 ይሂድ። ይህንን ለአረንጓዴ እና ሰማያዊ ፒኖች ይድገሙት፣ የአረንጓዴ ፒንን ከGPIO 26 እና የሰማያዊ ፒንን ከGPIO 25 ጋር በማገናኘት። በመጨረሻም፣ ወረዳውን ለማጠናቀቅ የጋራ ፒንን በESP32 ላይ ካለው 3.3 ቪ ፒን ጋር ያገናኙ። የESP32ን መሬት (ground) ከብሬድቦርዱ ጋር ማገናኘትዎን ያረጋግጡ።

ESP32_RGB_LED_wiring_lesson_06

የኮድ ምሳሌዎች እና ማብራሪያ

በኮዱ ውስጥ፣ የRGB LED ፒኖችን ቋሚዎች (constants) በመጠቀም በመግለጽ እንጀምራለን። ለምሳሌ፣ const int redPin = 27; ለቀይ LED የGPIO ፒንን ይገልጻል። እንዲሁም የPWM ድግግሞሽ እና ጥራትን በconst int freq = 5000; እና const int resolution = 8; እናስቀምጣለን። ይህ የእያንዳንዱን የLED ቀለም ብሩህነት ለመቆጣጠር አስፈላጊዎቹን መለኪያዎች ያዘጋጃል።

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

በመቀጠል፣ በsetup() ተግባር ውስጥ ለእያንዳንዱ ቀለም የPWM ቻናሎችን እናዋቅራለን። የledcAttach() ተግባር እያንዳንዱን ፒን ከተጓዳኝ የPWM ቻናል ጋር ያገናኛል። ይህ ዝግጅት የእያንዳንዱን ቀለም ብሩህነት በተናጥል መቆጣጠር እንድንችል ያረጋግጣል።

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

loop() ተግባር ውስጥ፣ የLED ቀለሞችን ለመቀየር setColor() ተግባርን እንጠቀማለን። ለዚህ ተግባር የሚተላለፉት እሴቶች የቀይ፣ አረንጓዴ እና ሰማያዊ ጥንካሬን ይወክላሉ። ለምሳሌ፣ setColor(255, 0, 0); መጥራት LEDን ወደ ቀይ ያዘጋጃል። ከእያንዳንዱ የቀለም ለውጥ በኋላ፣ ወደ ቀጣዩ ቀለም ከመቀየርዎ በፊት ለአንድ ሰከንድ ለመጠበቅ delay(1000); እንጠቀማለን።

void loop() {
  setColor(255, 0, 0); // ቀይ
  delay(1000);
  setColor(0, 255, 0); // አረንጓዴ
  delay(1000);
}

ማሳያ / ምን እንደሚጠበቅ

ሽቦ አያያዥነቱን ካጠናቀቁ እና ኮዱን ወደ ESP32 ከጫኑ በኋላ፣ የRGB LED በተለያዩ ቀለሞች ሲዘዋወር ማየት ይኖርዎታል፦ ቀይ፣ አረንጓዴ፣ ሰማያዊ፣ ቢጫ፣ ሐምራዊ እና ሰማያዊ-አረንጓዴ (cyan)። LED በትክክል ካልበራ፣ ሽቦ አያያዥነትዎን ሁለት ጊዜ ያረጋግጡ እና የጋራ አኖድ ከ3.3 ቪ ጋር መገናኘቱን ያረጋግጡ። በተጨማሪም፣ ያልተጠበቁ ቀለሞች ካስተዋሉ፣ የተከላካይ ግንኙነቶችን ከLED ፒኖች ጋር ያረጋግጡ።

በቪዲዮው ላይ እንደታየው (በቪዲዮው 10:45 ላይ)፣ በsetColor() ተግባር ውስጥ ያሉትን እሴቶች ማስተካከል የተለያዩ ቀለሞችን እንዲፈጥሩ ያስችልዎታል። የRGB LED እንዴት እንደሚመልስ ለማየት ከተለያዩ ጥምረቶች ጋር ይሞክሩ።

የቪዲዮ ጊዜ ምልክቶች

  • 00:00 - የRGB LED መግቢያ
  • 03:20 - የሽቦ አያያዝ ማብራሪያ
  • 10:45 - የኮድ ግምገማ
  • 12:30 - የቀለም ድብልቅ ማሳያ

ምስሎች

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
ቋንቋ: C++
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;

void setup() {
  // Set up PWM pins
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // Red
  delay(1000);
  setColor(0, 255, 0); // Green
  delay(1000);
  setColor(0, 0, 255); // Blue
  delay(1000);
  setColor(255, 255, 0); // Yellow
  delay(1000);
  setColor(80, 0, 80); // Purple
  delay(1000);
  setColor(0, 255, 255); // Cyan
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

ምንጮች እና ምንጮች

ፋይሎች📁

አንድ ፋይል የለም።