Counter Up Down dengan Arduino UNO
Ketemu lagi dengan mumunnya Ardutech … Kesempatan kali ini kita akan membuat contoh aplikasi Arduino yaitu counter atau penghitung. Sistemnya sederhana, masukan berupa tombol yang nantinya akan mengontrol Arduino untuk melakukan system counting, baik counting penjumlahan (penambahan) maupun counting pengurangan. Tampilan berupa 7 segment 4 digit agar terlihat jelas dibandingkan jika kita memakai LCD display.
Komponen yang diperlukan untuk membuat counter dengan Arduino UNO :
- Arduino UNO (1)
- Modul 7 Segment 4 digit Common Anoda (1)
- Tombol push on (3)
Buat rangkaian Arduino dengan 7 segment modul dan tombol seperti pada gambar.
Modul 7 segment digambar disederhanakan sehingga koneksi hanya berupa pin segment (A,B , C, D, E, F, G , H) dan pin control digit (1, 2, 3, 4). Rangkaian modul 7 segment yang sebenarnya terdiri dari 7 segment, transistor dan resistor. Tombol push-on berjumlah 3 yang berfungsi sebagai
- Tombol “UP” untuk melakukan penambahan nilai counter
- Tombol “DOWN” untuk mengurangi nilai counter
- Tombol “RESET” untuk mereset nilai counter
Selanjutnya kita buat program Arduino untuk counter-nya.
/************************************** * Counter Up Down Arduino UNO * Input : SW UP- A0 * SW DOWN-A1 * SW RESET-A2 * Output : 7 Segment Display 4 digit CA * www.ardutech.com ***************************************/ #define up A0 #define down A1 #define rst A2 int i,j,cnt; byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0 { 1,0,0,1,1,1,1 }, // = 1 { 0,0,1,0,0,1,0 }, // = 2 { 0,0,0,0,1,1,0 }, // = 3 { 1,0,0,1,1,0,0 }, // = 4 { 0,1,0,0,1,0,0 }, // = 5 { 0,1,0,0,0,0,0 }, // = 6 { 0,0,0,1,1,1,1 }, // = 7 { 0,0,0,0,0,0,0 }, // = 8 { 0,0,0,0,1,0,0 } // = 9 }; //=============================== void scan_tombol(){ if(digitalRead(up)==LOW){ cnt++; for(j=0;j<15;j++) disp7seg(); } else if((digitalRead(down)==LOW)&&(cnt>0)){ cnt--; for(j=0;j<15;j++) disp7seg(); } else if(digitalRead(rst)==LOW){ cnt=0; for(j=0;j<15;j++) disp7seg(); } } //=============================== void sevenSegWrite(byte segment) { byte pin = 2; for (byte segCount = 0; segCount < 7; ++segCount) { digitalWrite(pin, seven_seg_digits[segment][segCount]); ++pin; } } //================= void disp7seg(){ digitalWrite(10,LOW); digitalWrite(11,HIGH); digitalWrite(12,HIGH); digitalWrite(13,HIGH); sevenSegWrite(cnt/1000); delay(5); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,HIGH); digitalWrite(13,HIGH); sevenSegWrite(cnt%1000/100); delay(5); digitalWrite(10,HIGH); digitalWrite(11,HIGH); digitalWrite(12,LOW); digitalWrite(13,HIGH); sevenSegWrite(cnt%1000%100/10); delay(5); digitalWrite(10,HIGH); digitalWrite(11,HIGH); digitalWrite(12,HIGH); digitalWrite(13,LOW); sevenSegWrite(cnt%1000%100%10); delay(5); } //=============== void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); digitalWrite(9,HIGH); pinMode(A0,INPUT_PULLUP); pinMode(A1,INPUT_PULLUP); pinMode(A2,INPUT_PULLUP); } //============================= void loop() { scan_tombol(); disp7seg(); }
Tulis code program dengan Arduino IDE kemudian simpan (Save) , selanjutnya Upload ke Arduino UNO. Untuk melihat hasilnya, silakan tekan tombol “UP” maka nilai counter yang ditampilkan 7 segment akan bertambah 1, tekan lagi untuk melakukan penambahan nilai counter. Coba tekan tombol “DOWN” untuk melihat hasil pengurangannya, misalnya tampilan counter adalah 10 setelah ditekan tombol “DOWN” akan berkurang menjadi 9. Tombol ke-3 juga dapat dicoba, yang hasilnya tentu akan me-reset nilai counter menjuadi 0.
Contoh proyek Arduino ini dibuat dengan modul “Master Mikro ARDUINO” yang tampak seperti pada gambar. Master ARDUINO adalah paket belajar Arduino yang mudah dimengerti dan dapat dikembangkan menjadi banyak aplikasi Arduino. Silakan cek kamarnya disini : Master Mikro ARDUINO.
Semoga bermanfaat.
Bagaimana bila menambahkan interval /timer , misalnya counter selama 1 detik lalu reset , loop…untuk kegunaan rpm .trimakasih sebelumnya