Raadi Koodka

Tutorial ESP32 34/55 - Midab-gradiyent oo leh RGB LED iyo Knob | Qalabka Barashada IoT ee SunFounder ee ESP32

Tutorial ESP32 34/55 - Midab-gradiyent oo leh RGB LED iyo Knob | Qalabka Barashada IoT ee SunFounder ee ESP32

Casharkaani waxaan ku abuuri doonnaa saameyn isbeddel midab ah iyadoo la adeegsanayo RGB LED oo la hagaajiyo iyadoo ku xiran booska potentiometer-ka (gacan-wareejiyaha). Mashruucani wuxuu isticmaalaa ESP32 microcontroller, kaas oo bixiya awoodaha Wi-Fi iyo Bluetooth ee ku dhex dhisan, taasoo ka dhigaysa doorasho badan oo u habboon mashruucyada IoT. Adigoo wareejinaya potentiometer-ka, waxaan si habsami leh ugu gudbi karnaa midabyo kala duwan, taasoo muujinaysa shaqada RGB LED-ka iyo awoodda akhrinta qiimaha analog-ga ee potentiometer-ka.

ESO32-34_-Color-Gradient-main

Mashruucani wuxuu ku habboon yahay barashada PWM (Pulse Width Modulation) iyo sida loo xakameeyo qalabyada analog-ga ah ee microcontroller-ka. Inta lagu guda jiro casharkan, waxaan ka hadli doonnaa qaybaha qalabka ee lagama maarmaanka ah, tilmaamaha fiilada, waxaanna bixin doonnaa qaybo kood ah si ay kuu caawiyaan hirgelinta mashruuca. Sharaxaad muuqaal ah oo dheeri ah, hubi inaad daawato fiidiyowga la xidhiidha (fiidiyowga 02:15).

Qalabka La Sharaxay

ESO32-34_-Color-Gradient-schematic

Qaybaha ugu muhiimsan ee loo isticmaalo mashruucan waxaa ka mid ah ESP32 microcontroller-ka, RGB LED, iyo potentiometer-ka. ESP32 waa microcontroller awood badan leh oo qaban kara hawlo kala duwan, oo ay ku jiraan isgaarsiinta wireless-ka, taasoo ka dhigaysa mid ku habboon codsiyada IoT. RGB LED-ku wuxuu ka kooban yahay saddex LED oo gaar ah (casaan, cagaar, iyo buluug) kuwaas oo la isku qasi karo si loo soo saaro midabyo kala duwan oo badan. Potentiometer-ku wuxuu u shaqeeyaa sidii resistor la hagaajin karo oo bixiya koronto isbeddelaysa oo ku xiran booskiisa.

ESP32_rgb_pin

RGB LED-ka waxaa lagu xiri karaa laba qaab: anode guud ama cathode guud. Mashruucan, waxaan isticmaali doonnaa qaabka anode guud, halkaas oo dhammaan anod-yada lagu xiro koronto togan, taasoo noo ogolaanaysa inaan xakameynno iftiinka LED kasta si gaar ah iyadoo la adeegsanayo PWM. Potentiometer-ka waxaa lagu xiri doonaa gelinta analog-ga ee ESP32 si loo akhriyo booskiisa loona hagaajiyo qiimaha RGB si waafaqsan.

Faahfaahinta Xogta

Soo saaraha SunFounder
Nambarka qaybta RGB LED
Korontada Logic/IO 3.3 V
Korontada sahayda 5 V
Korontada soo-saarka (kanaal kasta) 20 mA
Korontada ugu sarreysa (kanaal kasta) 30 mA
Hagaha soo noqnoqoshada PWM 5 kHz
Heerarka gelinta logic-ga 0.3 V (hoose) / 2.7 V (sare)
Hoos u dhaca korontada / RDS(on) / dheregsanaanta 1.8 V (caadi ah)
Xadka kulaylka Heerkulka shaqada: -40°C ilaa +85°C
Baakad Through-hole
Qoraallo / noocyo kale Qaabka anode guud

 

  • Isticmaal 220 Ohm resistor kanaal kasta oo LED ah si aad u xaddido korontada.
  • Hubi in korontada sahayda (5V) ay ku habboon tahay RGB LED-ka.
  • Ku xir anode-ka guud ee korontada togan.
  • Isticmaal PWM si aad u xakameyso iftiinka midab kasta oo LED ah.
  • Ka digtoonow xiriirka potentiometer-ka si aad uga fogaato gelinta sabeynaysa.
  • Hubi in ESP32 si sax ah loo shideeyo ka hor intaadan soo gelin koodka.

