Lekcja 14/31-4: Przykład 1 mapowania() w kodzie Arduino
Ten samouczek jest częścią serii o programowaniu Arduino i skupia się na praktycznym zastosowaniu funkcji map(). W tej lekcji nauczysz się, jak przeliczać wartość procentową (0–100) na wartość PWM (Pulse Width Modulation) (0–255), aby sterować jasnością diody LED. Zamiast ręcznie obliczać, że 60% równa się 153, funkcja map() wykonuje za Ciebie konwersję liniową, dzięki czemu Twój kod jest czystszy i bardziej intuicyjny.
Ta technika jest niezbędna w wielu rzeczywistych zastosowaniach, gdzie trzeba przeliczać odczyty czujników lub dane wejściowe użytkownika na różne zakresy. Na przykład można jej użyć do:
- Sterowania prędkością silnika prądu stałego na podstawie odczytu potencjometru.
- Wyświetlania surowej wartości czujnika temperatury w skali 0–100%.
- Mapowania współrzędnych joysticka na kąty serwomechanizmu.
- Dostosowywania jasności diody LED na podstawie czujnika światła otoczenia.
- Przeliczania odczytu analogowego 0–5 V na wartość cyfrową 0–1023 lub odwrotnie.
Sprzęt/Komponenty
Aby wykonać ten projekt, będziesz potrzebować następujących komponentów:
- Płytka Arduino (Uno, Nano itp.)
- Dioda LED
- Rezystor 220 omów
- Przewody połączeniowe
- Płytka stykowa (opcjonalnie, ale zalecana)
Schemat połączeń
Na filmie instruktor demonstruje projekt, korzystając z układu połączeń z poprzedniej lekcji o płynnym ściemnianiu diody LED. Obwód jest prosty: podłącz anodę (dłuższą nóżkę) diody LED do rezystora 220 omów, a drugi koniec rezystora do pinu cyfrowego 3 na Arduino. Podłącz katodę (krótszą nóżkę) diody LED bezpośrednio do pinu masy (GND) na Arduino.
Wyjaśnienie kodu
Kod w tym przykładzie jest bardzo zwięzły, a główna logika znajduje się w funkcji setup(). Omówmy części konfigurowalne przez użytkownika.
int LEDpin = 3; //definiuje pin dla diody LED
Ta linia definiuje pin Arduino, do którego podłączona jest dioda LED. W tym przykładzie ustawiono pin 3, który obsługuje PWM, niezbędny do wyjścia analogowego. Możesz zmienić tę liczbę, jeśli podłączysz diodę LED do innego pinu PWM.
int b=8;//60% jasności
To jest kluczowa zmienna, którą będziesz modyfikować, aby testować różne poziomy jasności. Reprezentuje ona pożądaną jasność w procentach. Komentarz w kodzie mówi „60%”, ale wartość ustawiono na 8 w celach demonstracyjnych na filmie. Możesz zmienić ją na dowolną liczbę całkowitą od 0 do 100. Na przykład ustawienie b = 60 oznaczałoby 60% jasności.
int brightness = map(b, 0, 100, 0,255);
To jest sedno lekcji. Funkcja map() pobiera wartość procentową (b) i przelicza ją z pierwotnego zakresu (0–100) na nowy zakres docelowy (0–255). Wynik jest zapisywany w zmiennej brightness, która następnie służy do zapisu wartości analogowej na pinie diody LED.
analogWrite(LEDpin, brightness);// włącza diodę LED z 60% jasnością
Na koniec ta linia wysyła przeliczoną wartość na pin diody LED za pomocą analogWrite(). Ustawia to współczynnik wypełnienia diody, skutecznie kontrolując jej jasność. Piękno tego podejścia polega na tym, że wystarczy zmienić zmienną b, aby sterować diodą, a funkcja map() wykonuje wszystkie niezbędne obliczenia.
Projekt na żywo/Demonstracja
Na filmie instruktor wgrywa kod i demonstruje efekt zmiany zmiennej b. Gdy b jest ustawione na 8, monitor szeregowy wyświetla przeliczoną wartość 20, a dioda LED jest wyraźnie przygaszona. Zmiana b na 90 daje przeliczoną wartość 229, przez co dioda jest znacznie jaśniejsza. Ustawienie b na 100 mapuje się na 255, co oznacza pełną jasność. Ta praktyczna demonstracja wyraźnie pokazuje, jak funkcja map() upraszcza proces sterowania wyjściami analogowymi za pomocą przyjaznych dla użytkownika wartości procentowych.
Powiązane projekty z tego filmu
- Lekcja 14/31-1: Arduino Millis (bez opóźnień) i funkcje map | SunFounder Robojax
- Lekcja 14/31-2: Kodowanie Arduino millis() przykład 2 ze zdarzeniem
- Lekcja 14/31-3: Kodowanie Arduino millis() przykład 3 z przyciskiem
- Lekcja 14/31-5: Kodowanie Arduino map() przykład 2
Rozdziały
- [00:00] Wprowadzenie do kursu Arduino autorstwa Robojax
- [01:19] Czym jest millis() i dlaczego warto go używać
- [05:46] Przykład 1: Użycie millis() do zdarzenia czasowego
- [08:29] Przykład 2: Użycie millis() z przyciskiem
- [12:14] Przykład 3: Wykrywanie drugiego naciśnięcia przycisku po opóźnieniu
- [17:20] Wprowadzenie do funkcji map()
- [19:47] Omówienie kodu dla przykładu z map()
- [20:41] Demonstracja na żywo funkcji map()
/*
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() {
}
Rzeczy, których możesz potrzebować
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Zasoby i odniesienia
-
DokumentacjaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ZewnętrznyPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Pliki📁
Instrukcja obsługi
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB