Kita lanjutkan pembelajaran kali ini bersama dengan kuliah mikrokontroler mahasiswa teknik listrik unesa surabaya, dengan topik analog input. Sebagai mana kita bahas sebelumnya, sketch arduino sudah memiliki contoh-contoh program yang bisa dilihat pada sketch langsung atau pada website arduino.cc . Saya sekarang akan mengambil sebuah potensiometer yang bisa digunakan pada pengatur volume audio dan saya buat sebagai rangkaian pembagi tegangan 5 volt.
A0 sampai A5 merupakan analog input dari arduino dimana memiliki range tegangan yang di ijinkan 0-5 volt. Resolusi atau kerapatan data bit nya adalah 10 bit, sehingga 5 volt diwakili oleh binari 0b1111111111 atau desimal 1023. Dari rumus matematika sederhana dengan membagi 5 volt dengan 1023, maka kita bisa membuat voltmeter sederhana dan bisa membaca tegangan yang diberikan oleh pin tengah dari potensiometer 10 k ohm yang saya gunakan. Silahkan coba script berikut ini :
#define ADC_PIN 1 //pin ADC
float tegangan ; //variabel tegangan desimal
void setup() {
//pakai monitor serial
Serial.begin(9600);
}
void loop() {
//resolusi per bit = 5v/1023 = 0.0049 volt
//baca ADC
tegangan = analogRead(ADC_PIN) * 0.0049;
//kirimkan output pembacaan ke serial
Serial.print( "Tegangan = ");
Serial.print( String(tegangan,2) );
Serial.println (" volt");
delay(100);
}
Saya telah membeli 30 buah led ws2812b seharga 900 rupiah sebiji dan saya rangkai dengan arduino pro mini milik saya. Bisa menggunakan arduino jenis lain maupun esp8266 yang dimiliki, dan usahakan jika lednya banyak maka gunakanlah power suply 5 volt terpisah seperti pada gambar dibawah ini :
*) gunakan resistor 330 ohm sebagai pengaman agar led awal tidak cepat rusak
Koding yang saya gunakan adalah sebagai berikut :
#include <Adafruit_NeoPixel.h> //library
#define LED_PIN 4 //sesuaikan pin data
#define LED_COUNT 30 //sesuaikan jumlah led
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
int posisi_led; //variabel posisi led
void setup() {
//inisialisasi led strip
strip.begin();
strip.setBrightness(30);
}
void loop() {
// baca adc port A1 , sesuaikan
//34 ==> pembulatan 1023/30LED
posisi_led = analogRead(1)/34;
strip.clear();
strip.setPixelColor(posisi_led, 255, 255, 255);
strip.show();
delay(100);
}
Hasil dari coding diatas dapat dilihat pada animasi paling atas. Selamat Mencoba !!