Tilmaamaha Fiilada

Si aad ugu xirto RGB LED-ka iyo potentiometer-ka ESP32-ga, waxaad ku bilaabaysaa adigoo ku xira pin-ka anode guud ee RGB LED-ka pin-ka korontada 3.3V ee ESP32-ga. Pin-yada casaan, cagaar, iyo buluug ee RGB LED-ka waxay ku xirmi doonaan pin-yada 27, 26, iyo 25 siday u kala horreeyaan. Hubi inaad dhigto 220 Ohm resistor oo taxane ah pin kasta oo midab LED ah si aad u xaddido korontada oo aad u ilaaliso LED-ka.

Marka xigta, ku xir potentiometer-ka ESP32-ga adigoo ku xira pin-ka bidix ee pin-ka korontada 3.3V, pin-ka midig ee dhulka, iyo pin-ka dhexe ee 14 ee ESP32-ga. Qaabkani wuxuu u ogolaanayaa ESP32-ga inuu akhriyo korontada analog-ga ah ee potentiometer-ka, taas oo loo isticmaali doono in lagu hagaajiyo midabka RGB LED-ka iyadoo ku xiran booskiisa.

Tusaalooyinka Koodka & Sharaxaadda

Shaqada setup-ka, waxaan ku qeexaynaa pin-yada RGB LED-ka iyo potentiometer-ka, sidoo kale waxaan bilaabaynaa dejinta PWM. Qaybta koodka ee soo socota waxay muujinaysaa sida aan u dejino pin-yada RGB LED-ka:

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);
}

Qaybtan, waxaan ku qeexaynaa pin-yada LED-yada casaan, cagaar, iyo buluug, waxaana ku xirnaa kanaalada PWM iyadoo la adeegsanayo soo noqnoqosho iyo xallin la qeexay.

Shaqada loop-ka waxay akhrisaa qiimaha potentiometer-ka waxayna u beddeshaa qiimo hue ah, kaas oo markaa loo isticmaalo in lagu go'aamiyo qiimaha RGB. Qaybta soo socota waxay muujinaysaa habkan:

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);
}

Koodkani wuxuu akhriyaa qiimaha analog-ga ee ka yimaada potentiometer-ka, wuxuu caadiyeynayaa, wuxuuna xisaabinayaa midabka u dhigma. Kadib wuxuu u yeeraa shaqada HUEtoRGB si uu u beddelo midabka oo u rogo qiimayaasha RGB, kuwaas oo loo gudbiyo shaqada setColor si loo cusboonaysiiyo LED-ga.

Muuujin / Waxa Lagu Filan Karaa

Markaad dhamaystirto fiilada oo aad soo gudbiso koodka, waa inaad awood u yeelataa inaad u jeediso potentiometer-ka si aad u beddesho midabka LED-ga RGB si habsami leh. Markaad wareejiso gacanta, LED-ga wuxuu u gudbi doonaa midabyo kala duwan iyadoo ku xiran qiimaha midabka ee laga xisaabiyay booska gacanta. Haddii LED-ga uusan shidin ama uu si aan filan u dhaqmo, hubi fiilada oo xaqiiji in potentiometer-ka si sax ah loogu xiray (fiidiyowga 10:45).

Waqtiyada Fiidiyowga

  • 00:00 Bilow
  • 2:11 Hordhaca mashruuca
  • 4:31 RGB LED
  • 8:18 Midabka RGB
  • 12:18 Fiilada la sharaxay
  • 17:59 Koodka Arduino la sharaxay
  • 24:12 Doorashada guddiga ESP32 iyo dekedda COM ee Arduino IDE
  • 25:54 Muujin

Sawirro

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
potentiometer
potentiometer
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-main
ESO32-34_-Color-Gradient-main
835-ESP32 Tutorial 34/55- Arduino code for color gradient
Luqadda: 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;

// 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);
}

Kheyraadka & Tixraacyada

Faylasha📁

Fayl la'aan.