Wa Koodu

Ẹkọ ESP32 33/55 - Dásì Dáísì pẹ̀lú lílo SunFounder's ESP32 IoT Learning kit

Ẹkọ ESP32 33/55 - Dásì Dáísì pẹ̀lú lílo SunFounder's ESP32 IoT Learning kit

Nínú ẹ̀kọ́ yìí, a óò ṣẹ̀dá ẹ̀rọ dísì oní nọ́ńbà (digital dice) nípa lílo àfihàn oní-ìpín méje (seven-segment display) àti ESP32 láti inú àkójọpọ̀ ẹ̀kọ́ IoT ti SunFounder. Iṣẹ́ yìí yóò jẹ́ kí o yí dísì oní nọ́ńbà padà, tí ó ń ṣe àwọn nọ́ńbà láti 1 sí 6 nígbà tí o bá tẹ bọ́tìnnì kan. Èyí jẹ́ ọ̀nà àgbàyanu láti ṣàwárí agbára ESP32 nígbà tí o ń kọ́ nípa ìbáṣepọ̀ pẹ̀lú àwọn àfihàn àti bọ́tìnnì. Fún ìmọ̀ pípé, rí i dájú pé o wo fídíò náà (nínú fídíò ní 0:00).

ESP32-33_digital-dice-main

Àlàyé Ohun Èlò

Àwọn ohun èlò pàtàkì fún iṣẹ́ yìí ní ESP32 microcontroller, 74HC595 shift register, àfihàn oní-ìpín méje, àti bọ́tìnnì títẹ̀. ESP32 jẹ́ microcontroller alágbára tí ó so Wi-Fi àti Bluetooth pọ̀, tí ó sì mú un dára fún àwọn ìlò IoT. 74HC595 shift register jẹ́ kí a lè ṣàkóso àfihàn oní-ìpín méje pẹ̀lú àwọn pin díẹ̀ ju bí a bá ta ọ̀kọ̀ọ̀kan wọn ní tààrà.

Àfihàn oní-ìpín méje ń fi àwọn nọ́ńbà hàn, a sì ń ṣàkóso rẹ̀ nípa fífi data ránṣẹ́ láti shift register. Bọ́tìnnì títẹ̀ ni a ń lò láti mú dísì yí, tí ó ń ṣe nọ́ńbà àìròtẹ́lẹ̀ kan tí yóò hàn. Nígbà tí a bá tẹ̀ ẹ́, bọ́tìnnì náà ń so pín 13 lórí ESP32, tí ó ní resistor ìfàwọ́sínú (internal pull-up resistor) láti jẹ́ kí ó wà ní ipò gíga nígbà tí a kò bá tẹ̀ ẹ́.

Àwọn Àlàyé Datasheet

Olùṣe Texas Instruments
Nọ́ńbà apá 74HC595
Folti Logic/IO 2 V sí 6 V
Folti ìpèsè 4.5 V sí 5.5 V
Ìjade lọ́wọ́ (fún ikanni kọ̀ọ̀kan) 6 mA tó pọ̀ jù
Ìjade tó ga jù (fún ikanni kọ̀ọ̀kan) 35 mA tó pọ̀ jù
Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM Kò wúlò
Àwọn ìpele ìwọ̀n ìfidání VIH ≥ 2 V, VIL ≤ 0.8 V
Ìrẹwẹ́si folti / RDS(on) / ìkún 0.5 V tó pọ̀ jù
Àwọn ìwọ̀n ooru 150 °C
Àkójọpọ̀ DIP-16
Àwọn àkíyèsí / oríṣiríṣi Wọ́n ń lò ó ní ọ̀pọ̀ ìgbà nínú àwọn àfihàn oní nọ́ńbà

 

  • Rí i dájú pé àwọn ìpele folti tọ́ (4.5 V sí 5.5 V) fún iṣẹ́ tí ó gbára lé.
  • Dín ìjade lọ́wọ́ kuro láti má ba à ti shift register jẹ.
  • Lo àwọn capacitor ìyàsọ́tọ̀ (decoupling capacitors) nítòsí àwọn pin agbára láti mú folti dúró.
  • So àfihàn oní-ìpín méje pọ̀ dáradára láti yẹra fún àṣìṣe nínú fífi àwọn nọ́ńbà hàn.
  • Ṣàyẹ̀wò ìsopọ̀ fún àwọn ìsopọ̀ tí kò le kí ó lè yọrí sí ìwà àìròtẹ́lẹ̀.

Àwọn Ìtọ́sọ́nà Ìsopọ̀

ESP32-33_digital-dice-wiring

Láti so dísì oní nọ́ńbà pọ̀, bẹ̀rẹ̀ nípa ṣíṣètò àwọn ìsopọ̀ agbára. So ilẹ̀ (ọ̀nà bulúù) lórí breadboard rẹ sí pin ilẹ̀ lórí ESP32, kí o sì rí i dájú pé gbogbo àwọn ibi ilẹ̀ ti sopọ̀ mọ́ra. Lẹ́yìn náà, so pin 3.3V kan láti ESP32 sí ọ̀nà agbára (ọ̀nà pupa) lórí breadboard.

ESP32-33_digital-dice-schematic

Fún 74HC595 shift register, rí i dájú pé pin 1 ti sopọ̀ sí ọ̀nà 3.3V, àti pin 8 sí ilẹ̀. So pin ìjade data (DS) sí pin 25 lórí ESP32, pin aago ìyípadà (SHCP) sí pin 26, àti pin aago ìfipamọ́ (STCP) sí pin 27. Bọ́tìnnì títẹ̀ yẹ kí ó wà ní ìsopọ̀ láàárín pin 13 lórí ESP32 àti ilẹ̀, tí yóò jẹ́ kí ó fa pin náà sí ipò rẹ̀lẹ̀ nígbà tí a bá tẹ̀ ẹ́.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà

Nínú kóòdù náà, a kọ́kọ́ ṣàlàyé àwọn pin tí a lò fún shift register àti bọ́tìnnì. Pin bọ́tìnnì jẹ́ dídá lórí buttonPin, a sì gbé e sí pin 13 lórí ESP32. Àkójọpọ̀ data datArray ní àwọn ìṣàfihàn oní-ìpín méji (binary) ti àwọn nọ́ńbà 0-9 fún àfihàn oní-ìpín méje.


const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

Nínú iṣẹ́ setup(), a ṣeto pin bọ́tìnnì sí ipo ìfidání (input mode) àti àwọn pin shift register sí ipo ìjáde (output mode). Èyí ń múra àwọn pin silẹ̀ fún kíkà ìfidání láti bọ́tìnnì àti fún fífi data ránṣẹ́ sí àfihàn.


void setup ()
{
  pinMode(buttonPin,INPUT); 
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

Ìgbòkègbodò pàtàkì ti ètò náà wà nínú iṣẹ́ loop(). Ó ń ṣàyẹ̀wò bí a bá tẹ bọ́tìnnì, ó ń ṣe nọ́ńbà àìròtẹ́lẹ̀ kan, ó sì ń pe iṣẹ́ show_number() láti fi nọ́ńbà náà hàn lórí àfihàn oní-ìpín méje.


void loop()
{
  if(digitalRead(buttonPin) == LOW)
  {
    int diceNumber = random(1, 7);
    show_number(diceNumber);
    delay(50);
  }
}

Iṣẹ́ show_number() ń fi ìye tí ó yẹ láti inú àkójọpọ̀ data ránṣẹ́ sí shift register, tí ó sì ń ṣàkóso àwọn ìpín ti àfihàn láti fi nọ́ńbà tí a ṣe hàn. Iṣẹ́ yìí ṣe pàtàkì fún ìfihàn ìrísí nígbà tí a bá tẹ bọ́tìnnì.

74HC595 LED Display: Seven-Segment Explained
74HC595 LED Display: Seven Segment explained

Ìṣàfihàn / Ohun Tí O Lè Retí

Nígbàtí ìṣètò bá ti parí àti pé kódù náà ti gbé sílẹ̀, títẹ bọ́tìnnì náà yóò ṣe àrọ́pò nọ́ńbà àìròtẹ́lẹ̀ láàárín 1 sí 6, èyí tí yóò hàn lórí àfihàn méje-ìpín. Bí gbogbo nǹkan bá ti ní ìsopọ̀ tó tọ́, àfihàn náà yẹ kí ó fi nọ́ńbà hàn ní gbogbo ìgbà tí a bá tẹ bọ́tìnnì náà. Ṣọ́ra fún àwọn ìfisílẹ̀ tí ń fòfò; rí i wí pé bọ́tìnnì náà ti ní ìsopọ̀ tó tọ́ sí ilẹ̀ láti yẹra fún ìwà àìdúróṣinṣin (nínú fídíò ní 1:30).

Àkókò Fídíò

  • 00:00 Ìbẹ̀rẹ̀
  • 1:48 Ìfihàn iṣẹ́-ọnà náà
  • 3:40 Ìsopọ̀ fún Dáísì Onínọ́ńbà Ṣàlàyé
  • 13:16 Kódù Arduino fún Dáísì Onínọ́ńbà ṣàlàyé
  • 19:19 Yíyan Bọ́ọ̀dù ESP32 àti èbúté COM nínú Arduino IDE
  • 21:00 Ìfihàn Dáísì Onínọ́ńbà
  • 22:15 Àtúnṣe Kódù Arduino

Aworan

74HC595 LED Display: Seven-Segment Explained
74HC595 LED Display: Seven Segment explained
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
Ede: C++
// Define the pins used for the 74hc595 and button
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;

// Define an array of values to display numbers on a 7-segment display
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;

void setup ()
{
  // Set the button pin to input mode
  pinMode(buttonPin,INPUT); 

  //Set pins to 74hc595
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

void loop()
{
  // Check if the button is pressed
  if(digitalRead(buttonPin) == LOW)
  {
    // Generate a random number between 1 and 6
    int diceNumber = random(1, 7);

     // Display the number on the 7-segment display
    show_number(diceNumber);

    // Delay for 50 milliseconds
    delay(50);
  }
}

// Function to display a number on a 7-segment display
void show_number(int num)
{
  // Ground ST_CP and hold low for as long as you are transmitting
  digitalWrite(STcp, LOW);

  // Send the data for the number to the shift register
  shiftOut(DS, SHcp, MSBFIRST, datArray[num]);

  // Pull the ST_CP to save the data
  digitalWrite(STcp, HIGH);
}

Orisun & itọkasi

Fáìlìs📁

Ko si awọn faili ti o wa.