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
- Ders 14/31-1: Arduino Millis (gecikmesiz) ve map fonksiyonları | SunFounder Robojax
- Ders 14/31-2: Arduino kodlama millis() örnek 2 olaylı
- Ders 14/31-3: Arduino kodlama millis() örnek 3 butonlu
- Ders 14/31-5: Arduino kodlama map() örnek 2
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
/*
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() {
}
İhtiyacın olabileceğini düşünüyor
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Kaynaklar ve referanslar
-
BelgelendirmeDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
DışPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Dosyalar📁
Kullanım Kılavuzu
-
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