Pada tutorial arduino kali ini kita akan masuk pada pembelajaran mengenai cara
membaca data analog tegangan pada pin input analog arduino. Adapun arduino
yang digunakan pada percobaan kali ini menggunakan Arduino Uno R3 dimana
mikrokontroler ini memiliki 6 buah pin Analog Input dengan nama pin A0 - A5.
Pada pin analog A0 - A5 dapat diberikan tegangan antara 0 s.d 5 vdc. Pin ini
merupakan pin Analog to Digital Converter atau ADC pada ATmega, tegangan 0 s.d
5 vdc akan diubah menjadi data integer 0 s.d 1023 atau 10 bit.
Langsung saja kita mulai experimen penggunaan Analog Input pada arduino.
Adapun komponen yang diperlukan pada experimen ini adalah sebagai berikut.
- 1x Arduino Uno R3 Board
- 1x Breadboard
- 1x Potentiometer
- 1x LED or built in LED pin 13
- Jumper Wires
Wiring Diagram
Satu buah LED terhubung dengan pin 13 arduino. note: jika tanpa menggunakan
led tambahan juga sudah bisa melakukan percobaan ini dikarenakan pada pin 13
sudah ada built in led yang akan menyala sesuai dengan kondisi pin tersebut.
Sebuah potensiometer (variable resistor) yang terhubung pada pin analog A0.
Dimana pada saat potensio diputar maka tegangan yang masuk pada pin analog
arduino akan berubah-ubah. note: nilai resistansi potensio bebas, semakin
besar nilai resistansi maka range perubahan nilai akan lebih lebar.
Sketch Arduino
int potentioPin = A0; // memilih pin analog yang digunakan (A0 - A5) int ledPin = 13; // memilih pin untuk output LED int analogValue = 0; // variabel untuk pembacaan data analog void setup() { Serial.begin(9600); // inisisalisai serial monitor pinMode(ledPin, OUTPUT); // inisialisali pin sebagai output (LED) } void loop() { analogValue = analogRead(potentioPin); // membaca data analog pada dan di masukkan pada variabel "analog value" // menampilkan data analog pada serial monitor Serial.print("Analog value : "); Serial.println(analogValue); digitalWrite(ledPin, HIGH); // menghidupkan LED delay(analogValue); // waktu tunda (sesuai dengan nilai analog) digitalWrite(ledPin, LOW); // mematiakan LED delay(analogValue); // waktu tunda (sesuai dengan nilai analog) }
Silahkan buka Serial Monitor untuk melihat nilai analog dari potensiometer.
Sketch explanation
- Pada baris 1 s.d 4 merupakan inisialisasi variabel global.
- Pada baris 11 terdapat sintaks analogRead(potentioPin) yang merupakan perintah untuk merubah nilai tegangan 0 s.d 5 volt ke nilai analog 0 s.d 1023, artinya ketika potensio diputar hingga resitansi tertinggi maka nilai tegangan akan menyentuh 0 volt dan nilai analog akan mendakati nilai terendah, sedangkan ketika potensio diputar pada resistansi rendah maka nilai tegangan mendekati 5 volt dan nilai analog mendekati nilai tertinggi nya.
- Pada baris 16 s.d 19 merupakan perintah untuk menghidupkan led dengan kondisi blink yang menyesuaikan dengan nilai analog yang terbaca, jadi ketika nilai analog rendah maka kecepatan kedip led akan cepat dan kebalikannya ketika nilai analog besar maka led akan berkedip lebih lambat itu dipengaruhi oleh kondisi delay yang diberikan mengikuti nilai analog.
Jika ada ingin berdiskusi silahkan tinggalkan di kolom komentar, thank you and happy
for your experiment..
#define ledHijau 3
ReplyDelete#define potPin A0
#define pushButton1 7
#define pushButton2 8
int hijau;
void setup() {
// put your setup code here, to run once:
pinMode (ledHijau, OUTPUT);
pinMode (potPin, INPUT);
pinMode (pushButton1, INPUT);
pinMode (pushButton2, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(ledHijau, LOW);
int nilai = analogRead(potPin);
int pin1 = digitalRead(pushButton1);
int pin2 = digitalRead(pushButton2);
hijau = map(nilai, 0, 1023, 0, 255);
if (pin1 == 1) {
analogWrite(ledHijau, hijau);
}
if (pin2 == HIGH)
{
if (nilai < 512)
{
digitalWrite(ledHijau, LOW);
}
if (nilai >= 512)
{
digitalWrite(ledHijau, HIGH);
}
}
Serial.print(" Value = ");
Serial.print(nilai);
Serial.print(" ");
Serial.print("Become = ");
Serial.println(hijau);
delay(100);
}