Lekcija 14/31-4: Arduino kodiranje map() primjer 1
Ovaj tutorijal je dio serije o Arduino programiranju i fokusira se na praktičnu upotrebu map() funkcije. U ovoj lekciji naučit ćete kako pretvoriti procentualnu vrijednost (0–100) u PWM (Pulse Width Modulation) vrijednost (0–255) za kontrolu svjetline LED diode. Umjesto ručnog izračunavanja da 60% iznosi 153, map() funkcija obavlja linearnu konverziju za vas, čineći vaš kod čišćim i intuitivnijim.
Ova tehnika je neophodna za mnoge stvarne aplikacije gdje trebate prevesti očitanja senzora ili korisničke unose u različite raspone. Na primjer, mogli biste je koristiti za:
- Kontrolu brzine DC motora na osnovu očitanja potenciometra.
- Prikaz sirove vrijednosti temperaturnog senzora na skali od 0-100%.
- Mapiranje koordinata džojstika na uglove servo motora.
- Podešavanje svjetline LED diode na osnovu senzora ambijentalnog svjetla.
- Pretvaranje analognog očitanja od 0-5V u digitalnu vrijednost od 0-1023 ili obrnuto.
Hardver/Komponente
Za praćenje ovog projekta trebat će vam sljedeće komponente:
- Arduino ploča (Uno, Nano, itd.)
- LED dioda
- Otpornik od 220 oma
- Konektorske žice (jumper wires)
- Breadboard (opciono, ali preporučljivo)
Vodič za povezivanje
U videu, instruktor demonstrira projekt koristeći raspored povezivanja iz prethodne lekcije o fadingu LED diode. Krug je jednostavan: spojite anodu (dužu nogicu) LED diode na otpornik od 220 oma, a drugi kraj tog otpornika spojite na digitalni pin 3 na Arduinu. Spojite katodu (kraću nogicu) LED diode direktno na pin za uzemljenje (GND) na Arduinu.
Objašnjenje koda
Kod za ovaj primjer je vrlo kratak, a osnovna logika se nalazi u setup() funkciji. Hajde da raščlanimo dijelove koje korisnik može konfigurisati.
int LEDpin = 3; //definisan pin za LED
Ova linija definira Arduino pin na koji je vaša LED dioda spojena. U ovom primjeru, postavljen je na pin 3, koji je pin sa PWM podrškom, neophodan za analogni izlaz. Ovaj broj možete promijeniti ako spojite LED diodu na drugi PWM pin.
int b=8;//60% svjetlina
Ovo je ključna varijabla koju ćete mijenjati za testiranje različitih nivoa svjetline. Ona predstavlja željenu svjetlinu kao procenat. Komentar u kodu kaže "60%", ali vrijednost je postavljena na 8 za potrebe demonstracije u videu. Ovo možete promijeniti u bilo koji cijeli broj između 0 i 100. Na primjer, postavljanje b = 60 bi predstavljalo nivo svjetline od 60%.
int brightness = map(b, 0, 100, 0,255);
Ovo je srce lekcije. map() funkcija uzima vašu procentualnu vrijednost (b) i pretvara je iz originalnog raspona (0 do 100) u novi ciljni raspon (0 do 255). Rezultat se pohranjuje u varijablu brightness, koja se zatim koristi za slanje analogne vrijednosti na LED pin.
analogWrite(LEDpin, brightness);// uključi LED sa 60% svjetline
Konačno, ova linija šalje mapiranu vrijednost na LED pin koristeći analogWrite(). Ovo postavlja radni ciklus (duty cycle) LED diode, efektivno kontrolišući njenu svjetlinu. Ljepota ovog pristupa je u tome što samo trebate promijeniti b varijablu za kontrolu LED diode, a map() funkcija obavlja sva potrebna izračunavanja.
Živi projekt/Demonstracija
U videu, instruktor učitava kod i demonstrira efekat promjene b varijable. Kada je b postavljeno na 8, serijski monitor ispisuje mapiranu vrijednost od 20, i LED dioda je vidno prigušena. Promjena b na 90 rezultira mapiranom vrijednošću od 229, čineći LED diodu mnogo svjetlijom. Postavljanje b na 100 mapira se na 255, što je puna svjetlina. Ova praktična demonstracija jasno pokazuje kako map() funkcija pojednostavljuje proces kontrole analognih izlaza s korisnički prijateljskim procentualnim vrijednostima.
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 s događajem
- Lekcija 14/31-3: Arduino kodiranje millis() primjer 3 s push dugmetom
- Lekcija 14/31-5: Arduino kodiranje map() primjer 2
Poglavlja
- [00:00] Uvod u Arduino kurs od Robojaxa
- [01:19] Šta je millis() i zašto ga koristiti
- [05:46] Primjer 1: Korištenje millis() za vremenski događaj
- [08:29] Primjer 2: Korištenje millis() s push dugmetom
- [12:14] Primjer 3: Detekcija drugog pritiska dugmeta nakon odgode
- [17:20] Uvod u map() funkciju
- [19:47] Prolazak kroz kod za map() primjer
- [20:41] Živa demonstracija map() funkcije
/*
Lesson 14/31: Arduino coding map( ) 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/>.
*/
int LEDpin = 3; //defind pin for LED
void setup() {
Serial.begin(9600);//initialize serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=8;//60% brightness
int brightness = map(b, 0, 100, 0,255);
Serial.println(brightness);//print it on serial monitor
analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness
}
void loop() {
}
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📁
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