Darasi na 22/31: Yin Amfani da Nuni na Sassa Bakwai tare da Arduino da Dice na Lantarki | SunFounder Robojax
A cikin wannan darasi, za mu bincika yadda ake sarrafa nunin kashi bakwai (seven-segment display) tare da Arduino. Maimakon amfani da fil ɗin I/O goma sha biyu ko fiye don kunna kowane sashin LED kai tsaye, muna amfani da dabara mai wayo: shift register. Wannan ƙaramin chip mai rahusa yana ba mu damar sarrafa dukkan sassan bakwai (tare da ma'anar decimal) ta amfani da wayoyi uku kawai daga Arduino. Wannan dabara ce ta asali a cikin ilimin lantarki wadda ke ba ka damar faɗaɗa adadin abubuwan fitarwa da ke kan microcontroller ɗinka, yana sa ka iya gina ayyuka masu rikitarwa ba tare da haɓaka board ɗinka ba. Bayan ƙididdiga na asali, za mu gina dice na lantarki. Wannan aikin ba wai kawai yana ƙarfafa sarrafa nuni ba, har ma yana gabatar da shigar da mai amfani ta hanyar maɓallin turawa da kuma manufar interrupts, yana ƙirƙirar na'urar da ke amsawa da mu'amala. Wannan jagorar ta dogara ne akan darasi daga Robojax Arduino Course, wanda ke amfani da SunFounder 3-in-1 Arduino kit. Ga wasu ra'ayoyi masu amfani da za ka iya ginawa da wannan ilimin:- Ƙirƙirar allo mai sauƙi don wasanni kamar table tennis ko basketball.
- Gina lokaci na dijital don wasannin board ko lokacin ƙidaya na kitchen.
- Yi janareta na lamba mai bazuwar don wasanni ko yanke shawara.
- Gina ma'aunin zafin jiki na dijital ta ƙara sensor na zafin jiki.
Kayan aiki da Components
Kafin mu fara, bari mu tattara abubuwan da ake buƙata. Babban abin wannan aikin shine 74HC595 shift register, wanda shine mabuɗin rage yawan fil ɗin da ake buƙata. Maimakon haɗa kowane ɗayan sassan bakwai kai tsaye zuwa Arduino, muna haɗa su zuwa shift register. Arduino sannan ya aika bayanan lamba zuwa chip ɗin a jere (bit ɗaya a lokaci), wanda sannan ya fitar da tsarin da ya dace don kunna sassan.
- Arduino Uno (ko board mai jituwa)
- Nunin kashi bakwai (model 5161AS, common cathode)
- 74HC595 shift register IC
- Maɓallin turawa
- Resistors (220Ω - 330Ω)
- Wayoyin jumper
- Breadboard
Nunin 5161AS nau'in common cathode ne. Wannan yana nufin dukkan cathodes (ɓangarorin marasa kyau) na LEDs na ciki an haɗa su tare zuwa fil ɗin ƙasa guda ɗaya. Don kunna sashin, kana ba da ƙarfin lantarki mai kyau zuwa fil ɗin anode na musamman. 74HC595 yana aiki azaman gada, yana ɗaukar bayanan jere daga Arduino kuma yana fitar da sigina masu kama da juna da ake buƙata don sarrafa waɗannan anodes.
Jagorar Wiring
Wiring na shift register da nuni na iya zama da wahala, amma bin zane a mataki-mataki yana da mahimmanci. Bidiyon (a 04:48) yana ba da cikakken bayani na wannan tsari. Chip ɗin 74HC595 yana da ƙarami a ƙarshen ɗaya don gano pin 1. An ƙidaya pins ɗin a kishiyar agogo daga ƙaramin (1-8 a gefe ɗaya, 9-16 a ɗayan).
Ga taƙaitaccen wiring daga bidiyon:
- Power da Ground: Haɗa pin 8 da pin 13 na 74HC595 zuwa layin ƙasa. Haɗa pin 10 da pin 16 zuwa layin 5V.
- Layukan Bayanai: Haɗa fil ɗin dijital na Arduino zuwa fil ɗin bayanan shift register: Pin 12 (STcp) zuwa chip pin 12, Pin 8 (SHcp) zuwa chip pin 11, da Pin 11 (DS) zuwa chip pin 14.
- Nuni zuwa Shift Register: Wannan shine mafi rikitarwa. Bidiyon (a 07:18) yana ba da cikakken bayani na kowane haɗi. Misali, sashin 'a' akan nuni yana haɗi zuwa chip pin 6, sashin 'b' zuwa pin 5, da sauransu. Fil ɗin common cathode na nuni an haɗa su zuwa ƙasa ta hanyar resistor.
Don jagora na gani da ingantaccen, don Allah koma zuwa zanen wiring na hukuma:
Haɗin pin ɗin na da mahimmanci, kuma yana da sauƙi a yi kuskure. Ɗauki lokacinka kuma duba kowane waya sau biyu da zane. Bidiyon babban albarkatu ne da za ka bi.
Bayanin Code
An ba da misalan code guda biyu a cikin wannan darasi. Na farko shine ƙididdiga mai sauƙi, kuma na biyu yana gina shi don ƙirƙirar dice na lantarki. Dukansu suna raba ainihin dabara ɗaya don sarrafa nuni.
Ga code na ƙididdiga na asali:
const int STcp = 12;//Pin da aka haɗa zuwa ST_CP na 74HC595
const int SHcp = 8;//Pin da aka haɗa zuwa SH_CP na 74HC595
const int DS = 11; //Pin da aka haɗa zuwa DS na 74HC595
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
A saman code, za ka iya saita fil ɗin uku da aka haɗa zuwa shift register. STcp, SHcp, da DS an sanya su zuwa Arduino pins 12, 8, da 11, bi da bi. datArray[] wani ɓangare ne mai mahimmanci. Tebur ne na dubawa wanda ya ƙunshi ƙimar hexadecimal don lambobi 0 zuwa 9. Kowane ƙimar tana wakiltar tsarin sassan da za a kunna don wannan lambar ta musamman.
Aikin loop() yana gudanar da ƙidaya. Yana amfani da madauki na for don ƙidaya daga 0 zuwa 9. A cikin madauki, lambar tana aika bayanan lambar na yanzu zuwa rijistar motsi. delay(1000) a ƙarshe yana saita saurin ƙidayar a millise seconds. Canza wannan ƙimar zuwa 100 don ƙidaya cikin sauri, ko 500 don a hankali.
Lambar dice ta lantarki tana gabatar da wani sabon abu: shigar da mai amfani ta maɓallin. Canje-canjen tsarin mahimmanci sune:
const int buttonPin = 2;
//...
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING);
Anan, buttonPin an saita shi zuwa fil 2 na dijital. Wannan fil na musamman ne saboda ana iya amfani da shi azaman katsewa. Katsewa yana ba da damar Arduino ya dakatar da abin da yake yi nan take lokacin da aka danna maɓallin, yana tabbatar da amsa mai sauri da amintacciya. Yanayin FALLING yana kunna katsewar lokacin da aka danna maɓallin (siginar yana tafiya daga HIGH zuwa LOW).
Aikin rollDice ana kiransa ta katsewar. Yana juya canjin state tsakanin 0 da 1. Lokacin da state ya kasance 0, dice yana "mirgina," kuma babban loop() zai nuna lambobi ba da gangan ba. Lokacin da aka sake danna maɓallin, state yana canzawa zuwa 1, yana dakatar da madauki kuma yana nuna sakamako na ƙarshe. Aikin showNumber() daidai yake da dabaru na ƙidaya, amma yana ɗaukar lamba azaman hujja don nunawa.
Aiki na Kai Tsaye da Nunawa
Da zarar an ɗora lambar, ƙidaya zai fara gudana, yana nuna lambobi daga 0 zuwa 9 tare da jinkirin dakika ɗaya (a cikin bidiyo a 15:04). Bidiyon yana nuna canza jinkirin don sa ƙidaya ta yi sauri sosai.
Nunin dice na lantarki (a cikin bidiyo a 20:15) yana nuna maɓallin a aiki. Lokacin da ka danna shi sau ɗaya, nunin zai fara zagayawa cikin sauri ta lambobi. Danna shi kuma yana dakatar da zagayawa, yana barin lambar da ba ta dace ba tsakanin 1 da 6 a nunawa, kamar dice na gaske.
Babuka
- [00:00] Gabatarwa ga Aikin Nuni na Bakwai-Segment
- [01:25] Fahimtar Nuni na Bakwai-Segment
- [03:51] Bayanan 5161AS Display da Ƙayyadaddun
- [04:48] Haɗa Nuni da Rijistar Motsi
- [12:24] Lambar Arduino don Ƙidaya 0-9
- [15:04] Nunin Ƙidaya da Daidaita Sauri
- [16:27] Gina Aikin Dice na Lantarki
- [20:15] Nunin Dice na Lantarki da Debouncing
/*
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
Abin da zaka iya bukata
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Albarkatun da kuma shafukan da za a duba
-
TakarduDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
WajePurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Fayiloli📁
Littattafan Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB