પાઠ ૨૨/૩૧: આર્ડુઇનો સાથે સેવન સેગમેન્ટ ડિસ્પ્લે અને ઇલેક્ટ્રોનિક ડાઇસનો ઉપયોગ | સનફાઉન્ડર રોબોજેક્સ
આ પાઠમાં, આપણે શોધીશું કે કેવી રીતે Arduino સાથે સાત-સેગમેન્ટ ડિસ્પ્લેને નિયંત્રિત કરવું. દરેક LED સેગમેન્ટને સીધું ચલાવવા માટે એક ડઝન કે તેથી વધુ I/O પિનનો ઉપયોગ કરવાને બદલે, આપણે એક સમજદાર યુક્તિ અપનાવીએ છીએ: એક શિફ્ટ રજિસ્ટર. આ નાની, સસ્તી ચિપ આપણને Arduino માંથી માત્ર ત્રણ વાયરનો ઉપયોગ કરીને તમામ સાત સેગમેન્ટ્સ (વત્તા દશાંશ બિંદુ) નિયંત્રિત કરવાની મંજૂરી આપે છે. આ ઇલેક્ટ્રોનિક્સમાં એક પાયાની તકનીક છે જે તમને તમારા માઇક્રોકન્ટ્રોલર પર ઉપલબ્ધ આઉટપુટની સંખ્યા વિસ્તૃત કરવાની મંજૂરી આપે છે, જે તમારા બોર્ડને અપગ્રેડ કર્યા વિના વધુ જટિલ પ્રોજેક્ટ્સ બનાવવાનું શક્ય બનાવે છે.
મૂળભૂત કાઉન્ટર ઉપરાંત, આપણે એક ઇલેક્ટ્રોનિક ડાઇસ બનાવીશું. આ પ્રોજેક્ટ માત્ર ડિસ્પ્લે નિયંત્રણને મજબૂત બનાવતો નથી પણ પુશ બટન દ્વારા વપરાશકર્તા ઇનપુટ અને ઇન્ટરપ્ટ્સની વિભાવના પણ રજૂ કરે છે, જે એક પ્રતિભાવશીલ અને ઇન્ટરેક્ટિવ ઉપકરણ બનાવે છે. આ માર્ગદર્શિકા Robojax Arduino કોર્સના પાઠ પર આધારિત છે, જે SunFounder 3-in-1 Arduino કિટનો ઉપયોગ કરે છે.
અહીં કેટલાક વ્યવહારુ વિચારો છે જે તમે આ જ્ઞાન સાથે બનાવી શકો છો:
- ટેબલ ટેનિસ અથવા બાસ્કેટબોલ જેવી રમતો માટે એક સરળ સ્કોરબોર્ડ બનાવો.
- બોર્ડ ગેમ્સ અથવા રસોડાના કાઉન્ટડાઉન ટાઈમર માટે ડિજિટલ ટાઈમર બનાવો.
- રમતો અથવા નિર્ણય લેવા માટે રેન્ડમ નંબર જનરેટર બનાવો.
- તાપમાન સેન્સર ઉમેરીને મૂળભૂત ડિજિટલ થર્મોમીટર બનાવો.
હાર્ડવેર અને ઘટકો
શરૂ કરતા પહેલા, ચાલો જરૂરી ઘટકો એકત્રિત કરીએ. આ પ્રોજેક્ટનો મુખ્ય ભાગ 74HC595 શિફ્ટ રજિસ્ટર છે, જે જરૂરી પિનની સંખ્યા ઘટાડવાની ચાવી છે. સાત સેગમેન્ટ્સમાંથી દરેકને સીધા Arduino સાથે જોડવાને બદલે, આપણે તેમને શિફ્ટ રજિસ્ટર સાથે જોડીએ છીએ. Arduino પછી એક અંક માટેનો ડેટા ચિપને ક્રમિક રીતે (એક સમયે એક બિટ) મોકલે છે, જે પછી સેગમેન્ટ્સને પ્રકાશિત કરવા માટે યોગ્ય પેટર્ન આઉટપુટ કરે છે.
- Arduino Uno (અથવા સુસંગત બોર્ડ)
- સાત-સેગમેન્ટ ડિસ્પ્લે (મોડેલ 5161AS, સામાન્ય કેથોડ)
- 74HC595 શિફ્ટ રજિસ્ટર IC
- પુશ બટન
- રેઝિસ્ટર (220Ω - 330Ω)
- જમ્પર વાયર
- બ્રેડબોર્ડ
5161AS ડિસ્પ્લે એક સામાન્ય કેથોડ પ્રકાર છે. આનો અર્થ એ છે કે આંતરિક LED ના તમામ કેથોડ્સ (નકારાત્મક બાજુઓ) એક સામાન્ય ગ્રાઉન્ડ પિન સાથે જોડાયેલા છે. સેગમેન્ટને પ્રકાશિત કરવા માટે, તમે તેના ચોક્કસ એનોડ પિનને સકારાત્મક વોલ્ટેજ પ્રદાન કરો છો. 74HC595 એક પુલ તરીકે કાર્ય કરે છે, Arduino માંથી ક્રમિક ડેટા લઈને આ એનોડ્સને ચલાવવા માટે જરૂરી સમાંતર સિગ્નલો આઉટપુટ કરે છે.
વાયરિંગ માર્ગદર્શિકા
શિફ્ટ રજિસ્ટર અને ડિસ્પ્લેને વાયરિંગ કરવું મુશ્કેલ લાગી શકે છે, પરંતુ ડાયાગ્રામને પગલું-દર-પગલાં અનુસરવું નિર્ણાયક છે. વિડિયો (04:48 પર) આ પ્રક્રિયાની વિગતવાર સમજૂતી આપે છે. 74HC595 ચિપમાં પિન 1 ઓળખવા માટે એક છેડે એક ખાંચ છે. પિન ખાંચમાંથી ઘડિયાળની વિરુદ્ધ દિશામાં ક્રમાંકિત છે (એક બાજુ 1-8, બીજી બાજુ 9-16).
અહીં વિડિયોમાંથી વાયરિંગનો સારાંશ છે:
- પાવર અને ગ્રાઉન્ડ: 74HC595 ના પિન 8 અને પિન 13 ને ગ્રાઉન્ડ રેલ સાથે જોડો. પિન 10 અને પિન 16 ને 5V રેલ સાથે જોડો.
- ડેટા લાઇન્સ: Arduino ના ડિજિટલ પિનને શિફ્ટ રજિસ્ટરના ડેટા પિન સાથે જોડો: પિન 12 (STcp) ચિપ પિન 12 સાથે, પિન 8 (SHcp) ચિપ પિન 11 સાથે, અને પિન 11 (DS) ચિપ પિન 14 સાથે.
- ડિસ્પ્લે થી શિફ્ટ રજિસ્ટર: આ સૌથી જટિલ ભાગ છે. વિડિયો (07:18 પર) દરેક જોડાણની વિગત આપે છે. ઉદાહરણ તરીકે, ડિસ્પ્લે પર સેગમેન્ટ 'a' ચિપ પિન 6 સાથે જોડાય છે, સેગમેન્ટ 'b' પિન 5 સાથે, અને તેથી આગળ. ડિસ્પ્લેના સામાન્ય કેથોડ પિન રેઝિસ્ટર દ્વારા ગ્રાઉન્ડ સાથે જોડાયેલા છે.
દ્રશ્ય અને ચોક્કસ માર્ગદર્શિકા માટે, કૃપા કરીને સત્તાવાર વાયરિંગ ડાયાગ્રામનો સંદર્ભ લો:
ચોક્કસ પિન જોડાણો નિર્ણાયક છે, અને ભૂલ કરવી સરળ છે. તમારો સમય લો અને ડાયાગ્રામ સામે દરેક વાયરને બે વાર તપાસો. વિડિયો અનુસરવા માટે એક ઉત્તમ સંસાધન છે.
કોડ સમજૂતી
આ પાઠમાં બે કોડ ઉદાહરણો આપવામાં આવ્યા છે. પ્રથમ એક સરળ કાઉન્ટર છે, અને બીજું તેના પર આધારિત ઇલેક્ટ્રોનિક ડાઇસ બનાવે છે. બંને ડિસ્પ્લેને નિયંત્રિત કરવા માટે સમાન મુખ્ય તર્ક શેર કરે છે.
અહીં મૂળભૂત કાઉન્ટર માટેનો કોડ છે:
const int STcp = 12;//Pin connected to ST_CP of 74HC595
const int SHcp = 8;//Pin connected to SH_CP of 74HC595
const int DS = 11; //Pin connected to DS of 74HC595
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
કોડની ટોચ પર, તમે શિફ્ટ રજિસ્ટર સાથે જોડાયેલા ત્રણ પિન ગોઠવી શકો છો. STcp, SHcp, અને DS અનુક્રમે Arduino પિન 12, 8 અને 11 ને સોંપવામાં આવ્યા છે. datArray[] એક નિર્ણાયક ભાગ છે. તે અંકો 0 થી 9 માટે હેક્સાડેસિમલ મૂલ્યો ધરાવતું લુકઅપ ટેબલ છે. દરેક મૂલ્ય તે ચોક્કસ અંક માટે પ્રકાશિત કરવા માટેના સેગમેન્ટ્સની પેટર્ન દર્શાવે છે.
loop() ફંક્શન કાઉન્ટર ચલાવે છે. તે 0 થી 9 સુધી ગણતરી કરવા માટે for લૂપનો ઉપયોગ કરે છે. લૂપની અંદર, કોડ વર્તમાન નંબર માટેનો ડેટા શિફ્ટ રજિસ્ટરને મોકલે છે. અંતે delay(1000) કાઉન્ટરની ઝડપ મિલિસેકન્ડમાં સેટ કરે છે. ઝડપી ગણતરી માટે આ મૂલ્ય 100 માં બદલો, અથવા ધીમી ગણતરી માટે 500 માં બદલો.
ઇલેક્ટ્રોનિક ડાઇસ કોડ એક નવું તત્વ રજૂ કરે છે: બટન દ્વારા વપરાશકર્તા ઇનપુટ. મુખ્ય રૂપરેખાંકન ફેરફારો છે:
const int buttonPin = 2;
//...
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING);
અહીં, buttonPin ડિજિટલ પિન 2 પર સેટ છે. આ પિન ખાસ છે કારણ કે તેનો ઉપયોગ ઇન્ટરપ્ટ તરીકે થઈ શકે છે. ઇન્ટરપ્ટ આર્ડુઇનોને બટન દબાવવામાં આવે ત્યારે તરત જ તે જે કરી રહ્યું છે તે રોકવાની મંજૂરી આપે છે, જે ઝડપી અને વિશ્વસનીય પ્રતિસાદ સુનિશ્ચિત કરે છે. FALLING મોડ બટન દબાવવામાં આવે ત્યારે ઇન્ટરપ્ટ ટ્રિગર કરે છે (સિગ્નલ HIGH થી LOW તરફ જાય છે).
rollDice ફંક્શન ઇન્ટરપ્ટ દ્વારા કૉલ થાય છે. તે state ચલને 0 અને 1 વચ્ચે ટૉગલ કરે છે. જ્યારે state 0 હોય છે, ત્યારે ડાઇસ "રોલિંગ" હોય છે, અને મુખ્ય loop() રેન્ડમ નંબરો દર્શાવશે. જ્યારે બટન ફરીથી દબાવવામાં આવે છે, ત્યારે state 1 માં બદલાય છે, લૂપ રોકાય છે અને અંતિમ પરિણામ દર્શાવે છે. showNumber() ફંક્શન કાઉન્ટર લોજિક જેવું જ છે, પરંતુ તે દર્શાવવા માટે દલીલ તરીકે નંબર લે છે.
લાઇવ પ્રોજેક્ટ અને પ્રદર્શન
એકવાર કોડ અપલોડ થઈ જાય, કાઉન્ટર ચાલવાનું શરૂ કરશે, એક-સેકન્ડના વિલંબ સાથે 0 થી 9 સુધીના નંબરો દર્શાવશે (વિડિઓમાં 15:04 પર). વિડિઓ કાઉન્ટરને વધુ ઝડપી બનાવવા માટે વિલંબ બદલવાનું દર્શાવે છે.
ઇલેક્ટ્રોનિક ડાઇસ પ્રદર્શન (વિડિઓમાં 20:15 પર) બટન ક્રિયામાં દર્શાવે છે. જ્યારે તમે તેને એકવાર દબાવો છો, ત્યારે ડિસ્પ્લે ઝડપથી નંબરો દ્વારા ચક્ર શરૂ કરે છે. તેને ફરીથી દબાવવાથી ચક્ર રોકાય છે, 1 થી 6 વચ્ચેનો રેન્ડમ નંબર દર્શાવે છે, બરાબર વાસ્તવિક ડાઇસની જેમ.
પ્રકરણો
- [00:00] સેવન-સેગમેન્ટ ડિસ્પ્લે પ્રોજેક્ટનો પરિચય
- [01:25] સેવન-સેગમેન્ટ ડિસ્પ્લેને સમજવું
- [03:51] 5161AS ડિસ્પ્લે ડેટાશીટ અને સ્પષ્ટીકરણો
- [04:48] ડિસ્પ્લે અને શિફ્ટ રજિસ્ટરને વાયરિંગ કરવું
- [12:24] 0-9 કાઉન્ટર માટે આર્ડુઇનો કોડ
- [15:04] કાઉન્ટર પ્રદર્શન અને ઝડપ ગોઠવવી
- [16:27] ઇલેક્ટ્રોનિક ડાઇસ પ્રોજેક્ટ બનાવવું
- [20:15] ઇલેક્ટ્રોનિક ડાઇસ પ્રદર્શન અને ડિબાઉન્સિંગ
/*
Lesson 23/31: Using Seven Segment Display
Get this code and watch video Download and resource page https://robojax.com/RJT605
YouTube video https://www.youtube.com/watch?v=3qoGAYh0lbc
*/
const int STcp = 12;//Pin connected to ST_CP of 74HC595
const int SHcp = 8;//Pin connected to SH_CP of 74HC595
const int DS = 11; //Pin connected to DS of 74HC595
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);
}
}
/*
Lesson 23/31: Electronic Dice
Get this code and watch video Download and resource page https://robojax.com/RJT605
YouTube video https://www.youtube.com/watch?v=3qoGAYh0lbc
*/
const int STcp = 12;//Pin connected to ST_CP of 74HC595
const int SHcp = 8;//Pin connected to SH_CP of 74HC595
const int DS = 11; //Pin connected to DS of 74HC595
const int buttonPin = 2;
int datArray[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
int number = 0;
int state = 0;
void setup ()
{
//set pins to output
pinMode(STcp, OUTPUT);
pinMode(SHcp, OUTPUT);
pinMode(DS, OUTPUT);
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING);
}
void loop()
{
if (state == 0) {
showNumber((int)random(1, 7));
delay(50);
}
}
void showNumber(int num) {
digitalWrite(STcp, LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(STcp, HIGH); //pull the ST_CPST_CP to save the data
}
void rollDice() {
state = !state;
}
Common Course Links
Common Course Files
તમને જોઈતી વસ્તુઓ
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
સંસાધનો અને સંદર્ભો
-
દસ્તાવેજીકરણDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
બાહ્યPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ફાઇલો📁
Arduino લાઇબ્રેરીઓ (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB