Kod Ara

Ders 14/31-4: Arduino kodlama map() örneği 1

Ders 14/31-4: Arduino kodlama map() örneği 1

Bu eğitim, Arduino programlama üzerine bir dizi dersin parçasıdır ve map() fonksiyonunun pratik kullanımına odaklanır. Bu derste, bir LED'in parlaklığını kontrol etmek için bir yüzde değerini (0–100) bir PWM (Darbe Genişliği Modülasyonu) değerine (0–255) nasıl dönüştüreceğinizi öğreneceksiniz. %60'ın 153'e eşit olduğunu manuel olarak hesaplamak yerine, map() fonksiyonu doğrusal dönüşümü sizin için halleder ve kodunuzu daha temiz ve daha sezgisel hale getirir.

Bu teknik, sensör okumalarını veya kullanıcı girdilerini farklı aralıklara çevirmeniz gereken birçok gerçek dünya uygulaması için gereklidir. Örneğin, bunu şunlar için kullanabilirsiniz:

  • Potansiyometre okumasına dayalı olarak bir DC motorun hızını kontrol etmek.
  • Bir sıcaklık sensörünün ham değerini %0-100 ölçeğinde görüntülemek.
  • Joystick koordinatlarını servo motor açılarına eşlemek.
  • Ortam ışığı sensörüne dayalı olarak LED parlaklığını ayarlamak.
  • 0-5V analog okumayı 0-1023 dijital değere veya tam tersine dönüştürmek.

Donanım/Bileşenler

Bu projeyi takip etmek için aşağıdaki bileşenlere ihtiyacınız olacak:

  • Arduino kartı (Uno, Nano, vb.)
  • Bir LED
  • 220 ohm'luk bir direnç
  • Jumper kablolar
  • Bir breadboard (isteğe bağlı, ancak önerilir)

Bağlantı Kılavuzu

Videoda, eğitmen projeyi LED sönümlendirme üzerine önceki bir dersteki bağlantı düzenini kullanarak gösterir. Devre basittir: LED'in anotunu (uzun bacak) 220 ohm'luk bir dirence bağlayın ve bu direncin diğer ucunu Arduino'daki dijital pin 3'e bağlayın. LED'in katodunu (kısa bacak) doğrudan Arduino'daki toprak (GND) pinine bağlayın.

Kod Açıklaması

Bu örneğin kodu çok kısadır ve temel mantık setup() fonksiyonunda yer alır. Kullanıcı tarafından yapılandırılabilir kısımları inceleyelim.

int LEDpin = 3; //LED için pini tanımla

Bu satır, LED'inizin bağlı olduğu Arduino pinini tanımlar. Bu örnekte, analog çıkış için gerekli olan PWM destekli bir pin olan pin 3'e ayarlanmıştır. LED'inizi farklı bir PWM pinine bağlarsanız bu numarayı değiştirebilirsiniz.

int b=8;//%60 parlaklık

Bu, farklı parlaklık seviyelerini test etmek için değiştireceğiniz anahtar değişkendir. İstenen parlaklığı yüzde olarak temsil eder. Koddaki yorum "%60" der, ancak değer videoda gösterim amacıyla 8 olarak ayarlanmıştır. Bunu 0 ile 100 arasında herhangi bir tam sayıya değiştirebilirsiniz. Örneğin, b = 60 ayarlamak %60 parlaklık seviyesini temsil eder.

int brightness = map(b, 0, 100, 0,255);

Bu, dersin kalbidir. map() fonksiyonu yüzde değerinizi (b) alır ve onu orijinal aralığından (0 ila 100) yeni bir hedef aralığa (0 ila 255) dönüştürür. Sonuç, brightness değişkeninde saklanır ve daha sonra LED pinine analog bir değer yazmak için kullanılır.

analogWrite(LEDpin, brightness);// LED'i %60 parlaklıkla aç

Son olarak, bu satır eşlenen değeri analogWrite() kullanarak LED pinine gönderir. Bu, LED'in görev döngüsünü ayarlar ve parlaklığını etkili bir şekilde kontrol eder. Bu yaklaşımın güzelliği, LED'i kontrol etmek için yalnızca b değişkenini değiştirmeniz gerekmesi ve map() fonksiyonunun gerekli tüm hesaplamaları yapmasıdır.

Canlı Proje/Gösterim

Videoda, eğitmen kodu yükler ve b değişkenini değiştirmenin etkisini gösterir. b 8 olarak ayarlandığında, seri monitör 20 eşlenen değerini yazdırır ve LED gözle görülür şekilde sönüktür. b 90 olarak değiştirildiğinde 229 eşlenen değeri elde edilir ve LED çok daha parlak hale gelir. b 100 olarak ayarlandığında 255'e eşlenir, bu da tam parlaklıktır. Bu pratik gösterim, map() fonksiyonunun kullanıcı dostu yüzde değerleriyle analog çıkışları kontrol etme sürecini nasıl basitleştirdiğini açıkça gösterir.

Bu videoyla ilgili projeler

Bölümler

  • [00:00] Robojax tarafından Arduino Kursuna Giriş
  • [01:19] millis() nedir ve neden kullanılır
  • [05:46] Örnek 1: Zamanlanmış bir olay için millis() kullanımı
  • [08:29] Örnek 2: Bir butonla millis() kullanımı
  • [12:14] Örnek 3: Bir gecikmeden sonra ikinci bir buton basışını algılama
  • [17:20] map() fonksiyonuna giriş
  • [19:47] map() örneği için kod incelemesi
  • [20:41] map() fonksiyonunun canlı gösterimi

Görseller

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

 
 }
 

Kaynaklar ve referanslar

Dosyalar📁

Kullanım Kılavuzu