ESP32 பயிற்சி 34/55 - RGB LED மற்றும் Knob மூலம் வண்ண சாய்வு | SunFounder இன் ESP32 IoT கற்றல் கிட்
இந்த டுடோரியலில், பொட்டென்ஷியோமீட்டரின் (குமிழ்) நிலையின் அடிப்படையில் சரிசெய்யப்படும் RGB LED ஐப் பயன்படுத்தி வண்ண சாய்வு விளைவை உருவாக்குவோம். இந்த திட்டம் ESP32 மைக்ரோகண்ட்ரோலரைப் பயன்படுத்துகிறது, இது உள்ளமைக்கப்பட்ட Wi-Fi மற்றும் புளூடூத் திறன்களை வழங்குகிறது, இது IoT திட்டங்களுக்கு பல்துறை தேர்வாக அமைகிறது. பொட்டென்ஷியோமீட்டரைத் திருப்புவதன் மூலம், வெவ்வேறு வண்ணங்களுக்கு இடையே சீராக மாறலாம், இது RGB LED இன் செயல்பாட்டையும் பொட்டென்ஷியோமீட்டரிலிருந்து அனலாக் மதிப்புகளைப் படிக்கும் திறனையும் நிரூபிக்கிறது.

இந்த திட்டம் PWM (பல்ஸ் அகல பண்பேற்றம்) மற்றும் மைக்ரோகண்ட்ரோலருடன் அனலாக் சாதனங்களை எவ்வாறு கட்டுப்படுத்துவது என்பதை அறிய ஏற்றது. இந்த டுடோரியல் முழுவதும், தேவையான வன்பொருள் கூறுகள், வயரிங் வழிமுறைகள் பற்றி விவாதிப்போம், மேலும் திட்டத்தை செயல்படுத்த உதவும் குறியீடு பகுதிகளை வழங்குவோம். மேலும் காட்சி விளக்கத்திற்கு, தொடர்புடைய வீடியோவை (வீடியோவில் 02:15 இல்) பார்க்க மறக்காதீர்கள்.
வன்பொருள் விளக்கம்
இந்த திட்டத்தில் பயன்படுத்தப்படும் முக்கிய கூறுகளில் ESP32 மைக்ரோகண்ட்ரோலர், ஒரு RGB LED மற்றும் ஒரு பொட்டென்ஷியோமீட்டர் ஆகியவை அடங்கும். ESP32 என்பது வயர்லெஸ் தகவல்தொடர்பு உட்பட பல்வேறு பணிகளைக் கையாளக்கூடிய சக்திவாய்ந்த மைக்ரோகண்ட்ரோலர் ஆகும், இது IoT பயன்பாடுகளுக்கு ஏற்றதாக அமைகிறது. RGB LED ஆனது மூன்று தனித்தனி LED களை (சிவப்பு, பச்சை மற்றும் நீலம்) கொண்டுள்ளது, அவை பரந்த அளவிலான வண்ணங்களை உருவாக்க கலக்கப்படலாம். பொட்டென்ஷியோமீட்டர் ஒரு சரிசெய்யக்கூடிய மின்தடையாக செயல்படுகிறது, இது அதன் நிலையின் அடிப்படையில் மாறக்கூடிய மின்னழுத்த வெளியீட்டை வழங்குகிறது.
RGB LED ஐ இரண்டு உள்ளமைவுகளில் இணைக்கலாம்: பொதுவான அனோட் அல்லது பொதுவான கேத்தோடு. இந்த திட்டத்தில், நாம் ஒரு பொதுவான அனோட் உள்ளமைவைப் பயன்படுத்துவோம், அங்கு அனைத்து அனோட்களும் நேர்மறை மின்னழுத்தத்துடன் இணைக்கப்படுகின்றன, இது PWM உடன் ஒவ்வொரு LED இன் பிரகாசத்தையும் தனித்தனியாக கட்டுப்படுத்த அனுமதிக்கிறது. பொட்டென்ஷியோமீட்டர் அதன் நிலையைப் படிக்கவும், அதற்கேற்ப RGB மதிப்புகளை சரிசெய்யவும் ESP32 இல் ஒரு அனலாக் உள்ளீட்டுடன் இணைக்கப்படும்.
டேட்டாஷீட் விவரங்கள்
| உற்பத்தியாளர் | SunFounder |
|---|---|
| பகுதி எண் | RGB LED |
| லாஜிக்/IO மின்னழுத்தம் | 3.3 V |
| விநியோக மின்னழுத்தம் | 5 V |
| வெளியீட்டு மின்னோட்டம் (ஒரு சேனலுக்கு) | 20 mA |
| உச்ச மின்னோட்டம் (ஒரு சேனலுக்கு) | 30 mA |
| PWM அதிர்வெண் வழிகாட்டுதல் | 5 kHz |
| உள்ளீட்டு லாஜிக் வரம்புகள் | 0.3 V (குறைந்த) / 2.7 V (உயர்) |
| மின்னழுத்த வீழ்ச்சி / RDS(on) / செறிவு | 1.8 V (வழக்கமான) |
| வெப்ப வரம்புகள் | இயக்க வெப்பநிலை: -40°C முதல் +85°C வரை |
| பேக்கேஜ் | துளை வழியாக |
| குறிப்புகள் / மாறுபாடுகள் | பொதுவான அனோட் உள்ளமைவு |
- மின்னோட்டத்தை கட்டுப்படுத்த ஒவ்வொரு LED சேனலுக்கும் 220 ஓம் மின்தடையைப் பயன்படுத்தவும்.
- RGB LED க்கு சரியான மின்வழங்கல் மின்னழுத்தத்தை (5V) உறுதி செய்யவும்.
- பொதுவான அனோடை நேர்மறை மின்னழுத்த விநியோகத்துடன் இணைக்கவும்.
- ஒவ்வொரு LED வண்ணத்தின் பிரகாசத்தை கட்டுப்படுத்த PWM ஐப் பயன்படுத்தவும்.
- மிதக்கும் உள்ளீடுகளைத் தவிர்க்க பொட்டென்ஷியோமீட்டரின் இணைப்பில் கவனமாக இருங்கள்.
- குறியீட்டை பதிவேற்றும் முன் ESP32 சரியாக இயக்கப்படுவதை சரிபார்க்கவும்.
வயரிங் வழிமுறைகள்
RGB LED மற்றும் பொட்டென்ஷியோமீட்டரை ESP32 உடன் இணைக்க, RGB LED இன் பொதுவான அனோட் முனையை ESP32 இல் உள்ள 3.3V மின்சார முனையுடன் இணைப்பதன் மூலம் தொடங்கவும். RGB LED இன் சிவப்பு, பச்சை மற்றும் நீல முனைகள் முறையே 27, 26 மற்றும் 25 முனைகளுடன் இணைக்கப்படும். ஒவ்வொரு LED வண்ண முனையிலும் மின்னோட்டத்தை கட்டுப்படுத்தவும் LED ஐ பாதுகாக்கவும் 220 ஓம் மின்தடையை தொடரில் வைக்க மறக்காதீர்கள்.
அடுத்து, இடது முனையை 3.3V மின்சார முனையுடன், வலது முனையை தரையுடன், மற்றும் நடுத்தர முனையை ESP32 இல் 14 உடன் இணைப்பதன் மூலம் பொட்டென்ஷியோமீட்டரை ESP32 உடன் இணைக்கவும். இந்த உள்ளமைவு ESP32 பொட்டென்ஷியோமீட்டரிலிருந்து அனலாக் மின்னழுத்தத்தைப் படிக்க அனுமதிக்கிறது, இது அதன் நிலையின் அடிப்படையில் RGB LED இன் வண்ணத்தை சரிசெய்ய பயன்படுத்தப்படும்.
குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்
செட்அப் செயல்பாட்டில், RGB LED மற்றும் பொட்டென்ஷியோமீட்டருக்கான முனைகளை வரையறுக்கிறோம், அத்துடன் PWM அமைப்புகளை துவக்குகிறோம். பின்வரும் குறியீடு பகுதி RGB LED முனைகளை எவ்வாறு அமைக்கிறோம் என்பதைக் காட்டுகிறது:
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
இந்த பகுதியில், சிவப்பு, பச்சை மற்றும் நீல LED களுக்கான முனைகளை வரையறுக்கிறோம், மேலும் அவற்றை வரையறுக்கப்பட்ட அதிர்வெண் மற்றும் தெளிவுத்திறனுடன் PWM சேனல்களுடன் இணைக்கிறோம்.
லூப் செயல்பாடு பொட்டென்ஷியோமீட்டரின் மதிப்பைப் படித்து அதை ஒரு ஹ்யூ மதிப்பாக மாற்றுகிறது, இது RGB மதிப்புகளை தீர்மானிக்க பயன்படுத்தப்படுகிறது. பின்வரும் பகுதி இந்த செயல்முறையை நிரூபிக்கிறது:
void loop() {
int knobValue = analogRead(KNOB_PIN);
float hueValue = (float)knobValue / 4095.0;
int hue = (int)(hueValue * 360);
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
setColor(red, green, blue);
}இந்த குறியீடு பொட்டென்சியோமீட்டரிலிருந்து அனலாக் மதிப்பைப் படித்து, அதை இயல்பாக்கி, அதற்குரிய நிறத்தொனியை (hue) கணக்கிடுகிறது. பின்னர் அது HUEtoRGB செயல்பாட்டை அழைத்து நிறத்தொனியை RGB மதிப்புகளாக மாற்றுகிறது, அவை setColor செயல்பாட்டிற்கு அனுப்பப்பட்டு LED-ஐ புதுப்பிக்கின்றன.
செயல்விளக்கம் / என்ன எதிர்பார்க்கலாம்
வயரிங் முடிந்து குறியீட்டை பதிவேற்றிய பிறகு, RGB LED-யின் நிறத்தை மாற்ற பொட்டென்சியோமீட்டரை சுழற்ற முடியும். குமிழியை சுழற்றும்போது, குமிழியின் நிலையிலிருந்து கணக்கிடப்பட்ட நிறத்தொனி மதிப்பின் அடிப்படையில் LED பல்வேறு நிறங்களுக்கு இடையே சீராக மாறும். LED எரியவில்லை அல்லது எதிர்பாராத விதமாக செயல்பட்டால், வயரிங்கை சரிபார்த்து, பொட்டென்சியோமீட்டர் சரியாக இணைக்கப்பட்டுள்ளதா என்பதை உறுதிசெய்யவும் (வீடியோவில் 10:45 இல்).
வீடியோ நேரக்குறிப்புகள்
- 00:00 தொடக்கம்
- 2:11 திட்டத்திற்கான அறிமுகம்
- 4:31 RGB LED
- 8:18 RGB நிறம்
- 12:18 வயரிங் விளக்கம்
- 17:59 Arduino குறியீடு விளக்கம்
- 24:12 Arduino IDE-யில் ESP32 போர்டு மற்றும் COM போர்ட்டை தேர்ந்தெடுத்தல்
- 25:54 செயல்விளக்கம்
// 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;
// Define the pin for the knob
#define KNOB_PIN 14
void setup() {
Serial.begin(115200);
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
// Read the value of the knob
int knobValue = analogRead(KNOB_PIN);
Serial.println(knobValue);
// Normalize the knob value to the range 0-1
float hueValue = (float)knobValue / 4095.0;
// Convert the normalized value to a HUE value (0-360)
int hue = (int)(hueValue * 360);
// Convert the HUE value to RGB values
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
// Update the RGB LED with the new color values
setColor(red, green, blue);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
// Convert a HUE value to RGB values
void HUEtoRGB(int hue, int* red, int* green, int* blue) {
float h = (float)hue / 60.0;
float c = 1.0;
float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0));
float r, g, b;
if (h < 1.0) {
r = c;
g = x;
b = 0;
} else if (h < 2.0) {
r = x;
g = c;
b = 0;
} else if (h < 3.0) {
r = 0;
g = c;
b = x;
} else if (h < 4.0) {
r = 0;
g = x;
b = c;
} else if (h < 5.0) {
r = x;
g = 0;
b = c;
} else {
r = c;
g = 0;
b = x;
}
float m = 1.0 - c;
*red = (int)((r + m) * 255);
*green = (int)((g + m) * 255);
*blue = (int)((b + m) * 255);
}
Common Course Links
Common Course Files
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்ESP32 Tutorial 34/55- SunFounder doc page for Color Gradientdocs.sunfounder.com
கோப்புகள்📁
கோப்புகள் கிடைக்கவில்லை.