Pelajaran 14/31-5: Contoh pemetaan() kode Arduino 2
Tutorial ini menunjukkan cara menggunakan fungsi map() pada Arduino untuk mengontrol kecerahan LED menggunakan nilai persentase (0–100%) alih-alih rentang mentah 0–255 yang diperlukan oleh analogWrite(). Ini adalah teknik mendasar yang menyederhanakan kode Anda dan membuatnya jauh lebih intuitif, karena Anda dapat berpikir dalam persentase daripada nilai byte yang sembarangan.
Keterampilan ini penting untuk proyek apa pun di mana Anda perlu menskalakan pembacaan sensor atau sinyal kontrol. Misalnya, Anda dapat menggunakannya untuk:
- Mengontrol kecerahan LED atau kecepatan motor berdasarkan pembacaan potensiometer.
- Mengonversi keluaran sensor suhu (misalnya, 0–1023) ke rentang Celsius atau Fahrenheit.
- Memetakan input analog joystick untuk mengontrol posisi motor servo.
- Membuat antarmuka pengguna sederhana di mana nilai persentase digunakan untuk mengatur tingkat daya perangkat.
Di akhir pelajaran ini, Anda akan dapat menulis kode yang lebih bersih, lebih mudah dipelihara, dan lebih mudah dibaca serta disesuaikan.
Perangkat Keras/Komponen
Proyek ini menggunakan set komponen minimal, menjadikannya sempurna untuk pemula. Anda akan membutuhkan:
- Papan Arduino (misalnya, Uno).
- Sebuah LED.
- Resistor 220-ohm.
- Kabel jumper.
- Breadboard (opsional tetapi disarankan).
Panduan Pengkabelan
Pengkabelan untuk proyek ini sangat sederhana, seperti yang ditunjukkan dalam video (di video pada 20:47). LED terhubung ke pin 3 Arduino melalui resistor pembatas arus 220-ohm.
Hubungkan anoda (kaki lebih panjang) LED ke pin 3 melalui resistor. Hubungkan katoda (kaki lebih pendek) LED ke pin ground (GND) pada Arduino.
Penjelasan Kode
Contoh ini berfokus pada fungsi yang ditentukan pengguna yang menyederhanakan kontrol kecerahan LED. Kode dibangun di sekitar fungsi khusus yang disebut pwmValue(), yang merupakan kunci untuk membuat kode intuitif.
Mari kita uraikan bagian-bagian kode yang dapat dikonfigurasi:
int LEDpin = 3; //mendefinisikan pin untuk LED
Baris ini mendefinisikan pin Arduino yang terhubung dengan LED. Anda dapat mengubah angka 3 ke pin lain yang mendukung PWM di papan Arduino Anda.
Inti dari proyek ini adalah fungsi khusus pwmValue(). Fungsi ini mengambil nilai persentase sebagai input dan mengonversinya ke rentang 0–255 yang digunakan oleh analogWrite(). Di sinilah fungsi map() melakukan keajaibannya.
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
Untuk menggunakan fungsi ini, Anda cukup memanggilnya dengan persentase kecerahan yang diinginkan. Fungsi akan mengembalikan nilai yang benar untuk analogWrite(). Misalnya, pwmValue(60) akan mengembalikan 153, yang sesuai dengan 60% dari 255. Fungsi ini juga menyertakan pemeriksaan keamanan untuk memastikan input persentase berada antara 0 dan 100, mengembalikan 0 jika berada di luar rentang ini.
Dalam fungsi setup(), Anda dapat melihat bagaimana ini digunakan:
int b=5;//60% kecerahan
Serial.println( pwmValue(b) );//cetak di serial monitor
analogWrite(LEDpin, pwmValue(b));// nyalakan LED dengan kecerahan 60%
Di sini, variabel b diatur ke persentase kecerahan yang Anda inginkan. Fungsi pwmValue(b) kemudian digunakan baik untuk mencetak nilai yang dipetakan ke Serial Monitor maupun untuk mengatur kecerahan LED. Untuk mengubah kecerahan LED, Anda hanya perlu memodifikasi nilai b. Fungsi map() menangani semua perhitungan yang diperlukan untuk Anda.
Proyek Langsung/Demonstrasi
Dalam video, presenter mendemonstrasikan proyek dengan mengubah nilai variabel b dan mengunggah kode ke Arduino. Ketika b diatur ke 60, kode memetakannya ke 153 dan LED menyala pada kecerahan 60%. Mengubah b ke 90 memetakan ke 229, membuat LED terlihat lebih terang. Mengaturnya ke 100 memetakan ke 255, yang merupakan kecerahan maksimum. Demonstrasi dengan jelas menunjukkan bagaimana fungsi map() memungkinkan Anda mengontrol LED menggunakan nilai persentase yang intuitif, sementara Serial Monitor mengonfirmasi nilai tepat 0–255 yang dikirim ke pin (di video pada 21:29).
Proyek terkait dari video ini
- Pelajaran 14/31-1: Arduino Millis (tanpa delay) dan fungsi map | SunFounder Robojax
- Pelajaran 14/31-2: Contoh pengkodean Arduino millis() 2 dengan event
- Pelajaran 14/31-3: Contoh pengkodean Arduino millis() 3 dengan tombol tekan
- Pelajaran 14/31-4: Contoh pengkodean Arduino map() 1
Bab
- [00:00] Pengenalan fungsi Millis dan map
- [01:19] Apa itu Millis dan mengapa menggunakannya
- [05:46] Menggunakan Millis dengan event untuk mengambil tindakan
- [08:35] Contoh Millis 2 dengan tombol tekan
- [12:14] Contoh Millis 3 memeriksa dua kali penekanan tombol
- [17:20] Pengenalan fungsi map()
- [19:47] Contoh kode untuk memetakan persentase ke kecerahan LED
- [20:47] Demonstrasi langsung fungsi map()
- [22:41] Membuat fungsi khusus untuk menangani pemetaan
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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);//initialzie serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
}
void loop() {
}
/*
* pwmValue(int percent)
* @param precent is value between 0 to 100
* @return it returns the mapped value from 0 to 255
* written by Ahmad Shamshiri on Dec 9, 2022
*
*/
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
} //pwmValue end
Hal-hal yang mungkin Anda butuhkan
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Lainnya
Sumber daya & referensi
-
EksternalPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Berkas📁
Panduan Pengguna
-
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