Pretraži kod

Lekcija 14/31-4: Arduino kodiranje map() primjer 1

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

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

Slike

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Jezik: C++
/*
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() {

 
 }
 

Resursi i reference

Datoteke📁

Korisnički priručnik