Selamat
pagi menjelang subuh kawan pendekar solder, kali ini saya mau berbagi
pengalaman bagaimana cara mengakali 1 pin input tetapi bisa digunakan untuk
membaca tombol lebih dari satu. Emang bisa ya? Awalnya saya juga bingung, waktu
itu mau membuat project miniature lift
menggunakan arduino uno, karena banyaknya io yang digunakan sehingga pin tidak
mencukupi. Untuk dapat menyelesaikan masalah seperti ini sebenarnya simple jika
kita memiliki modal yang cukup, misalnya:
1. Beli modul arduino yang memiliki jumlah pin I/O lebih banyak misalnya arduino Mega.
1. Beli modul arduino yang memiliki jumlah pin I/O lebih banyak misalnya arduino Mega.
2. Dengan
Menggunakan 2 buah arduino UNO yang digabung (master dan slave).
Tetapi
jika menggunakan kedua cara diatas akan mengeluarkan dana lagi, dan rancangan
tentunya bisa lebih mahal kawan. Kemudian saya berfikir keras bagaimana cara
menyelesaikan masalah ini tentunya dengan tidak mengeluarkan uang lagi untuk
beli modul arduino. Setelah lama berfikir akhirnya saya menemukan sebuah cara
untuk memanfaatkan 1 pin yang bisa
digunakan untuk beberapa tombol yaitu dengan cara mengunakan fasilitas input
ADC.
Memang
cara ini memiliki kelemahan diantaranya:
- Tombol tidak bisa dibaca berbarengan
(misal 2 tombol ditekan sekaligus)
- Pengunaan pin hanya bisa digunakan pada
pin yang support ADC (analog Digital Converter) yaitu hanya bisa digunakan pada
pin (A0 - A5) tapi saya kira lumayan cukup juga sih sebenarnya.
Untuk
lebih jelasnya kawan, kita langsung bahas saja, tahapan – tahapanya sebagai
berikut:
1. Buat Skematik Khusus Untuk ini
Untuk
menggunakan cara ini kita harus membuat rangkaian khusus agar support fungsi
ini, dalam contoh ini saya menggunakan 5 tombol input, gambar skematiknya
seperti berikut:
2. Baca Data Tombol
Untuk
membedakan tombol 1-5 saya membaca nilai pin Input ADCnya, agar lebih mudah
melihanya kita bisa menampilkan nilainya ke serial, ketika tombol ditekan nilai
data dari tombol ditampilkan dalam serial, kemudian catat nilai tersebut.
(untuk program tes + skematik bisa didownload dibawah).
Gambar :
Nilai Serial Ketika Tombol Dilepas
Gambar :
Nilai Serial Ketika Tombol 1 Ditekan
Gambar :
Nilai Serial Ketika Tombol 2 Ditekan
Gambar :
Nilai Serial Ketika Tombol 3 Ditekan
Gambar :
Nilai Serial Ketika Tombol 4 Ditekan
Gambar :
Nilai Serial Ketika Tombol 5 Ditekan
Dari
hasil percobaan pengambilan data serial pada pada gambar diatas maka didapatkan
nilai dari setiap tombol adalah sebagai berikut.
3. Mengunakan
fungsi tombol
Untuk menggunakan fungsi tombol kita memanfaatkan nilai variable diatas sebagai pembeda dari setiap tombol, berikut ini contoh penggunaanya, ketika tombol ditekan maka data status tombol akan dikirim ke serial.
Untuk Programnya
Sebagai berikut:
// visit ---> www.leselektronika.blogspot.com
void setup() {
//
initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(A5,INPUT_PULLUP);
Serial.println("=======================================");
Serial.println("
TES TOMBOL ADC");
Serial.println(" LES
ELEKTRONIKA");
Serial.println(" OLEH
: ARIS MUNANDAR");
Serial.println("=======================================");
delay(1000);
}
// the loop routine runs over and over again
forever:
void loop() {
// read the
input on analog pin 0
int
sensorValue = analogRead(A5);
if
(sensorValue==1019){Serial.println("TEKAN TOMBOL");}
if
(sensorValue==39){Serial.println("TOMBOL 1 DITEKAN");}
if
(sensorValue==30){Serial.println("TOMBOL 2 DITEKAN");}
if
(sensorValue==20){Serial.println("TOMBOL 3 DITEKAN");}
if
(sensorValue==10){Serial.println("TOMBOL 4 DITEKAN");}
if
(sensorValue==0){Serial.println("TOMBOL 5 DITEKAN");}
delay(50); // delay in
between reads for stability
}
Hasil
Pengetesannya sebagai Berikut: (saat tombol 3 ditekan)
Saya
kira segitu dulu dari saya kawan, kalau ada yang kurang jelas silahkan jangan
sungkan untuk ditanyakan melalui kolom komentar, semoga ini semua bisa bermanfaat
untuk kita semua amiin. Salam pendekar solder..
hlo mas aris salam kenal, klo menggunakan I2C bagaimana ya mas
BalasHapussalam kenal juga kang iman, untuk penggunaan I2C / TWI mohon maaf diblog ini belum sempat saya bahas, insyallah dilain kesempatan saya bahas. secara garis besar komunkasi i2c adalah menggunakan dua buah sambungan, ada yang sebagai pembawa data (SDA) dan sebagai clock (SCL).jika kang iman menggunakan arudino uno pin SDA dan SCL ini berada pada pin A4 dan A5 pemasangannya jangan sampai terbalik karena tidak akan terjadi komunikasi.. untuk lebih jelasnya bisa dipelajari dari web arduinonya disini.
Hapushttp://www.arduino.cc/en/Reference/Wire
semoga bisa terbantu...
selamat sore mastah, sebelum bertanya saya akan menjelaskan dulu
BalasHapussaya ingin menjalankan motor dc, motor dc bergerak ke kanan setelah menyentuh sensor limit switch motor berhenti, delay, kemudian motor bergerak ke kiri kemudian menyentuh sensor limit dan motor berhenti. jadi ada dua sensor limit switch.
saya menggunakna fungsi if kok tidak bisa
const int sensortutuppin= 8;
const int sensorbukapin= 9;
int motor1=2;
int motor2=3;
int sensorbuka;
int sensortutup;
void setup()
{
pinMode(sensortutup, INPUT);
pinMode(sensorbuka, INPUT);
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
}
void loop()
{
sensorbuka=digitalRead(sensorbukapin);
sensortutup=digitalRead(sensortutuppin);
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
if(sensorbuka==HIGH)
{
digitalWrite (motor1, LOW);
digitalWrite (motor2, LOW);
delay (300);
}
digitalWrite (motor1, LOW);
digitalWrite (motor2, HIGH);
if (sensortutup==HIGH)
{
digitalWrite (motor1,LOW);
digitalWrite (motor2,LOW);
}
}
Hapussepertinya sudah saya balas lewat whastapp ya kang..
mas aris munandar misal kita buat pengendali kecepatan motor untuk setting menggunakan tombol dan di tampilkan ke deven degmen gimana mas caranya,untuk tombol menggunakan tombol up.set.down
BalasHapusmas aris munandar misal kita buat pengendali kecepatan motor untuk setting menggunakan tombol dan di tampilkan ke seven segmen gimana mas caranya,untuk tombol menggunakan tombol up.set.down.jadi debelum menekan tombol up kita menekan tombol set dulu mas.
BalasHapusartikelnya bagus gan, kunjungi juga website saya di membaca status switch di arduino uno r3 arga yudha
BalasHapusatau link.nya di http://www.argayudhaadhiprama.com/2016/04/11/membaca-status-switch-arduino-uno-r3/
untuk tutorial tentang jaringan komputer kunjungi juga di http://argayudhaadhiprama.blogspot.co.id/
trimakasih dari arga yudha adhiprama
artikelnya bagus gan, kunjungi juga website saya di "CARA MEMBACA STATUS SWITCH DI ARDUINO UNO R3 "
BalasHapusatau link.nya di http://www.argayudhaadhiprama.com/membaca-status-switch-arduino-uno-r3/
trimakasih dari argayudhaadhiprama.com