Bincika Lambar

Koyarwar ESP32 33/55 - Dige na Dijital ta amfani da kayan koyon IoT na SunFounder ESP32

Koyarwar ESP32 33/55 - Dige na Dijital ta amfani da kayan koyon IoT na SunFounder ESP32

A cikin wannan koyawa, za mu ƙirƙiri dice na dijital ta amfani da nuni mai kashi bakwai da ESP32 daga kayan aikin IoT na SunFounder. Aikin zai ba ka damar mirgina dice na kama-da-wane, yana samar da lambobi daga 1 zuwa 6 a danna maɓalli. Wannan hanya ce mai ban sha'awa don gano iyawar ESP32 yayin koyo game da haɗawa da nunin da maɓallai. Don ƙarin haske, tabbatar da duba bidiyon a (a cikin bidiyo a 0:00).

ESP32-33_digital-dice-main

Bayanin Kayan Aiki

Babban kayan aikin wannan aikin sun haɗa da microcontroller na ESP32, rijistar motsi ta 74HC595, nuni mai kashi bakwai, da maɓalli. ESP32 microcontroller ne mai ƙarfi wanda ya haɗa Wi-Fi da Bluetooth, yana sa ya dace da aikace-aikacen IoT. Rijistar motsi ta 74HC595 tana ba mu damar sarrafa nuni mai kashi bakwai ta amfani da ƙananan filogi fiye da haɗa kowane sashi kai tsaye.

Nuni mai kashi bakwai yana nuna lambobi kuma ana sarrafa shi ta hanyar aika bayanai daga rijistar motsi. Ana amfani da maɓalli don kunna mirgina dice, yana samar da lambar da za a nuna. Lokacin da aka danna, maɓallin yana haɗawa da filogi 13 akan ESP32, wanda ke da resistor na ciki don kiyaye shi a matsayi mai girma lokacin da ba a danna ba.

Bayanan Datasheet

Mai ƙera Texas Instruments
Lambar sashi 74HC595
Wutar Logic/IO 2 V zuwa 6 V
Wutar samarwa 4.5 V zuwa 5.5 V
Fitarwa na yanzu (kowane tashar) 6 mA max
Kololuwar yanzu (kowane tashar) 35 mA max
Jagorar mitar PWM Ba ya aiki
Ƙofofin logic na shigarwa VIH ≥ 2 V, VIL ≤ 0.8 V
Ragewar wutar / RDS(on) / saturation 0.5 V max
Iyakokin zafi 150 °C
Kunshin DIP-16
Bayanan kula / bambance-bambance Ana amfani da shi sosai a nunin dijital

 

  • Tabbatar da matakan wutar da suka dace (4.5 V zuwa 5.5 V) don aiki mai inganci.
  • Ƙuntata fitarwa na yanzu don guje wa lalata rijistar motsi.
  • Yi amfani da capacitors na decoupling kusa da filogin wutar don daidaita wutar.
  • Haɗa nuni mai kashi bakwai daidai don guje wa kuskuren nuna lambobi.
  • Duba wayoyi don haɗin da ba su da ƙarfi waɗanda zasu iya haifar da halin da ba a zata ba.

Umarnin Haɗin Waya

ESP32-33_digital-dice-wiring

Don haɗa dice na dijital, fara da saita haɗin wutar. Haɗa ƙasa (layin shuɗi) akan breadboard ɗinka zuwa filogin ƙasa akan ESP32 kuma tabbatar da cewa duk wuraren ƙasa sun haɗu. Na gaba, haɗa filogi na 3.3V daga ESP32 zuwa layin wutar (layin ja) akan breadboard.

ESP32-33_digital-dice-schematic

Don rijistar motsi ta 74HC595, tabbatar da cewa filogi 1 an haɗa shi da layin 3.3V, kuma filogi 8 zuwa ƙasa. Haɗa filogin fitarwa na bayanai (DS) zuwa filogi 25 akan ESP32, filogin agogon motsi (SHCP) zuwa filogi 26, da filogin agogon ajiya (STCP) zuwa filogi 27. Maɓallin ya kamata a haɗa shi tsakanin filogi 13 akan ESP32 da ƙasa, yana ba shi damar jawo filogi ƙasa lokacin da aka danna.

Misalan Lamba & Bayani

A cikin lambar, mun fara ayyana filogin da aka yi amfani da su don rijistar motsi da maɓallin. Filogin maɓallin an ayyana shi azaman buttonPin kuma an saita shi zuwa filogi 13 akan ESP32. Tsarin bayanai datArray ya ƙunshi wakilcin binary na lambobi 0-9 don nuni mai kashi bakwai.


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

A cikin aikin setup(), mun saita filogin maɓallin zuwa yanayin shigarwa da filogin rijistar motsi zuwa yanayin fitarwa. Wannan yana shirya filogin don karanta shigarwa daga maɓallin da kuma aika bayanai zuwa nuni.


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

Babban dabaru na shirin ana samunsa a cikin aikin loop(). Yana duba idan an danna maɓallin, yana samar da lambar da ba a sani ba, kuma yana kiran aikin show_number() don nuna lambar akan nuni mai kashi bakwai.


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

Aikin show_number() yana aika ƙimar da ta dace daga tsarin bayanai zuwa rijistar motsi, wanda ke sarrafa sassan nuni don nuna lambar da aka samar. Wannan aikin yana da mahimmanci don amsawar gani lokacin da aka danna maɓallin.

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

Nuni / Abin da za ka Yi Tsammani

Lokacin da aka gama saitin kuma aka ɗora lambar, danna maɓallin zai samar da lambar da ba a sani ba tsakanin 1 zuwa 6, wanda za a nuna shi akan nunin sassan bakwai. Idan an haɗa komai daidai, nunin ya kamata ya nuna lamba a duk lokacin da aka danna maɓallin. Yi hattara da shigarwar da ke iyo; tabbatar da cewa an haɗa maɓallin da kyau zuwa ƙasa don guje wa ɗabi'a mara kyau (a cikin bidiyo a 1:30).

Lokutan Bidiyo

  • 00:00 Fara
  • 1:48 Gabatarwar aikin
  • 3:40 Haɗin Waya don Digital Dice An Bayyana
  • 13:16 Lambar Arduino don Digital Dice an bayyana
  • 19:19 Zaɓin Board na ESP32 da tashar COM a cikin Arduino IDE
  • 21:00 Nunin Digital Dice
  • 22:15 Gyaran Lambar Arduino

Hotuna

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

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Babu fayiloli da ake da su.