Szukaj kodu

Lekcja 14/31-4: Przykład 1 mapowania() w kodzie Arduino

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

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()

Obrazy

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Język: 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() {

 
 }
 

Zasoby i odniesienia

Pliki📁

Instrukcja obsługi