Ingin tambah tombol tapi kehabisan PORT? Pakai ADC Multibutton saja.


Sesuai tema kali ini yaitu seputar analog/ADC, nah kami akan kasih tips memaksimalkan port pada arduino atau mikrokontrol sejenisnya. ADC multibutton apa sih? Belum pernah dengar? Baiklah.

ADC multibutton adalah rangkaian banyak tombol yang disusun menjadi satu dan dapat dibaca tombol nomor berapa yang sedang ditekan dengan membaca nilai tegangan keluaran dari output rangkaian. Ada beberapa kelemahan dari rangkaian ini, yaitu tidak bisa difungsikan ditekan secara bersamaan dan terdapat batas maksimal jumlah tombol.

 

Seperti gambar di atas, terdapat rangkaian ADC multibutton dengan jumlah tombol 10 buah. Bagaimana mengetahui nilai keluarannya?

P0 = 0

contoh nilai P4:

P4=((10K x 4)/((10K x 4) + 100K)) x 1023

P4=(40K/140K) x 1023

P4=292,2 ~ 292(nilai ADC)

Langsung saja pembuktiannya. Skema nya seperti dibawah ini.

Berikut Sketchnya:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,10,11,12,13);
int nilai[10]={0,93,171,236,292,341,384,421,454,484};
int toleransi=10;
int out;

void setup() {
lcd.begin(16,2);
pinMode(A0,INPUT_PULLUP);
}

void loop() {
lcd.setCursor(0,0);
lcd.print(“ADC=”);
lcd.print(analogRead(A0));
lcd.print(” “);
lcd.setCursor(0,1);
switch(button()){

case 0 : lcd.print(“PB0”);break;
case 1 : lcd.print(“PB1”);break;
case 2 : lcd.print(“PB2”);break;
case 3 : lcd.print(“PB3”);break;
case 4 : lcd.print(“PB4”);break;
case 5 : lcd.print(“PB5”);break;
case 6 : lcd.print(“PB6”);break;
case 7 : lcd.print(“PB7”);break;
case 8 : lcd.print(“PB8”);break;
case 9 : lcd.print(“PB9”);break;
default: lcd.print(“—“);break;

}
}

char button(){
int adc=analogRead(A0);
for(out=0;out<11;out++){

if((toleransi>(adc-nilai[out])) && ((-toleransi)<(adc-nilai[out])))break;

}
return out;
}

Mudah kan? Selamat Bereksperimen ??


Like it? Share with your friends!

0