Search Code

ESP32 ટ્યુટોરિયલ 10/55 - સેવન સેગમેન્ટ ડિસ્પ્લે 74HC595 નો ઉપયોગ કરીને ડિજિટલ કાઉન્ટર - ESP32 IoT લર્નિંગ કિટ

ESP32 ટ્યુટોરિયલ 10/55 - સેવન સેગમેન્ટ ડિસ્પ્લે 74HC595 નો ઉપયોગ કરીને ડિજિટલ કાઉન્ટર - ESP32 IoT લર્નિંગ કિટ

આ ટ્યુટોરિયલમાં, આપણે ESP32 માઇક્રોકંટ્રોલર દ્વારા નિયંત્રિત સાત-સેગમેન્ટ ડિસ્પ્લેનો ઉપયોગ કરીને ડિજિટલ કાઉન્ટર બનાવીશું. કાઉન્ટર 0 થી 9 સુધી વધશે અને પછી પાછું 0 સુધી ઘટશે, જે ગણતરીની પ્રક્રિયાનું સ્પષ્ટ દ્રશ્ય પ્રદાન કરશે. આપણે સાત-સેગમેન્ટ ડિસ્પ્લે પર વ્યક્તિગત સેગમેન્ટ્સ કેવી રીતે ચાલુ કરવા અને અક્ષરો કેવી રીતે દર્શાવવા તે પણ શોધીશું.

ESP32_Animte7Segment-segments

આ પ્રોજેક્ટ ડિસ્પ્લેને નિયંત્રિત કરવા માટે 74HC595 શિફ્ટ રજિસ્ટરનો ઉપયોગ કરે છે, જે આપણને ESP32 પર ઘણા બધા GPIO પિનનો ઉપયોગ કર્યા વિના સેગમેન્ટ્સને કાર્યક્ષમ રીતે સંચાલિત કરવાની મંજૂરી આપે છે. શિફ્ટ રજિસ્ટરમાં બાઈનરી મૂલ્યો મોકલીને, આપણે સંખ્યાઓ અને અક્ષરો રજૂ કરવા માટે અનુરૂપ સેગમેન્ટ્સને પ્રકાશિત કરી શકીએ છીએ. પ્રક્રિયાની ઊંડી સમજ માટે, તમે વિડિઓનો સંદર્ભ લઈ શકો છો (વિડિઓમાં 03:15 પર).

ESP32_Animte7Segment-letters

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

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

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

ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1

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

ઉત્પાદક ટેક્સાસ ઇન્સ્ટ્રુમેન્ટ્સ
ભાગ નંબર 74HC595
લોજિક/IO વોલ્ટેજ 2 V થી 6 V
સપ્લાય વોલ્ટેજ 2 V થી 6 V
આઉટપુટ કરંટ (પ્રતિ ચેનલ) 6 mA
પીક કરંટ (પ્રતિ ચેનલ) 35 mA
PWM ફ્રીક્વન્સી માર્ગદર્શન 1 kHz સુધી
ઇનપુટ લોજિક થ્રેશોલ્ડ 0.3 VCC થી 0.7 VCC
વોલ્ટેજ ડ્રોપ / RDS(on) / સેચ્યુરેશન 0.2 V મહત્તમ
થર્મલ મર્યાદાઓ 125 °C
પેકેજ DIP-16
નોંધો / વેરિઅન્ટ્સ વિવિધ પેકેજોમાં ઉપલબ્ધ

 

  • યોગ્ય વોલ્ટેજ સપ્લાય (2 V થી 6 V) સુનિશ્ચિત કરો.
  • ઓવરહિટીંગ અટકાવવા માટે આઉટપુટ કરંટ મર્યાદિત કરો.
  • શ્રેષ્ઠ તેજ માટે દરેક સેગમેન્ટ માટે અલગ રેઝિસ્ટરનો ઉપયોગ કરો.
  • શોર્ટ્સ અને ખોટા જોડાણો ટાળવા માટે વાયરિંગથી સાવચેત રહો.
  • ખોટી ગોઠવણી ટાળવા માટે પિનઆઉટ કાળજીપૂર્વક અનુસરો.

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

ESP32-10-seven-segment-wiring

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

આગળ, 74HC595 શિફ્ટ રજિસ્ટરને બ્રેડબોર્ડમાં દાખલ કરો, ખાતરી કરો કે નોચ યોગ્ય રીતે દિશામાં છે. પિન 11 (DS) ને ESP32 પર પિન 25 સાથે, પિન 12 (SH_CP) ને પિન 26 સાથે અને પિન 14 (ST_CP) ને પિન 27 સાથે જોડો. શિફ્ટ રજિસ્ટરનો ગ્રાઉન્ડ (પિન 8) ગ્રાઉન્ડ રેલ સાથે અને પિન 10 (MR) ને સક્રિયકરણ માટે પાવર રેલ સાથે જોડો.

