ESP32 ટ્યુટોરિયલ 34/55 - RGB LED અને નોબ સાથે રંગ ઢાળ | 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) ની ગણતરી કરે છે. ત્યારબાદ તે રંગને RGB મૂલ્યોમાં રૂપાંતરિત કરવા માટે HUEtoRGB ફંક્શનને બોલાવે છે, જે LED અપડેટ કરવા માટે setColor ફંક્શનને મોકલવામાં આવે છે.
પ્રદર્શન / શું અપેક્ષા રાખવી
વાયરિંગ પૂર્ણ કરીને કોડ અપલોડ કર્યા પછી, તમે 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
ફાઇલો📁
કોઈ ફાઇલો ઉપલબ્ધ નથી.