Lekcija 14/31-5: Arduino kodiranje map() primjer 2
Ovaj tutorijal pokazuje kako koristiti Arduino map() funkciju za kontrolu svjetline LED diode koristeći procentualnu vrijednost (0–100%) umjesto sirovog 0–255 opsega koji zahtijeva analogWrite(). Ovo je osnovna tehnika koja pojednostavljuje vaš kod i čini ga mnogo intuitivnijim, jer možete razmišljati u procentima umjesto u proizvoljnim bajt vrijednostima.
Ova vještina je neophodna za svaki projekat gdje trebate skalirati očitanja senzora ili kontrolne signale. Na primjer, možete je koristiti za:
- Kontrolu svjetline LED diode ili brzine motora na osnovu očitanja potenciometra.
- Pretvaranje izlaza temperaturnog senzora (npr. 0–1023) u Celzijus ili Fahrenheit opseg.
- Mapiranje analognog ulaza džojstika za kontrolu pozicije servo motora.
- Kreiranje jednostavnog korisničkog interfejsa gdje se procentualna vrijednost koristi za postavljanje nivoa snage uređaja.
Do kraja ove lekcije, moći ćete pisati čišći, održiviji kod koji je lakše čitati i prilagođavati.
Hardver/Komponente
Ovaj projekat koristi minimalan set komponenti, što ga čini savršenim za početnike. Trebat će vam:
- Arduino ploča (npr. Uno).
- LED dioda.
- Otpornik od 220 oma.
- Konektorske žice.
- Breadboard (opciono, ali preporučljivo).
Vodič za povezivanje
Povezivanje za ovaj projekat je vrlo jednostavno, kao što je prikazano u videu (u videu na 20:47). LED dioda je spojena na pin 3 Arduina kroz otpornik od 220 oma koji ograničava struju.
Spojite anodu (dužu nogicu) LED diode na pin 3 kroz otpornik. Spojite katodu (kraću nogicu) LED diode na uzemljenje (GND) pin na Arduinu.
Objašnjenje koda
Ovaj primjer se fokusira na korisnički definiranu funkciju koja pojednostavljuje kontrolu svjetline LED diode. Kod je izgrađen oko prilagođene funkcije nazvane pwmValue(), koja je ključ za intuitivan kod.
Hajde da raščlanimo konfigurabilne dijelove koda:
int LEDpin = 3; //definisan pin za LED
Ova linija definira Arduino pin na koji je LED dioda spojena. Možete promijeniti broj 3 u bilo koji drugi PWM pin na vašoj Arduino ploči.
Srž projekta je prilagođena funkcija pwmValue(). Ova funkcija uzima procentualnu vrijednost kao ulaz i pretvara je u 0–255 opseg koji koristi analogWrite(). Ovdje map() funkcija čini svoju magiju.
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
Da biste koristili ovu funkciju, jednostavno je pozovite sa željenim procentom svjetline. Funkcija će vratiti tačnu vrijednost za analogWrite(). Na primjer, pwmValue(60) će vratiti 153, što odgovara 60% od 255. Funkcija također uključuje sigurnosnu provjeru da osigura da je ulazni procenat između 0 i 100, vraćajući 0 ako je izvan ovog opsega.
U setup() funkciji, možete vidjeti kako se ovo koristi:
int b=5;//60% svjetline
Serial.println( pwmValue(b) );//printaj na serijskom monitoru
analogWrite(LEDpin, pwmValue(b));// uključi LED sa 60% svjetline
Ovdje je varijabla b postavljena na vaš željeni procenat svjetline. Funkcija pwmValue(b) se zatim koristi i za ispis mapirane vrijednosti na Serijski monitor i za postavljanje svjetline LED diode. Da biste promijenili svjetlinu LED diode, samo trebate modificirati vrijednost b. map() funkcija obavlja sve potrebne proračune za vas.
Živi projekat/Demonstracija
U videu, voditelj demonstrira projekat mijenjajući vrijednost b varijable i uploadajući kod na Arduino. Kada je b postavljeno na 60, kod ga mapira na 153 i LED dioda svijetli sa 60% svjetline. Promjena b na 90 mapira na 229, čineći LED diodu primjetno svjetlijom. Postavljanje na 100 mapira na 255, što je maksimalna svjetlina. Demonstracija jasno pokazuje kako map() funkcija omogućava kontrolu LED diode koristeći intuitivnu procentualnu vrijednost, dok Serijski monitor potvrđuje tačnu 0–255 vrijednost koja se šalje na pin (u videu na 21:29).
Povezani projekti iz ovog videa
- Lekcija 14/31-1: Arduino Millis (bez delay) i map funkcije | SunFounder Robojax
- Lekcija 14/31-2: Arduino kodiranje millis() primjer 2 sa događajem
- Lekcija 14/31-3: Arduino kodiranje millis() primjer 3 sa push dugmetom
- Lekcija 14/31-4: Arduino kodiranje map() primjer 1
Poglavlja
- [00:00] Uvod u Millis i map funkcije
- [01:19] Šta je Millis i zašto ga koristiti
- [05:46] Korištenje Millis-a sa događajem za poduzimanje akcije
- [08:35] Millis primjer 2 sa push dugmetom
- [12:14] Millis primjer 3 provjera dva pritiska dugmeta
- [17:20] Uvod u map() funkciju
- [19:47] Primjer koda za mapiranje procenta na svjetlinu LED diode
- [20:47] Živa demonstracija map() funkcije
- [22:41] Kreiranje prilagođene funkcije za rukovanje mapiranjem
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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/>.
*/
int LEDpin = 3; //defind pin for LED
void setup() {
Serial.begin(9600);//initialzie serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
}
void loop() {
}
/*
* pwmValue(int percent)
* @param precent is value between 0 to 100
* @return it returns the mapped value from 0 to 255
* written by Ahmad Shamshiri on Dec 9, 2022
*
*/
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
} //pwmValue end
Stvari koje bi vam mogle zatrebati
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Ostalo
Resursi i reference
-
EksternoPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Datoteke📁
Korisnički priručnik
-
SunFounder 3-u-1 Arduino Smart Car priručnik za sastavljanjeOvaj dokument prikazuje korak po korak sastavljanje SunFounder 3-u-1 Arduino Smart Car-a
SunFounder_car_assembly_manual.pdf1.20 MB