સાત-સેગમેન્ટ ડિસ્પ્લે માટે, સેગમેન્ટ્સ (a-g) ને અનુરૂપ પિન શિફ્ટ રજિસ્ટરના આઉટપુટ પિન સાથે જોડો. કરંટ મર્યાદિત કરવા માટે દરેક સેગમેન્ટ માટે શ્રેણીમાં રેઝિસ્ટર (220 ઓહ્મ) નો ઉપયોગ કરો. સામાન્ય પિન માટે યોગ્ય જોડાણો સુનિશ્ચિત કરો, જે તમારા ડિસ્પ્લે પ્રકારના આધારે સામાન્ય એનોડ અથવા કેથોડ હોઈ શકે છે.

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

સેટઅપ ફંક્શનમાં, આપણે શિફ્ટ રજિસ્ટર સાથે જોડાયેલા પિનને આઉટપુટ તરીકે વ્યાખ્યાયિત કરીને શરૂ કરીએ છીએ. આ સુનિશ્ચિત કરે છે કે આપણું ESP32 ડિસ્પ્લેને મોકલવામાં આવતા ડેટાને નિયંત્રિત કરી શકે છે.

void setup ()
{
  //set pins to output
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

અહીં, આપણે STcp, SHcp, અને DS ને શિફ્ટ રજિસ્ટરના ST_CP, SH_CP અને DS સાથે જોડાયેલા પિન તરીકે વ્યાખ્યાયિત કરીએ છીએ. આ પિનને આઉટપુટ તરીકે સેટ કરવાથી આપણને શિફ્ટ રજિસ્ટરને નિયંત્રિત કરવાની મંજૂરી મળે છે.

પ્રોગ્રામનો મુખ્ય લૂપ 0 થી 9 સુધી ગણે છે, shiftOut ફંક્શનનો ઉપયોગ કરીને અનુરૂપ મૂલ્યો ડિસ્પ્લે પર મોકલે છે.

for(int num = 0; num <10; num++)
{
    digitalWrite(STcp,LOW); //ગ્રાઉન્ડ ST_CP અને જ્યાં સુધી તમે ટ્રાન્સમિટ કરો છો ત્યાં સુધી તેને લો રાખો
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //ડેટા સેવ કરવા માટે ST_CP ને ઉંચો ખેંચો
    delay(1000);
}

આ લૂપ num ચલને વધારે છે, દર સેકન્ડે datArray માંથી અનુરૂપ મૂલ્ય ડિસ્પ્લે પર મોકલે છે. shiftOut ફંક્શન ડેટાને શિફ્ટ રજિસ્ટરમાં ટ્રાન્સમિટ કરે છે, જે પછી યોગ્ય સેગમેન્ટ્સને પ્રકાશિત કરે છે.

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

એકવાર વાયરિંગ પૂર્ણ થઈ જાય અને કોડ અપલોડ થઈ જાય, તમારે સાત-સેગમેન્ટ ડિસ્પ્લે પર 0 થી 9 સુધી ગણતરી જોવી જોઈએ, પાછા 0 પર ગણતરી કરતા પહેલા થોડો વિરામ લેવો જોઈએ. દરેક સંખ્યા એક સેકન્ડ માટે પ્રદર્શિત થશે. જો તમે ગણતરી ઝડપી કરવા માંગો છો, તો તમે લૂપમાં વિલંબને સમાયોજિત કરી શકો છો (વિડિઓમાં 15:30 પર).

સેગમેન્ટ્સને વ્યક્તિગત રીતે હેરફેર કરતી વખતે, અક્ષરો અથવા ચોક્કસ સેગમેન્ટ્સ પ્રદર્શિત કરવા માટે યોગ્ય બાઈનરી મૂલ્યો મોકલવાનું યાદ રાખો. જો ડિસ્પ્લે ઝાંખું દેખાય, તો ડિસ્પ્લે પર સમાન તેજસ્વીતા સુનિશ્ચિત કરવા માટે દરેક સેગમેન્ટ માટે વ્યક્તિગત રેઝિસ્ટર ઉમેરવાનું વિચારો.

વિડિઓ સમયસ્ટેમ્પ્સ

  • 00:00 શરૂઆત
  • 1:53 સાત સેગમેન્ટનો પરિચય
  • 4:38 વાયરિંગ સમજાવ્યું
  • 13:15 આર્ડુઇનો કોડ-1
  • 17:01 COM પોર્ટ અને ESP32 બોર્ડ પસંદ કરવું
  • 18:43 પ્રદર્શન-1
  • 20:13 માત્ર એક અંક દર્શાવવો
  • 21:38 ઉપર અને નીચે કાઉન્ટર
  • 23:07 દરેક સેગમેન્ટને ચાલુ/બંધ કરવું
  • 24:53 A, B, C, D, E અને F દર્શાવવું

Images

ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32-10-seven-segment-wiring
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
Language: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 

int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void setup ()
{
  //set pins to output
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}
void loop()
{
  for(int num = 0; num <10; num++)
  {
    digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
    delay(1000);
  }
}

Resources & references

Files📁

No files available.