Сабақ 22/31: Жеті сегментті индикаторды Arduino және электронды сүйекпен қолдану | SunFounder Robojax
const int STcp = 12;// ST_CP 74HC595 пиніне қосылған пин
const int SHcp = 8;// SH_CP 74HC595 пиніне қосылған пин
const int DS = 11; // DS 74HC595 пиніне қосылған пин
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
loop() функциясы есептегішті жүргізеді. Ол 0-ден 9-ға дейін санау үшін for циклін пайдаланады. Цикл ішінде код ағымдағы санның деректерін ығысу регистріне жібереді. Соңындағы delay(1000) есептегіштің жылдамдығын миллисекундпен белгілейді. Жылдамырақ санау үшін бұл мәнді 100-ге, ал баяуырақ үшін 500-ге өзгертіңіз.
Электронды сүйек коды жаңа элементті енгізеді: түйме арқылы пайдаланушы енгізуі. Негізгі конфигурация өзгерістері:
const int buttonPin = 2;
//...
pinMode(buttonPin, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING);
Мұнда buttonPin цифрлық 2-ші пинге орнатылған. Бұл пин ерекше, себебі оны үзіліс ретінде пайдалануға болады. Үзіліс Arduino-ға түйме басылған кезде дереу тоқтауға мүмкіндік береді, бұл жылдам және сенімді жауапты қамтамасыз етеді. 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 есептегішіне арналған Arduino коды
- [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's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB