Kamis, 16 Oktober 2014

CARA SATU PIN INPUT UNTUK TOMBOL LEBIH DARI SATU


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. 
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..

 


8 komentar:

  1. hlo mas aris salam kenal, klo menggunakan I2C bagaimana ya mas

    BalasHapus
    Balasan
    1. salam 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.

      http://www.arduino.cc/en/Reference/Wire

      semoga bisa terbantu...

      Hapus
  2. selamat sore mastah, sebelum bertanya saya akan menjelaskan dulu
    saya 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);
    }
    }

    BalasHapus
    Balasan



































    1. sepertinya sudah saya balas lewat whastapp ya kang..


      Hapus
  3. 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

    BalasHapus
  4. mas 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.

    BalasHapus
  5. artikelnya bagus gan, kunjungi juga website saya di membaca status switch di arduino uno r3 arga yudha

    atau 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

    BalasHapus
  6. artikelnya bagus gan, kunjungi juga website saya di "CARA MEMBACA STATUS SWITCH DI ARDUINO UNO R3 "

    atau link.nya di http://www.argayudhaadhiprama.com/membaca-status-switch-arduino-uno-r3/

    trimakasih dari argayudhaadhiprama.com

    BalasHapus

Silahkan tinggalkan komentar kawan - kawan, baik berupa pertanyaan ataupun saran yang sifatnya membangun. komentar kawan - kawan sangat berharga untuk kemajuan blog ini. kalau bisa mohon hindari penggunaan Anonim. Semoga bermanfaat untuk kita semua...
Terimakasih....