Good morning!!

Postingan ini ditulis saat saya masih sangat amat kobam karena mengerjakan tugas ini yang alhamdulillah belum berhasil dan tugas untuk membuat Game Design Document 😦

Okay jadi pengerjaan proyek kali ini cukup rumit dan melelahkan. FYI pengerjaan proyek ini belum selesai karena semua anggota kelompok saya sudah mabuk. Yang paling amazing dari pengerjaan proyek ini adalah saya bisa menyolder! #inipenting #sayabangga. Walaupun belum selesai, tapi lumayan lah ya udah ada progress. Let’s check it out bagaimana perjuangan kami mengerjakan proyek ini.

Jadi karena pengerjaan proyek ini cukup complicated dibanding tugas selanjutnya, kami membagi pengerjaan ini ke beberapa percobaan.

Percobaan 1 : Menampilkan hasil input keypad ke serial monitor

Tujuan: Mencoba fungsionalitas dari keypad

Alat dan Bahan

  • Arduino UNO
  • 3×4 hex keypad
  • jumpers
  • breadboard
  • long pin connectors

Skema

Keypad-arduino-circuit

sumber : https://www.allaboutcircuits.com

Source Code

/*this keypad tutorial number one by omar tarek 29-06-2014 */
byte h=0,v=0; //variables used in for loops
const unsigned long period=50; //little period used to prevent error
unsigned long kdelay=0; // variable used in non-blocking delay
const byte rows=4; //number of rows of keypad
const byte columns=4; //number of columnss of keypad
const byte Output[rows]={2,3,4,5}; //array of pins used as output for rows of keypad
const byte Input[columns]={6,7,8,9}; //array of pins used as input for columnss of keypad
byte keypad() // function used to detect which button is used
{
static bool no_press_flag=0; //static flag used to ensure no button is pressed
for(byte x=0;x<columns;x++) // for loop used to read all inputs of keypad to ensure no button is pressed
{
if (digitalRead(Input[x])==HIGH); //read evry input if high continue else break;
else
break;
if(x==(columns-1)) //if no button is pressed
{
no_press_flag=1;
h=0;
v=0;
}
}
if(no_press_flag==1) //if no button is pressed
{
for(byte r=0;r<rows;r++) //for loop used to make all output as low
digitalWrite(Output[r],LOW);
for(h=0;h<columns;h++) // for loop to check if one of inputs is low
{
if(digitalRead(Input[h])==HIGH) //if specific input is remain high (no press on it) continue
continue;
else //if one of inputs is low
{
for (v=0;v<rows;v++) //for loop used to specify the number of row
{
digitalWrite(Output[v],HIGH); //make specified output as HIGH
if(digitalRead(Input[h])==HIGH) //if the input that selected from first sor loop is change to high
{
no_press_flag=0; //reset the no press flag;
for(byte w=0;w<rows;w++) // make all outputs as low
digitalWrite(Output[w],LOW);
return v*4+h; //return number of button
}
}
}
}
}
return 50;
}
void setup()
{
for(byte i=0;i<rows;i++) //for loop used to make pin mode of outputs as output
{
pinMode(Output[i],OUTPUT);
}
for(byte s=0;s<columns;s++) //for loop used to makk pin mode of inputs as inputpullup
{
pinMode(Input[s],INPUT_PULLUP);
}
Serial.begin(9600); //to use serial monitor we set the buad rate
}
void loop()
{
if(millis()-kdelay>period) //used to make non-blocking delay
{
kdelay=millis(); //capture time from millis function
switch (keypad()) //switch used to specify which button
{
case 0:
Serial.println(1);
break;
case 1:
Serial.println(2);
break;
case 2:
Serial.println(3);
break;
case 3:
Serial.println("F1");
break;
case 4:
Serial.println(4);
break;
case 5:
Serial.println(5);
break;
case 6:
Serial.println(6);
break;
case 7:
Serial.println("F2");
break;
case 8:
Serial.println(7);
break;
case 9:
Serial.println(8);
break;
case 10:
Serial.println(9);
break;
case 11:
Serial.println("F3");
break;
case 12:
Serial.println("Mode");
break;
case 13:
Serial.println(0);
break;
case 14:
Serial.println("Cancel");
break;
case 15:
Serial.println("Enter");
break;
default:
;
}
}
}

Hasil Implementasi

img_20170228_160037img_20170228_170846img_20170228_170914

Yeay selesai percobaan 1, tapi percobaan 1 ini juga tidak bisa berhasil dalam sekali percobaan. Terjadi kesalahan dalam penyusunan row keypad sehingga letak tombolnya terbalik, output tidak sesuai dengan input yang diinginkan. Namun setelah mengubah rangkaian, alhamdulillah percobaan 1 berhasil.

Percobaan 2 : Membuat kalkulator dengan keypad dan LCD

Nah ini nih yang susah. Pengerjaan percobaan kedua diselangi dengan pengerjaan tugas GDD  dan istirahat sambil makan nasi padang yang super banyak. Alhamdulillah saya memiliki teman-teman yang sangat baik hati dan tidak sombong yangmau membantu saya menghabiskan makanan saya.

Oke lanjut ke percobaan kita, maaf banyak curhat

Alat dan Bahan

  • Arduino UNO
  • 3×4 hex keypad
  • jumpers (dibutuhkan jumlah yang cukup banyak)
  • breadboard
  • long pin connectors
  • LCD
  • Solder
  • Potensiometer
  • Resistor

Skema

fritzing_lcd1keypad_final

sumber : https://www.allaboutcircuits.com

Hasil Implementasi

img_20170228_194548

Yaps, bisa dilihat LCD belum menampilkan apapun 😦 Padahal menurut kami rangkaian sudah benar dan source code sudah selesai. Namun apa daya takdir berkata lain.  Karena sudah malam dan saya ingin cepat-cepat beli Nu Milk Tea, jadi percobaan kami dicukupkan sampai sini saja.

Semoga di pengerjaan berikutnya proyek ini bisa diselesaikan tanpa halangan dan rintangan yang berarti.

See yaa!!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s