څپرکی ۲۲/۳۱: د اوه برخې نندارې کارول د Arduino او برېښنايي ډایس سره | SunFounder Robojax
په دې درس کې، موږ وپلټو چې څنګه د Arduino سره د اوو-برخو نندارې (seven-segment display) کنټرول کړو. د دې پر ځای چې د هر LED برخې مستقیم چلولو لپاره یو درجن یا ډیر I/O پنونه وکاروو، موږ یو هوښیار چل کاروو: یو شفټ راجستر (shift register). دا کوچنی او ارزانه چپ موږ ته اجازه راکوي چې ټولې اووه برخې (د اعشاریې نقطې سره) یوازې د 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() فنکشن کاونټر چلوي. دا د for لوپ په کارولو سره له 0 څخه تر 9 پورې شمېرل کوي. د لوپ دننه، کوډ د اوسني شمېرې معلومات شفټ راجسټر ته لېږي. په پای کې 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
هغه شیان چې تاسو ورته اړتیا لرئ
-
امازون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
فایلونه📁
Arduino کتابتونونه (zip)
-
د SunFounder د 3-in-1 سمارټ موټر زده کړې کټ سرچینه کوډ
3in1-kit-main-v2.zip12.80 MB