Lekcija 14/31-1: Arduino Millis (bez odgode) i map funkcije | SunFounder Robojax
Ovaj vodič predstavlja Arduino millis() funkciju, osnovni alat za projekte zasnovane na vremenu koji zahtijevaju neblokirajuće izvršavanje koda. Za razliku od delay(), koji zaustavlja cijeli program, millis() prati proteklo vrijeme od pokretanja ploče, omogućavajući vašem Arduinu da efikasno obavlja više zadataka. Ovu tehniku možete koristiti za izradu:
- Neblokirajućih LED bljeskalica koje rade dok se drugi kod izvršava.
- Vremenski kontrolisanih događaja pokrenutih senzorima ili dugmadima, kao što je svjetlo koje se gasi 5 sekundi nakon pritiska na dugme.
- Jednostavnih sistema za bilježenje podataka koji snimaju vrijednosti senzora u pravilnim intervalima.
- Korisničkih interfejs sistema koji reaguju na unose bez zamrzavanja.
Razumijevanje millis() funkcije
millis() funkcija je ugrađena Arduino komanda koja vraća broj milisekundi od kada je Arduino ploča počela izvršavati trenutni program. Počinje od nule pri uključivanju i povećava se svake milisekunde. Ovu funkciju možete pozvati u bilo kojem trenutku u svom kodu da dobijete trenutnu vrijednost "vremena rada". Na primjer, nakon 1 sekunde vraća 1000; nakon 5 sekundi vraća 5000. Ključna prednost je što ne pauzira vaš kod, tako da možete provjeriti vrijeme dok se drugi zadaci nastavljaju izvršavati.
Zašto izbjegavati delay()?
delay() funkcija je jednostavan način za pauziranje programa, ali je blokirajuća funkcija. Kada pozovete delay(5000), Arduino prestaje izvršavati sav drugi kod na 5 sekundi, zamrzavajući sve povezane komponente. Ovo je problematično za projekte koji trebaju reagirati na unose ili kontinuirano ažurirati izlaze. Korištenje millis() omogućava vam da provjerite je li prošlo određeno vrijeme bez zaustavljanja ostatka programa, što ga čini idealnim za obavljanje više zadataka.
Potreban hardver
- Arduino ploča (Uno, Mega, itd.)
- USB kabl za programiranje i napajanje
Vodič za povezivanje
Ovaj primjer ne zahtijeva vanjsko povezivanje. Arduino samo treba biti povezan s računarom putem USB-a za upload koda i pregled serijskog monitora.
Objašnjenje koda
Ovaj prvi primjer je jednostavna demonstracija kako millis() funkcioniše. Kod inicijalizira serijski monitor i ispisuje vrijednost millis() u beskonačnoj petlji.
void setup() {
Serial.begin(9600);//inicijalizacija serijskog monitora
Serial.println("Uvod u millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}
setup() funkcija pokreće serijsku komunikaciju na 9600 bauda i ispisuje poruku dobrodošlice. delay(2000) ovdje služi samo za demonstraciju da pokaže kako millis() počinje brojati od trenutka pokretanja programa. loop() funkcija kontinuirano ispisuje trenutnu vrijednost millis(). Kada otvorite Serijski monitor, vidjet ćete vrijeme u milisekundama kako se brzo povećava. Ovo ilustruje da je millis() brojač koji se nikada ne zaustavlja, pružajući kontinuiranu vremensku referencu za vaš program.
Ovo je osnovni gradivni blok. U videu, instruktor demonstrira kako koristiti ovu vrijednost za pokretanje akcija nakon određenog perioda, kao što je provjera je li prošlo 5000 milisekundi (5 sekundi) prije izvršavanja specifičnog bloka koda. To se radi pohranjivanjem trenutne millis() vrijednosti u varijablu i zatim njenim poređenjem u glavnoj petlji.
Upravljanje LED diodom s procentualnom vrijednošću pomoću map() funkcije obrađeno je u Lekciji 14/31-4: Arduino kodiranje map() primjer 1.
Demonstracija projekta uživo
U videu, instruktor uploaduje ovaj kod i otvara Serijski monitor. Možete vidjeti da izlaz počinje nakon početnog kašnjenja od 2 sekunde, pokazujući vrijednost blizu 1999. Brojevi se zatim brzo povećavaju, demonstrirajući kontinuirano brojanje milisekundi. Ovaj prikaz uživo potvrđuje da funkcija radi i pruža jasno vizuelno razumijevanje kako se vrijeme prati.
Povezani projekti iz ovog videa
- Lekcija 14/31-2: Arduino kodiranje millis() primjer 2 s događajem
- Lekcija 14/31-3: Arduino kodiranje millis() primjer 3 s tipkalom
- Lekcija 14/31-4: Arduino kodiranje map() primjer 1
- Lekcija 14/31-5: Arduino kodiranje map() primjer 2
Poglavlja
- [00:00] Uvod u millis()
- [01:19] Šta je millis() i zašto ga koristiti
- [03:06] Praktična demonstracija millis()
- [05:46] Korištenje millis() za pokretanje vremenski kontrolisanog događaja
- [08:29] Primjer s tipkalom
- [12:14] Napredni primjer mjerenja vremena s tipkalom
- [17:20] Uvod u map() funkciju
- [19:47] Primjer koda za map() s LED diodom
- [22:41] Kreiranje prilagođene map funkcije
/*
Lesson 14/31: Arduino coding millis() example 1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
* Example-1 of using millis() with Arduino
* Written by Ahmad Shamshiri on July 27, 2019
* in Ajax, Ontario, Canada
* Watch video instructio for millis() :https://youtu.be/u2HsiTS8niQ
*/
void setup() {
Serial.begin(9600);//initialize serial monitor
Serial.println("Introduction to millis");
delay(2000);
}
void loop() {
Serial.println(millis());
}// loop end
Common Course Links
Common Course Files
Stvari koje bi vam mogle zatrebati
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Resursi i reference
-
DokumentacijaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
EksternoPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Datoteke📁
Arduino biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB