Search Code

ESP32 ટ્યુટોરિયલ 33/55 - SunFounder ના ESP32 IoT લર્નિંગ કિટનો ઉપયોગ કરીને ડિજિટલ ડાઇસ

ESP32 ટ્યુટોરિયલ 33/55 - SunFounder ના ESP32 IoT લર્નિંગ કિટનો ઉપયોગ કરીને ડિજિટલ ડાઇસ

આ ટ્યુટોરિયલમાં, આપણે SunFounder ના IoT લર્નિંગ કિટમાંથી સેવન-સેગમેન્ટ ડિસ્પ્લે અને ESP32 નો ઉપયોગ કરીને ડિજિટલ ડાઇસ બનાવીશું. આ પ્રોજેક્ટ તમને બટન દબાવવા પર 1 થી 6 સુધીના નંબરો જનરેટ કરીને વર્ચ્યુઅલ ડાઇસ રોલ કરવાની મંજૂરી આપશે. ડિસ્પ્લે અને બટનો સાથે ઇન્ટરફેસિંગ વિશે શીખતી વખતે ESP32 ની ક્ષમતાઓ શોધવાની આ એક શાનદાર રીત છે. વધારાની સ્પષ્ટતા માટે, વિડિયો (વિડિયોમાં 0:00 પર) ચોક્કસપણે જુઓ.

ESP32-33_digital-dice-main

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટના મુખ્ય ઘટકોમાં ESP32 માઇક્રોકંટ્રોલર, 74HC595 શિફ્ટ રજિસ્ટર, સેવન-સેગમેન્ટ ડિસ્પ્લે અને પુશ બટન શામેલ છે. ESP32 એક શક્તિશાળી માઇક્રોકંટ્રોલર છે જે Wi-Fi અને Bluetooth ને સંકલિત કરે છે, જે તેને IoT એપ્લિકેશનો માટે યોગ્ય બનાવે છે. 74HC595 શિફ્ટ રજિસ્ટર અમને દરેક સેગમેન્ટને સીધું કનેક્ટ કરવા કરતાં ઓછા પિનનો ઉપયોગ કરીને સેવન-સેગમેન્ટ ડિસ્પ્લેને નિયંત્રિત કરવાની મંજૂરી આપે છે.

સેવન-સેગમેન્ટ ડિસ્પ્લે નંબરો દર્શાવે છે અને શિફ્ટ રજિસ્ટરમાંથી ડેટા મોકલીને નિયંત્રિત થાય છે. પુશ બટનનો ઉપયોગ ડાઇસ રોલ ટ્રિગર કરવા માટે થાય છે, જે પ્રદર્શિત થનાર રેન્ડમ નંબર જનરેટ કરે છે. જ્યારે દબાવવામાં આવે છે, ત્યારે બટન ESP32 પર પિન 13 સાથે કનેક્ટ થાય છે, જેમાં આંતરિક પુલ-અપ રેઝિસ્ટર હોય છે જે દબાવવામાં ન આવે ત્યારે તેને ઉચ્ચ સ્થિતિમાં રાખે છે.

ડેટાશીટ વિગતો

ઉત્પાદક Texas Instruments
ભાગ નંબર 74HC595
લોજિક/IO વોલ્ટેજ 2 V થી 6 V
સપ્લાય વોલ્ટેજ 4.5 V થી 5.5 V
આઉટપુટ કરંટ (પ્રતિ ચેનલ) 6 mA મહત્તમ
પીક કરંટ (પ્રતિ ચેનલ) 35 mA મહત્તમ
PWM ફ્રીક્વન્સી માર્ગદર્શન લાગુ પડતું નથી
ઇનપુટ લોજિક થ્રેશોલ્ડ VIH ≥ 2 V, VIL ≤ 0.8 V
વોલ્ટેજ ડ્રોપ / RDS(on) / સેચ્યુરેશન 0.5 V મહત્તમ
થર્મલ મર્યાદાઓ 150 °C
પેકેજ DIP-16
નોંધો / વેરિઅન્ટ્સ ડિજિટલ ડિસ્પ્લેમાં સામાન્ય રીતે ઉપયોગમાં લેવાય છે

 

  • વિશ્વસનીય કામગીરી માટે યોગ્ય વોલ્ટેજ સ્તર (4.5 V થી 5.5 V) સુનિશ્ચિત કરો.
  • શિફ્ટ રજિસ્ટરને નુકસાન ન થાય તે માટે આઉટપુટ કરંટ મર્યાદિત કરો.
  • વોલ્ટેજ સ્થિર કરવા માટે પાવર પિન નજીક ડિકપ્લિંગ કેપેસિટરનો ઉપયોગ કરો.
  • નંબરોની ખોટી રજૂઆત ટાળવા માટે સેવન-સેગમેન્ટ ડિસ્પ્લેને યોગ્ય રીતે કનેક્ટ કરો.
  • અણધારી વર્તણૂક તરફ દોરી શકે તેવા છૂટા જોડાણો માટે વાયરિંગ તપાસો.

વાયરિંગ સૂચનાઓ

ESP32-33_digital-dice-wiring

