பாடம் 22/31: ஆர்டுயினோ மற்றும் எலக்ட்ரானிக் டைஸுடன் செவன் செக்மென்ட் டிஸ்ப்ளேவைப் பயன்படுத்துதல் | சன்ஃபவுண்டர் ரோபோஜாக்ஸ்
இந்தப் பாடத்தில், Arduino உடன் ஏழு-பிரிவு காட்சியை (seven-segment display) எவ்வாறு கட்டுப்படுத்துவது என்பதை ஆராய்வோம். ஒவ்வொரு LED பிரிவையும் நேரடியாக இயக்க பன்னிரண்டு அல்லது அதற்கு மேற்பட்ட I/O பின்களைப் பயன்படுத்துவதற்குப் பதிலாக, ஒரு புத்திசாலித்தனமான தந்திரத்தைப் பயன்படுத்துகிறோம்: ஒரு ஷிப்ட் ரெஜிஸ்டர் (shift register). இந்த சிறிய, மலிவான சிப்பானது, Arduino இலிருந்து வெறும் மூன்று கம்பிகளைப் பயன்படுத்தி அனைத்து ஏழு பிரிவுகளையும் (தசம புள்ளி உட்பட) கட்டுப்படுத்த அனுமதிக்கிறது. இது மின்னணுவியலில் ஒரு அடிப்படை நுட்பமாகும், இது உங்கள் மைக்ரோகண்ட்ரோலரில் கிடைக்கும் வெளியீடுகளின் எண்ணிக்கையை விரிவாக்க உதவுகிறது, இதனால் உங்கள் போர்டை மேம்படுத்தாமல் மிகவும் சிக்கலான திட்டங்களை உருவாக்க முடியும்.
அடிப்படை கவுண்டருக்கு அப்பால், ஒரு மின்னணு பகடையை (electronic dice) உருவாக்குவோம். இந்த திட்டம் காட்சி கட்டுப்பாட்டை வலுப்படுத்துவது மட்டுமல்லாமல், புஷ் பட்டன் மூலம் பயனர் உள்ளீடு மற்றும் இன்டர்ரப்ட்கள் (interrupts) என்ற கருத்தையும் அறிமுகப்படுத்துகிறது, இது ஒரு பதிலளிக்கக்கூடிய மற்றும் ஊடாடும் சாதனத்தை உருவாக்குகிறது. இந்த வழிகாட்டி Robojax Arduino பாடத்தின் ஒரு பாடத்தை அடிப்படையாகக் கொண்டது, இது SunFounder 3-in-1 Arduino கிட்டைப் பயன்படுத்துகிறது.
இந்த அறிவைக் கொண்டு நீங்கள் உருவாக்கக்கூடிய சில நடைமுறை யோசனைகள் இங்கே:
- எளிய ஸ்கோர்போர்டை உருவாக்குங்கள் டேபிள் டென்னிஸ் அல்லது கூடைப்பந்து போன்ற விளையாட்டுகளுக்கு.
- டிஜிட்டல் டைமரை உருவாக்குங்கள் போர்டு கேம்கள் அல்லது சமையலறை கவுண்டவுன் டைமருக்கு.
- சீரற்ற எண் ஜெனரேட்டரை உருவாக்குங்கள் விளையாட்டுகள் அல்லது முடிவெடுப்பதற்கு.
- அடிப்படை டிஜிட்டல் தெர்மோமீட்டரை உருவாக்குங்கள் வெப்பநிலை சென்சாரைச் சேர்ப்பதன் மூலம்.
வன்பொருள் மற்றும் கூறுகள்
நாம் தொடங்குவதற்கு முன், தேவையான கூறுகளை சேகரிப்போம். இந்த திட்டத்தின் மையமானது 74HC595 ஷிப்ட் ரெஜிஸ்டர் ஆகும், இது தேவையான பின்களின் எண்ணிக்கையை குறைப்பதற்கான முக்கிய காரணியாகும். ஏழு பிரிவுகளில் ஒவ்வொன்றையும் நேரடியாக Arduino உடன் இணைப்பதற்குப் பதிலாக, அவற்றை ஷிப்ட் ரெஜிஸ்டருடன் இணைக்கிறோம். Arduino பின்னர் ஒரு இலக்கத்திற்கான தரவை சிப்பிற்கு தொடராக (ஒரு நேரத்தில் ஒரு பிட்) அனுப்புகிறது, இது பிரிவுகளை ஒளிரச் செய்ய சரியான வடிவத்தை வெளியிடுகிறது.
- Arduino Uno (அல்லது இணக்கமான போர்டு)
- ஏழு-பிரிவு காட்சி (மாதிரி 5161AS, பொதுவான கேத்தோடு)
- 74HC595 ஷிப்ட் ரெஜிஸ்டர் IC
- புஷ் பட்டன்
- மின்தடையங்கள் (220Ω - 330Ω)
- ஜம்பர் கம்பிகள்
- பிரெட்போர்டு
5161AS காட்சி ஒரு பொதுவான கேத்தோடு வகையாகும். இதன் பொருள் உள் LED களின் அனைத்து கேத்தோடுகளும் (எதிர்மறை பக்கங்கள்) ஒரு பொதுவான தரை பின்னுடன் இணைக்கப்பட்டுள்ளன. ஒரு பிரிவை ஒளிரச் செய்ய, அதன் குறிப்பிட்ட அனோட் பின்னுக்கு நேர்மறை மின்னழுத்தத்தை வழங்குகிறீர்கள். 74HC595 ஒரு பாலமாக செயல்படுகிறது, Arduino இலிருந்து தொடர் தரவை எடுத்து இந்த அனோட்களை இயக்க தேவையான இணை (parallel) சிக்னல்களை வெளியிடுகிறது.
வயரிங் வழிகாட்டி
ஷிப்ட் ரெஜிஸ்டர் மற்றும் காட்சியை வயரிங் செய்வது தந்திரமானதாக தோன்றலாம், ஆனால் வரைபடத்தை படிப்படியாக பின்பற்றுவது மிகவும் முக்கியம். வீடியோ (04:48 இல்) இந்த செயல்முறையின் விரிவான விளக்கத்தை வழங்குகிறது. 74HC595 சிப்பில் ஒரு முனையில் ஒரு உள்தாழ்வு (notch) உள்ளது, இது பின் 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 ஆக அமைக்கப்பட்டுள்ளது. இந்த பின் சிறப்பு வாய்ந்தது, ஏனெனில் இது ஒரு இடையீடாக (interrupt) பயன்படுத்தப்படலாம். ஒரு இடையீடு, பொத்தானை அழுத்தும்போது ஆர்டுயினோ உடனடியாக தான் செய்வதை நிறுத்த அனுமதிக்கிறது, இது விரைவான மற்றும் நம்பகமான பதிலை உறுதி செய்கிறது. 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
நீங்கள் தேவைப்படும் எண்ணங்கள்
-
அமேசான்SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
அமேசான்
-
அமேசான்
-
அமேசான்
-
அமேசான்
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
வெளியுறுப்புPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
கோப்புகள்📁
ஆர்டினோ நூலகங்கள் (ஜிப்)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB