سبق 22/31: سات سیگمنٹ ڈسپلے کو Arduino اور الیکٹرانک ڈائس کے ساتھ استعمال کرنا | SunFounder Robojax
اس سبق میں، ہم دریافت کرتے ہیں کہ Arduino کے ساتھ سات حصوں والی ڈسپلے (seven-segment display) کو کیسے کنٹرول کیا جائے۔ ہر LED سیگمنٹ کو براہِ راست چلانے کے لیے درجن بھر یا اس سے زیادہ I/O پن استعمال کرنے کے بجائے، ہم ایک چالاک طریقہ استعمال کرتے ہیں: ایک شفٹ رجسٹر (shift register)۔ یہ چھوٹی، سستی چپ ہمیں Arduino سے صرف تین تاروں کا استعمال کرتے ہوئے تمام سات سیگمنٹس (ساتھ میں اعشاریہ نقطہ) کو کنٹرول کرنے کی اجازت دیتی ہے۔ یہ الیکٹرانکس میں ایک بنیادی تکنیک ہے جو آپ کو اپنے مائیکروکنٹرولر پر دستیاب آؤٹ پٹس کی تعداد بڑھانے کی اجازت دیتی ہے، جس سے بورڈ کو اپ گریڈ کیے بغیر مزید پیچیدہ پروجیکٹس بنانا ممکن ہو جاتا ہے۔
بنیادی کاؤنٹر کے علاوہ، ہم ایک الیکٹرانک ڈائس (dice) بھی بنائیں گے۔ یہ پروجیکٹ نہ صرف ڈسپلے کنٹرول کو مضبوط کرتا ہے بلکہ پش بٹن کے ذریعے صارف کے ان پٹ اور انٹرپٹس (interrupts) کے تصور کو بھی متعارف کراتا ہے، جس سے ایک ردعمل دینے والا اور انٹرایکٹو آلہ بنتا ہے۔ یہ گائیڈ Robojax Arduino کورس کے ایک سبق پر مبنی ہے، جو SunFounder 3-in-1 Arduino کٹ استعمال کرتا ہے۔
یہاں کچھ عملی آئیڈیاز ہیں جو آپ اس علم کے ساتھ بنا سکتے ہیں:
- ایک سادہ اسکور بورڈ بنائیں جیسے ٹیبل ٹینس یا باسکٹ بال کے کھیلوں کے لیے۔
- ایک ڈیجیٹل ٹائمر بنائیں بورڈ گیمز یا کچن کے کاؤنٹ ڈاؤن ٹائمر کے لیے۔
- ایک بے ترتیب نمبر جنریٹر بنائیں کھیلوں یا فیصلہ کرنے کے لیے۔
- ایک بنیادی ڈیجیٹل تھرمامیٹر بنائیں درجہ حرارت کا سینسر شامل کر کے۔
ہارڈویئر اور اجزاء
شروع کرنے سے پہلے، آئیے ضروری اجزاء جمع کریں۔ اس پروجیکٹ کا مرکز 74HC595 شفٹ رجسٹر ہے، جو درکار پنوں کی تعداد کو کم سے کم کرنے کی کلید ہے۔ ساتوں سیگمنٹس کو براہِ راست Arduino سے جوڑنے کے بجائے، ہم انہیں شفٹ رجسٹر سے جوڑتے ہیں۔ Arduino پھر ایک ہندسے کا ڈیٹا سیریل طور پر (ایک وقت میں ایک بٹ) چپ کو بھیجتا ہے، جو پھر سیگمنٹس کو روشن کرنے کے لیے صحیح پیٹرن آؤٹ پٹ کرتی ہے۔
- Arduino Uno (یا مطابقت رکھنے والا بورڈ)
- سات حصوں والی ڈسپلے (ماڈل 5161AS، عام کیتھوڈ)
- 74HC595 شفٹ رجسٹر IC
- پش بٹن
- ریزسٹرز (220Ω - 330Ω)
- جمپر تار
- بریڈ بورڈ
5161AS ڈسپلے ایک عام کیتھوڈ قسم کی ہے۔ اس کا مطلب ہے کہ اندرونی LEDs کے تمام کیتھوڈز (منفی اطراف) ایک مشترکہ گراؤنڈ پن سے جڑے ہوئے ہیں۔ کسی سیگمنٹ کو روشن کرنے کے لیے، آپ اس کے مخصوص اینوڈ پن کو مثبت وولٹیج فراہم کرتے ہیں۔ 74HC595 ایک پل کا کام کرتا ہے، Arduino سے سیریل ڈیٹا لے کر ان اینوڈس کو چلانے کے لیے درکار متوازی سگنل آؤٹ پٹ کرتا ہے۔
وائرنگ گائیڈ
شفٹ رجسٹر اور ڈسپلے کی وائرنگ مشکل لگ سکتی ہے، لیکن ڈایاگرام پر مرحلہ وار عمل کرنا ضروری ہے۔ ویڈیو (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[] ایک اہم حصہ ہے۔ یہ ایک تلاش کی میز (lookup table) ہے جس میں ہندسوں 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
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزون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