ડિજિટલ ડાઇસને વાયર કરવા માટે, પાવર કનેક્શન્સ સેટ કરીને શરૂ કરો. તમારા બ્રેડબોર્ડ પર ગ્રાઉન્ડ (વાદળી રેખા) ને ESP32 પર ગ્રાઉન્ડ પિન સાથે કનેક્ટ કરો અને ખાતરી કરો કે બધા ગ્રાઉન્ડ પોઇન્ટ્સ એકબીજા સાથે જોડાયેલા છે. આગળ, ESP32 માંથી 3.3V પિનને બ્રેડબોર્ડ પર પાવર રેલ (લાલ રેખા) સાથે કનેક્ટ કરો.

ESP32-33_digital-dice-schematic

74HC595 શિફ્ટ રજિસ્ટર માટે, ખાતરી કરો કે પિન 1 3.3V રેલ સાથે અને પિન 8 ગ્રાઉન્ડ સાથે જોડાયેલ છે. ડેટા આઉટપુટ પિન (DS) ને ESP32 પર પિન 25 સાથે, શિફ્ટ ક્લોક પિન (SHCP) ને પિન 26 સાથે અને સ્ટોરેજ ક્લોક પિન (STCP) ને પિન 27 સાથે કનેક્ટ કરો. પુશ બટન ESP32 પર પિન 13 અને ગ્રાઉન્ડ વચ્ચે જોડાયેલું હોવું જોઈએ, જે દબાવવામાં આવે ત્યારે પિનને નીચું ખેંચવા દે છે.

કોડ ઉદાહરણો અને વોકથ્રુ

કોડમાં, આપણે પહેલા શિફ્ટ રજિસ્ટર અને બટન માટે ઉપયોગમાં લેવાતા પિન વ્યાખ્યાયિત કરીએ છીએ. બટન પિન buttonPin તરીકે વ્યાખ્યાયિત થયેલ છે અને ESP32 પર પિન 13 પર સેટ છે. ડેટા એરે datArray માં સેવન-સેગમેન્ટ ડિસ્પ્લે માટે 0-9 નંબરોની બાઈનરી રજૂઆતો શામેલ છે.


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

setup() ફંક્શનમાં, આપણે બટન પિનને ઇનપુટ મોડમાં અને શિફ્ટ રજિસ્ટર પિનને આઉટપુટ મોડમાં સેટ કરીએ છીએ. આ બટનમાંથી ઇનપુટ વાંચવા અને ડિસ્પ્લે પર ડેટા મોકલવા માટે પિન તૈયાર કરે છે.


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

પ્રોગ્રામનો મુખ્ય લોજિક loop() ફંક્શનમાં જોવા મળે છે. તે તપાસે છે કે બટન દબાવવામાં આવ્યું છે કે નહીં, રેન્ડમ નંબર જનરેટ કરે છે અને સેવન-સેગમેન્ટ ડિસ્પ્લે પર નંબર દર્શાવવા માટે show_number() ફંક્શનને કૉલ કરે છે.


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

show_number() ફંક્શન ડેટા એરેમાંથી યોગ્ય મૂલ્ય શિફ્ટ રજિસ્ટરને મોકલે છે, જે પછી જનરેટ થયેલ નંબર દર્શાવવા માટે ડિસ્પ્લેના સેગમેન્ટ્સને નિયંત્રિત કરે છે. બટન દબાવવામાં આવે ત્યારે વિઝ્યુઅલ પ્રતિસાદ માટે આ ફંક્શન નિર્ણાયક છે.

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

પ્રદર્શન / શું અપેક્ષા રાખવી

જ્યારે સેટઅપ પૂર્ણ થાય અને કોડ અપલોડ થાય, ત્યારે બટન દબાવવાથી 1 થી 6 વચ્ચેની રેન્ડમ સંખ્યા જનરેટ થશે, જે સાત-સેગમેન્ટ ડિસ્પ્લે પર દેખાશે. જો બધું યોગ્ય રીતે વાયર કરેલું હોય, તો દરેક વખતે બટન દબાવવામાં આવે ત્યારે ડિસ્પ્લે પર એક સંખ્યા દેખાવી જોઈએ. ફ્લોટિંગ ઇનપુટ્સથી સાવધ રહો; ખાતરી કરો કે બટન ગ્રાઉન્ડ સાથે યોગ્ય રીતે જોડાયેલું છે જેથી અસ્થિર વર્તન ટાળી શકાય (વિડિયોમાં 1:30 પર).

વિડિયો ટાઇમસ્ટેમ્પ્સ

  • 00:00 શરૂઆત
  • 1:48 પ્રોજેક્ટ પરિચય
  • 3:40 ડિજિટલ ડાઇસ માટે વાયરિંગ સમજાવ્યું
  • 13:16 ડિજિટલ ડાઇસ માટે આર્ડુઇનો કોડ સમજાવ્યો
  • 19:19 આર્ડુઇનો IDE માં ESP32 બોર્ડ અને COM પોર્ટ પસંદ કરવું
  • 21:00 ડિજિટલ ડાઇસ પ્રદર્શન
  • 22:15 આર્ડુઇનો કોડ સુધારવું

Images

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

Resources & references

Files📁

No files available.