کوډ ولټوئ

څپرکی ۲۲/۳۱: د اوه برخې نندارې کارول د Arduino او برېښنايي ډایس سره | SunFounder Robojax

څپرکی ۲۲/۳۱: د اوه برخې نندارې کارول د 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 څخه سریال ډاټا اخلي او موازي سیګنالونه تولیدوي چې د دې انوډونو د چلولو لپاره اړین دي.

د تارونو لارښود

circuit_6.5_segment_schematic
segment_wiring_sundounder_3-in-1-kit

د شفټ راجستر او نندارې تارونه کول ستونزمن ښکاري، مګر د ډیاګرام ګام په ګام تعقیب کول خورا مهم دي. ویډیو (په 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] د برېښنايي پاسې مظاهره او ډیبونسینګ

انځورونه

Wiring on breadboard from video
Wiring on breadboard from video
Circuit 6.5 segment schematic
Circuit 6.5 segment schematic
Dice
Dice
Segment wiring for Sunfounder 3-in-1 kit
Segment wiring for Sunfounder 3-in-1 kit
Segments of segment display
Segments of segment display
Seven segment pins - common cathode
Seven segment pins - common cathode
Seven segment pins - DP decimal pin
Seven segment pins - DP decimal pin
Seven segment pins - common cathode
Seven segment pins - common cathode
902-Lesson 23/31: Arduino code Using Seven Segment Display
ژبه: C++
/*
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);
  }
}
903-Lesson 23/31: Electronic dice
ژبه: C++
/*
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;
}

هغه شیان چې تاسو ورته اړتیا لرئ

سرچینې او حوالې

فایلونه📁

Arduino کتابتونونه (zip)