ኮድ ይፈልጉ

የ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 ዊፋይ እና ብሉቱዝ የሚያዋህድ ኃይለኛ ማይክሮኮንትሮለር ሲሆን ለIoT መተግበሪያዎች ተስማሚ ያደርገዋል። 74HC595 ሺፍት ሬጂስተር እያንዳንዱን ክፍል በቀጥታ ከማገናኘት ይልቅ ጥቂት ፒኖችን በመጠቀም የሰባት-ክፍል ማሳያውን እንድንቆጣጠር ያስችለናል።

የሰባት-ክፍል ማሳያው ቁጥሮችን ያሳያል እና ከሺፍት ሬጂስተር ውሂብ በመላክ ይቆጣጠራል። የግፊት ቁልፍ የዳይስ ጥቅል ለማስነሳት ይጠቅማል፣ ይህም የሚታይ የዘፈቀደ ቁጥር ያመነጫል። ሲጫኑ፣ ቁልፉ በESP32 ላይ ካለው ፒን 13 ጋር ይገናኛል፣ ይህም ሳይጫን በከፍተኛ ሁኔታ እንዲቆይ የሚያደርግ ውስጣዊ የመጎተት-አፕ ሬዚስተር አለው።

የዳታሼት ዝርዝሮች

አምራች Texas Instruments
የክፍል ቁጥር 74HC595
ሎጂክ/IO ቮልቴጅ 2 ቪ እስከ 6 ቪ
የአቅርቦት ቮልቴጅ 4.5 ቪ እስከ 5.5 ቪ
የውጤት ጅረት (በአንድ ቻናል) ከፍተኛ 6 ሚኤ
ከፍተኛ ጅረት (በአንድ ቻናል) ከፍተኛ 35 ሚኤ
የPWM ድግግሞሽ መመሪያ አይተገበርም
የግቤት ሎጂክ ገደቦች VIH ≥ 2 ቪ፣ VIL ≤ 0.8 ቪ
የቮልቴጅ ጠብታ / RDS(on) / ሳቹሬሽን ከፍተኛ 0.5 ቪ
የሙቀት ገደቦች 150 °C
ፓኬጅ DIP-16
ማስታወሻዎች / ልዩነቶች በዲጂታል ማሳያዎች ውስጥ በብዛት ጥቅም ላይ ይውላል

 

  • ለአስተማማኝ አሠራር ትክክለኛ የቮልቴጅ ደረጃዎችን (4.5 ቪ እስከ 5.5 ቪ) ያረጋግጡ።
  • ሺፍት ሬጂስተሩን ከመጉዳት ለመቆጠብ የውጤት ጅረትን ይገድቡ።
  • ቮልቴጅን ለማረጋጋት በኃይል ፒኖች አጠገብ የዲኮፕሊንግ ካፓሲተሮችን ይጠቀሙ።
  • የቁጥሮችን የተሳሳተ ውክልና ለማስቀረት የሰባት-ክፍል ማሳያውን በትክክል ያገናኙ።
  • ወደማይጠበቅ ባህሪ ሊመሩ የሚችሉ ልቅ ግንኙነቶችን ለማጣራት ሽቦውን ይፈትሹ።

የሽቦ መጫኛ መመሪያዎች

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 የESP32 ቦርድ እና COM ወደብ በአርዱኖ IDE ውስጥ መምረጥ
  • 21:00 የዲጂታል ዳይስ ማሳያ ሙከራ
  • 22:15 የአርዱኖ ኮድ ማስተካከል

ምስሎች

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

ምንጮች እና ምንጮች

ፋይሎች📁

አንድ ፋይል የለም።