1. STRUKTUR DASAR, VARIABEL, TIPE DATA, DAN KOMENTAR
Struktur Pemrograman pada C++
Setiap program Arduino wajib memiliki dua fungsi utama:
-
void setup(): Digunakan untuk menjalankan perintah satu kali di awal program, biasanya untuk inisialisasi.
-
void loop(): Digunakan untuk menjalankan perintah secara berulang-ulang setelah fungsi setup() selesai.
Penjelasan Tipe Data:
-
Boolean
Menyimpan nilai logika, yaitu true (benar) atau false (salah). Dalam praktiknya, true setara dengan angka 1 dan false setara dengan angka 0. Tipe data ini hanya memerlukan 1 byte memori.
-
Byte
Menyimpan bilangan bulat positif dari 0 hingga 255. Efisien digunakan untuk menyimpan nilai kecil, dan hanya membutuhkan 1 byte memori.
-
Char
Digunakan untuk menyimpan satu karakter, misalnya 'A', 'B', atau '1'. Tipe data ini juga menggunakan 1 byte memori.
-
Int
Singkatan dari integer, digunakan untuk menyimpan bilangan bulat dalam rentang -32.768 hingga 32.767. Membutuhkan memori sebesar 2 byte.
-
Unsigned int
Sama seperti int, namun hanya menyimpan bilangan bulat positif, yaitu dari 0 hingga 65.535. Tetap menggunakan 2 byte memori.
-
Long
Menyimpan bilangan bulat yang lebih besar, mulai dari -2.147.483.648 hingga 2.147.483.647. Memerlukan 4 byte memori.
-
Unsigned long
Versi positif dari long, menyimpan angka dari 0 hingga 4.294.967.295. Membutuhkan 4 byte memori.
-
Float
Digunakan untuk menyimpan angka desimal seperti 3.14 atau 0.5. Tipe ini memerlukan 4 byte memori.
-
Double
Sama seperti float, tetapi dengan tingkat presisi dan rentang yang lebih besar. Menggunakan memori sebesar 8 byte.
2. SERIAL MONITOR, PINMODE, DIGITALWRITE
https://wokwi.com/projects/438596569947207681
-
Serial.begin(9600);
Digunakan untuk memulai komunikasi antara Arduino dan komputer. Nilai 9600 adalah kecepatan komunikasi (baud rate) standar.
-
pinMode(pin, OUTPUT);
Menentukan apakah suatu pin akan digunakan untuk output (keluaran) atau input (masukan). Misalnya, untuk mengendalikan LED, pin harus diset sebagai OUTPUT.
-
digitalWrite(pin, HIGH);
Digunakan untuk memberikan arus (menyalakan LED).
-
digitalWrite(pin, LOW);
Digunakan untuk memutus arus (mematikan LED).
-
delay(1000);
Menunda program selama 1000 milidetik atau 1 detik.
-
Serial.print() dan Serial.println()
Digunakan untuk menampilkan teks ke Serial Monitor. println() akan langsung berpindah ke baris baru setelah teks ditampilkan.
3. DIGITALREAD
https://wokwi.com/projects/438597168089696257
4. IF STATEMENT
https://wokwi.com/projects/438594110659356673
Kondisi IF:
Program akan memeriksa apakah kondisi di dalam tanda kurung () bernilai benar (true).
Contoh:
if (hasil_baca == 1)
Artinya, program akan mengecek apakah nilai hasil_baca sama dengan 1.
Jika benar (misalnya tombol sedang ditekan), maka program akan menjalankan perintah yang ada di dalam blok if.
Blok ELSE:
Jika kondisi di dalam if tidak benar (false), maka program akan melewati blok if dan langsung menjalankan perintah di blok else.
5. OPERATOR AND (&&) DAN OR (||)
https://wokwi.com/projects/438688933604781057
-
AND (&&)
Mengembalikan true hanya jika semua kondisi bernilai benar. Jika salah satu kondisi bernilai salah, maka hasilnya false.
-
OR (||)
Mengembalikan true jika salah satu kondisi bernilai benar. Hasil akan false hanya jika semua kondisi bernilai salah.
6. Switch Case
Fungsi:
switch digunakan untuk membuat percabangan yang memiliki banyak pilihan kondisi, mirip seperti menu pilihan. Ketika nilai variabel sesuai dengan salah satu case, maka blok kode di dalamnya akan dijalankan. Biasanya digunakan bersama break untuk menghentikan eksekusi agar tidak lanjut ke case berikutnya.
Contoh kode sederhana:
7. For Loop dan While Loop
https://wokwi.com/projects/438960522294011905
For Loop:
Fungsi: Mengulang sebuah perintah dalam jumlah tertentu.
Kapan digunakan: Saat kita sudah tahu berapa kali pengulangan yang harus dilakukan.
Cara kerja: Mengulang dari nilai awal hingga nilai akhir dengan langkah tertentu.
Code:
const int ledM = 11; // Merah
const int ledK = 12; // Kuning
const int ledH = 10; // Hijau
void setup() {
pinMode(ledM, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(ledH, OUTPUT);
}
void loop() {
// Lampu merah 5 kali
for (int i = 0; i < 5; i++) {
digitalWrite(ledM, HIGH);
delay(500);
digitalWrite(ledM, LOW);
delay(500);
}
// Lampu kuning 4 kali
for (int i = 0; i < 4; i++) {
digitalWrite(ledK, HIGH);
delay(500);
digitalWrite(ledK, LOW);
delay(500);
}
// Lampu hijau 3 kali
for (int i = 0; i < 3; i++) {
digitalWrite(ledH, HIGH);
delay(500);
digitalWrite(ledH, LOW);
delay(500);
}
}
While Loop:
Fungsi: Mengulang perintah selama masih benar.
Kapan digunakan: Saat kita tidak tahu berapa kali pengulangan, tapi ingin terus mengulang selama kondisi terpenuhi.
Cara kerja: Mengecek kondisi dulu, jika benar, maka perintah di dalam loop dijalankan
Code:
const int ledM = 11; // Merah
const int ledK = 12; // Kuning
const int ledH = 10; // Hijau
void setup() {
pinMode(ledM, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(ledH, OUTPUT);
}
void loop() {
int count;
// Lampu merah 5 kali
count = 0;
while (count < 5) {
digitalWrite(ledM, HIGH);
delay(500);
digitalWrite(ledM, LOW);
delay(500);
count++;
}
// Lampu kuning 4 kali
count = 0;
while (count < 4) {
digitalWrite(ledK, HIGH);
delay(500);
digitalWrite(ledK, LOW);
delay(500);
count++;
}
// Lampu hijau 3 kali
count = 0;
while (count < 3) {
digitalWrite(ledH, HIGH);
delay(500);
digitalWrite(ledH, LOW);
delay(500);
count++;
}
}
8. FUNGSI
https://wokwi.com/projects/438960472179406849
manfaat dari fungsi:
Membuat kode lebih rapi dan terstruktur
Fungsi
memisahkan bagian-bagian kode sesuai tugasnya.
Menghindari pengulangan code
9. Library dan Servo
https://wokwi.com/projects/438960445979677697
library:
adalah kumpulan kode (fungsi, class, dan definisi) yang sudah dibuat sebelumnya untuk mempermudah kita membuat program. Dengan library, kita tidak perlu menulis ulang logika dasar — cukup memanggil fungsi yang disediakan.
Gambaran Umum:
Isi library: kumpulan perintah/fungsi siap pakai.
Tujuan: mempermudah dan mempercepat pembuatan program.
Cara pakai: biasanya dengan perintah #include <NamaLibrary.h> di awal program.
Sumber: bisa bawaan bahasa pemrograman atau diunduh dari luar.
Code:
#include <Servo.h>
Servo servo;
const int pbKiri = 3;
const int pbKanan = 2;
boolean hasilKiri = 0;
boolean hasilKanan = 0;
int sudut = 0;
void setup() {
Serial.begin(9600);
servo.attach(5);
pinMode(pbKiri, INPUT);
pinMode(pbKanan, INPUT);
}
void loop() {
hasilKiri = digitalRead(pbKiri);
hasilKanan = digitalRead(pbKanan);
if (hasilKiri == 1) {
sudut++;
if (sudut >= 180) {
sudut = 180; // ← titik koma diperbaiki
}
servo.write(sudut);
}
if (hasilKanan == 1) {
sudut--;
if (sudut <= 0) { // ← dibatasi ke 0 derajat
sudut = 0; // ← titik koma diperbaiki
}
servo.write(sudut);
}
delay(100);
Serial.println(sudut);
}
10.Potensio Meter
https://wokwi.com/projects/438960605115815937
Fungsi map() menggunakan matematika integer sehingga tidak akan menghasilkan pecahan, meskipun matematika mungkin menunjukkan bahwa ia seharusnya melakukannya. Sisa pecahan dipotong, dan tidak dibulatkan atau dirata-ratakan.
11.LCD Liquid Crystal
https://wokwi.com/projects/439141422503946241
Mengupload data dari soucre code ke lcd dan potensiometer sebagai input untuk mengatur kecerahan laayar pada lcd
12. Array
https://wokwi.com/projects/438730161464096769
Array adalah kumpulan variabel yang memiliki tipe data yang sama dan disimpan dalam satu nama.
Dengan array, kamu bisa menyimpan banyak nilai tanpa perlu membuat banyak variabel satu per satu.
13. LDR
https://wokwi.com/projects/438759724743179265
Fungsi:
LDR adalah sensor yang resistansinya berubah seiring dengan perubahan intensitas cahaya yang diterimanya. Semakin terang cahaya, semakin rendah resistansinya.
Pemrograman Dasar: Mempelajari cara menulis kode untuk membaca nilai dari sensor LDR menggunakan Arduino.
Pengolahan Sinyal Analog: Menggunakan fungsi analogRead() untuk membaca nilai dari pin analog dan mengolahnya.
Kontrol Perangkat: Menggunakan pembacaan LDR untuk mengontrol perangkat lain seperti LED atau relay.
Code:
const int ldr = A0; // Sensor LDR terhubung ke pin analog A0
const int led = 12; // LED terhubung ke pin digital 12
int hasilBaca; // Variabel untuk menyimpan nilai pembacaan sensor
void setup() {
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
pinMode(ldr, INPUT); // Mengatur pin A0 sebagai input (optional, karena analogRead sudah default input)
pinMode(led, OUTPUT);// Mengatur pin 12 sebagai output untuk LED
}
void loop() {
hasilBaca = analogRead(ldr); // Membaca nilai analog dari LDR (0-1023)
Serial.println(hasilBaca); // Mengirim nilai pembacaan ke serial monitor untuk dilihat
delay(100); // Menunggu 100 ms sebelum pembacaan berikutnya
if (hasilBaca <= 100) { // Jika nilai LDR kecil (cahaya redup)
digitalWrite(led, HIGH); // Nyalakan LED
} else {
digitalWrite(led, LOW); // Matikan LED jika cahaya cukup terang
}
}
14. Keypad
https://wokwi.com/projects/438761427756504065
Cara Kerja Pembacaan Keypad:
Arduino mengatur setiap baris secara bergantian sebagai LOW sementara baris lain tetap HIGH. Kemudian memeriksa kolom mana yang juga LOW, yang berarti tombol di posisi baris-kolom itu ditekan. Library Keypad memudahkan proses ini dengan fungsi getKey() yang mengembalikan karakter tombol yang ditekan.
Code:
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
const int led=10;
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop(){
char customKey = customKeypad.getKey();
switch(customKey){
case '1':
kedip(1);
break;
case '2':
kedip(2);
break;
case '3':
kedip(3);
break;
case '4':
kedip(4);
break;
case '5':
kedip(5);
break;
case '6':
kedip(7);
break;
case '8':
kedip(8);
break;
case '9':
kedip(9);
break; // Jangan lupa break di sini juga
default:
//kedip(5);
break;
}
}
void kedip(int jumlah){
for(int i=1; i<=jumlah; i++){
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
}
}
15. Copy Right
Vidio 15 Terkena Copy Right Sehingga di Upload di Vidio 16
16. Menggunakan Serial Monitor
https://wokwi.com/projects/438766472815512577
Interval:
Interval adalah jangka waktu yang kita tentukan untuk menjalankan suatu aksi secara berkala.
Misalnya, interval 1000 ms berarti aksi tersebut dijalankan setiap 1 detik.
millis:
Fungsi bawaan Arduino yang mengembalikan waktu dalam satuan milidetik (ms) sejak Arduino mulai menyala.
Cara kerja gabungan millis() dan interval:
Simpan waktu aksi terakhir dilakukan ke dalam variabel, misalnya waktuSebelum.
Bandingkan waktu saat ini (millis()) dengan waktu sebelumnya (waktuSebelum).
Jika selisih waktu lebih besar atau sama dengan interval, jalankan aksi yang diinginkan.
Setelah itu, perbarui nilai waktuSebelum dengan waktu saat ini untuk memulai penghitungan interval berikutnya.
Code:
unsigned long waktuSebelum1 = 0;
unsigned long waktuSebelum2 = 0;
bool statusLed1 = LOW;
bool statusLed2 = LOW;
const int led1 = 12;
const int led2 = 11;
unsigned long intervalSerial = 1000;
unsigned long waktuSebelumSerial = 0;
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
unsigned long waktuSekarang = millis();
// Kontrol LED1 (interval 1000 ms)
if (waktuSekarang - waktuSebelum1 >= 1000) {
statusLed1 = !statusLed1;
digitalWrite(led1, statusLed1);
waktuSebelum1 = waktuSekarang;
}
// Kontrol LED2 (interval 1000 ms)
if (waktuSekarang - waktuSebelum2 >=1000) {
statusLed2 = !statusLed2;
digitalWrite(led2, statusLed2);
waktuSebelum2 = waktuSekarang;
}
// Output serial setiap 1000 ms
if (waktuSekarang - waktuSebelumSerial >= intervalSerial) {
Serial.print("LED1 status: ");
Serial.println(statusLed1 ? "ON" : "OFF");
Serial.print("LED2 status: ");
Serial.println(statusLed2 ? "ON" : "OFF");
Serial.print("Millis: ");
Serial.println(waktuSekarang);
Serial.println();
waktuSebelumSerial = waktuSekarang;
}
}
17. Mengendalikan Arus AC dengan Arus DC Menggunakan Relay
Wiring:
Saran:
-
Gunakan pin tengah dan kanan pada relay karena itu merupakan koneksi NO (Normally Open), yaitu kondisi awalnya terbuka dan hanya tertutup saat relay aktif.
2. Gunakan perintah LOW untuk menyalakan lampu
(tidak ada bukti praktek karena tidak ada listrik AC😅)
18. Mengendalikan Arus AC dengan Arus DC Menggunakan Relay dan Sensor Suara
Cara kerja:
ketika sensor suara mendeteksi suara, maka lampu akan menyala
Wiring:
code:
const int suara=A0;
int bacaSuara
const int relay=5;
bool on-LOW;
bool off-HIGH;
int batas=200
void setup() {
Serial.begin (9600);
pinMode (suara, INPUT);
pinMode (relay, OUTPUT);
}
void loop() {
bacaSuara=analogRead(suara);
Serial.println(bacaSuara);
if (bacaSuara>=batas) {
digitalWrite(relay, on);
delay(1000);
}else{
digitalWrite(relay, off);
}
}
(tidak ada bukti praktek karena tidak ada listrik AC😅)
19. EEPROM
20. Sensor Ultrasonik
1. Fungsi & Cara Kerja:
Sensor ultrasonik berfungsi untuk mengukur jarak antara sensor dengan objek yang ada di depannya. Cara kerjanya adalah dengan mengirimkan gelombang ultrasonik, lalu mendeteksi pantulan gelombang tersebut dari objek.
2. Wiring & Code:
https://wokwi.com/projects/438780521352727553 #include<NewPing.h>
NewPing sensor (10,11,30);
const int Led = 9;
int jarak;
void setup() {
Serial.begin(9600);
pinMode(Led, OUTPUT);
delay(50);
}
void loop() {
jarak-sensor.ping_cm();
if (jarak<=5) {
digitalWrite(Led, HIGH);
delay(100);
digitalWrite(Led, LOW);
delay(100);
}else{
digitalWrite(Led, HIGH);
delay(500);
digitalWrite(Led, LOW);
delay(500);
}
Serial.println(jarak);
delay(1000);
}
21. Security System Berbasis EEPROM
Di vidio ini mengajarkan kita cara membuat sistem keamanan berbasis EEPROM.
(tidak ada bukti praktek karena harus nyambung listrik AC 😅)
22. RTC
1. Fungsi:
Fungsi RTC adalah untuk menjaga waktu tetap berjalan dengan stabil dan akurat, meskipun sistem utama (seperti mikrokontroler atau komputer) sedang mati atau di-restart.
2. Code
Test code:
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
const int relay=A3;
bool on LOW;
bool off-HIGH;
String hari;
String waktu;
String tanggal;
void setup() {
rtc.begin();
Serial.begin(9600);
pinMode (relay, OUTPUT);
digitalWrite(relay, off);
rtc.setDOW();// settingan hari per minggu
rtc.setTIME();//settingan waktu
rtc.set.Date();// settingan tanggal
}
void loop() {
hari-rtc.getDOWStr();
waktu-rtc.getTimeStr();
tanggal=rtc.getDateStr();
Serial.print(hari);
Serial.print(", ");
Serial.print(waktu);
Serial.print(", ");
Serial.println(tanggal);
delay(1000);
}
(sebelum masuk ke void loop upload terlebih dahulu, setelah upload ubah code di bawah ini menjadi komen dengan menggunakan perintah (//) supaya setting waktunya tidak mengulang terus waktu perangkat menyala karena perintahnya sudah menjadi mode auto).
rtc.setDOW();// settingan hari per minggu
rtc.setTIME();//settingan waktu
rtc.set.Date();// settingan tanggal
Final Code:
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
const int relay=A3;
bool on LOW;
bool off-HIGH;
String hari;
String waktu;
String tanggal;
void setup() {
rtc.begin();
Serial.begin(9600);
pinMode (relay, OUTPUT);
digitalWrite(relay, off);
//rtc.setDOW();// settingan hari per minggu
//rtc.setTIME();//settingan waktu
//rtc.set.Date();// settingan tanggal
}
void loop() {
hari-rtc.getDOWStr();
waktu-rtc.getTimeStr();
tanggal-rtc.getDateStr();
Serial.println(waktu);
if (waktu=="14:25:00") {
digitalWrite(relay,on);
delay (2000);
digitalWrite(relay, off);
}
delay(1000);
}
(tidak ada bukti praktek karena tidak ada listrik AC😅)
23. Interrupt
https://wokwi.com/projects/438773409183971329
Pengertian:
Interrupt adalah mekanisme pada sistem mikroprosesor atau mikrokontroler yang memungkinkan kita untuk menjalankan fungsi tanpa memperdulikan jika ada fungsi lain yang sedang berjalan
Code:
#include<TimerOne.h>
const int merah=12, hijau=11, pb=2;
void setup() {
pinMode(pb,INPUT);
pinMode(merah,OUTPUT);
pinMode(hijau,OUTPUT);
Timer1.initialize(10000);
Timer1.attachInterrupt(blinkMerah);
}
void loop() {
for(int i=1; i<=5; i++){
digitalWrite(hijau,HIGH);
delay(1000);
digitalWrite(hijau,LOW);
delay(1000);
}
}
void blinkMerah(){
if(digitalRead(pb)==HIGH){
digitalWrite(merah,HIGH);
}else{
digitalWrite(merah,LOW);
}
}
24. PWM
https://wokwi.com/projects/438960605115815937Pengertian:
PWM (Pulse Width Modulation) memungkinkan kita untuk menggunakan tegangan 0-5 V seperti mengontrol redup cerahnya lampu sesuai keinginan kita.
25. Jam Digital
https://wokwi.com/projects/438972440350246913
Di vidio tersebut mengajari kita cara membuat Jam Digital menggunaka Arduino Nano yang bisa menunjukan waktu, tanggal, dan juga hari secara real time.
Code
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
// Inisialisasi LCD (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// Inisialisasi RTC DS1307
RTC_DS1307 rtc;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
if (!rtc.begin()) {
lcd.print("RTC Tdk Ditemukan");
while (1); // Berhenti di sini kalau tidak terdeteksi
}
if (!rtc.isrunning()) {
lcd.clear();
lcd.print("Set Waktu RTC...");
// Set waktu RTC ke waktu saat upload
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now(); // Baca waktu sekarang
// Format hari
String hari[] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
String namaHari = hari[now.dayOfTheWeek()];
// Tampilkan di LCD
lcd.setCursor(0, 0);
lcd.print(namaHari);
lcd.setCursor(7, 0);
lcd.print(now.day());
lcd.print('/');
lcd.print(now.month());
lcd.print('/');
lcd.print(now.year());
lcd.setCursor(4, 1);
if (now.hour() < 10) lcd.print('0');
lcd.print(now.hour());
lcd.print(':');
if (now.minute() < 10) lcd.print('0');
lcd.print(now.minute());
lcd.print(':');
if (now.second() < 10) lcd.print('0');
lcd.print(now.second());
delay(1000); // Update setiap 1 detik
}
26. Runing Text
https://wokwi.com/projects/439336074512580609
Runing Text adalah system yang biasa kita lihat di pasar elektronik, yang dimana text yang ditampilkan di layar akan bergeser sesuai arah yang ditentukan dan akan kembali lagi seperti semula.
27. Cara menggunakan LCD I2C
https://wokwi.com/projects/439336074512580609
Di vidio ini cuma ngejelasin cara menggunakan LCD I2C sebagai output buat nilai potensiometer.
https://wokwi.com/projects/439678394489479169
Pengertian:
DHT 11 adalah sensor yang berfungsi sebagai pengukur suhu dan bisa mempermudah kita untuk mengetahui suhu dalam suatu ruangan.
Code:
#include <LiquidCrystal.h>
#include "DHT.h"
// Konfigurasi pin DHT22 (Arduino Nano)
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi LCD 16x2 untuk Arduino Nano
// RS = 10, E = 9, D4 = 5, D5 = 4, D6 = 3, D7 = 2
LiquidCrystal lcd(10, 9, 5, 4, 3, 2);
// Variabel pembacaan real-time
unsigned long lastReadTime = 0;
const unsigned long readInterval = 2000; // 2 detik sesuai spesifikasi DHT22
float suhu = 0;
float kelembaban = 0;
void setup() {
lcd.begin(16, 2);
dht.begin();
lcd.print("DHT22 Sensor");
delay(2000);
lcd.clear();
Serial.begin(9600); // Biar bisa pantau juga di Serial Monitor
}
void loop() {
unsigned long currentMillis = millis();
// Baca data DHT22 setiap 2 detik
if (currentMillis - lastReadTime >= readInterval) {
lastReadTime = currentMillis;
float newKelembaban = dht.readHumidity();
float newSuhu = dht.readTemperature();
if (!isnan(newKelembaban) && !isnan(newSuhu)) {
kelembaban = newKelembaban;
suhu = newSuhu;
}
// Kirim ke Serial Monitor
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print(" C | Kelembaban: ");
Serial.print(kelembaban);
Serial.println(" %");
}
// Tampilkan di LCD setiap loop
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu, 1);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(kelembaban, 1);
lcd.print("% ");
}
29. IR Remote
https://wokwi.com/projects/439680049415421953
Pengertian:
Infra Red Remote (IR Remote) adalah alat pengendali jarak jauh yang bekerja menggunakan cahaya inframerah, yaitu cahaya tak terlihat oleh mata manusia tapi bisa ditangkap sensor. Saat tombol ditekan, LED inframerah pada remote memancarkan sinyal berupa digital code. Code ini diterima sensor IR pada perangkat, lalu diterjemahkan menjadi perintah, misalnya menyalakan TV, mengatur volume, atau mengganti channel.
Code:
#include <IRremote.h>
const int pinIR = 11; // Pin data IR receiver
const int led = 6; // Pin LED
void setup() {
Serial.begin(9600);
IrReceiver.begin(pinIR, ENABLE_LED_FEEDBACK); // Mulai IR receiver
pinMode(led, OUTPUT);
}
void loop() {
if (IrReceiver.decode()) {
// Tampilkan kode tombol di Serial Monitor
Serial.print("Kode IR: 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
// Nyalakan LED setiap tombol ditekan
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
IrReceiver.resume(); // Siap baca data berikutnya
}
}
Komentar
Posting Komentar