pak agus job 14 15
TRANSCRIPT
-
7/29/2019 Pak Agus Job 14 15
1/8
LAPORAN MIKROKONTROLER DAN ANTARMUKA 2
STAGE 12-15
NO. KELOMPOK : 07KELAS : Telkom 5CNAMA KELOMPOK : Kenneth Januarima
: Novrian Ikhsan Prasetyo
: Pulung Pawestri Utomo
TEKNIK TELEKOMUNIKASI
POLITEKNIK NEGERI JAKARTA
Tahun 2013-2014
-
7/29/2019 Pak Agus Job 14 15
2/8
P.14
Menampilkan posisi dua buah push button di Arduino Uno ke
Serial Monitor
(dengan R pull-up internal)
/*
* Uses internal pullups to read 2 pushbutton states,
* Comunicate the state of the button using serial interface and
* lights on/off 2 LEDs associated with the buttons
*/
#define LEDPIN1 13
#define LEDPIN2 12
#define INPIN1 2
#define INPIN2 3
int state1 = HIGH;
int state2 = HIGH;
void setup() {
Serial.begin(9600);
pinMode(LEDPIN1, OUTPUT);
pinMode(LEDPIN2, OUTPUT);
pinMode(INPIN1, INPUT);
digitalWrite(INPIN1, HIGH); // enable pullup resitor
pinMode(INPIN2, INPUT);
digitalWrite(INPIN2, HIGH); // enable pullup resitor
}void loop() {
delay(10); // debounces switches
int val1 = digitalRead(INPIN1);
int val2 = digitalRead(INPIN2);
if(state1 != val1 || state2 != val2) {
state1 = val1;
state2 = val2;
digitalWrite(LEDPIN1, val1); // turns the LED on or off
digitalWrite(LEDPIN2, val2); // turns the LED on or off
Serial.print(val1, DEC);Serial.println(val2, DEC);
}
}
-
7/29/2019 Pak Agus Job 14 15
3/8
ANALISA
Job ini secara garis besar hampir sama seperti job 13. Perbedaan yang terlihat di job ini
hanya terletak di INPIN 1 dan INPIN 2, dimana INPIN 1 terletak di pin 2 sedangkan INPIN 1
terletak di pin 3. Perbedaan terletak di output dari INPIN tersebut. Jika di job sebelumnya
output dari INPIN tidak diberi keterangan HIGH, maka di jpb ini diberi keterangan HIGH. Hal ini
Membuat kodingan
dengan arduino
sketch
Membuat
rangkaian
Hubungkan arduino
dengan computer
dan rangkaian
Upload
kodingan
Lihat output pada LED
dan gunakan pushbutton
untuk mengatur
-
7/29/2019 Pak Agus Job 14 15
4/8
dikarenakan kondisi awal dari LED adalah menyala, maka output dari INPIN tersebut harus
diberikan keterangan.
Alasan kondisi awal LED menyala, bisa dilihat dari rangkaian job ini yang juga sedikit
berbeda dari job sebelumnya. Jika di job sebelumnya menggunakan tahanan di pin 2 dan pin 3,
maka di job ini tidak menggunakan tahanan tersebut. Hal ini menyebabkan kondisi awal dari
LED pada job ini adalah menyala. Dengan ini juga, dapat membuktikan pada rangkaian arduino
dapat pull up maupun pull down tanpa menggunakan resistor. Hal ini juga menyebabkan
perbedaan pengkodingan dengan job sebelumnya.
P.15
Program Simple Video game berbasis Arduino dan Processing
Sketch arduino
/*
* Uses internal pullups to read 4 pushbutton states,
* Comunicate the state of the buttons using serial interface
*/
#define IN1 2 // fire
#define IN2 3 // right
#define IN3 4 // up
#define IN4 5 // left
#define IN5 6 // down
int state1 = HIGH;
int state2 = HIGH;
int state3 = HIGH;
int state4 = HIGH;
int state5 = HIGH;
void setup() {
Serial.begin(9600);
pinMode(IN1, INPUT);
digitalWrite(IN1, HIGH); // enable pullup resitor
pinMode(IN2, INPUT);digitalWrite(IN2, HIGH); // enable pullup resitor
pinMode(IN3, INPUT);
digitalWrite(IN3, HIGH); // enable pullup resitor
pinMode(IN4, INPUT);
digitalWrite(IN4, HIGH); // enable pullup resitor
pinMode(IN5, INPUT);
digitalWrite(IN5, HIGH); // enable pullup resistor
-
7/29/2019 Pak Agus Job 14 15
5/8
}
void loop() {
delay(10); // debounces switches
int val1 = digitalRead(IN1);
int val2 = digitalRead(IN2);
int val3 = digitalRead(IN3);int val4 = digitalRead(IN4);
int val5 = digitalRead(IN5);
// check if we had a change in state
if(state1 != val1 || state2 != val2 || state3 != val3 || state4 != val4 || state5 !=
val5) {
state1 = val1;
state2 = val2;
state3 = val3;
state4 = val4;
state5 = val5;
/*
we create a 8 bit word (1 byte) whose 5 right bit represent
from right to left buttons fire, right, up, left, down status:
0 if pressed, 1 if not pressed
remaining bits are unused
I'm not that expert in bit operations, there's probably a
better way (faster) to do the following.
*/
unsigned int state = (val5
-
7/29/2019 Pak Agus Job 14 15
6/8
int c = 0;
void setup()
{
size(600, 600);
myPort = new Serial(this, "/dev/ttyUSB5", 9600);
}void draw() {
if(myPort.available() > 0) {
state = myPort.read();
println(state);
println(binary(state));
fire = state & 1;
right = (state & 2) >> 1;
up = (state & 4) >> 2;
left = (state & 8) >> 3;
down = (state & 16) >> 4;
print(fire);
print(right);
print(up);
print(left);
println(down);
}
c = (fire == 0) ? 250 : 0;
if(right == 0 && left == 1) {
x = x + 2;
}if(up == 0 && down == 1) {
y = y - 2;
}
if(left == 0 && right == 1) {
x = x - 2;
}
if(down == 0 && up == 1) {
y = y + 2;
}
background(255, 255, 150);
fill(c);
rect(x, y, 50, 50);
}
-
7/29/2019 Pak Agus Job 14 15
7/8
ANALISA
Pada job kali ini, akan melakukan percobaan tentang program sederhana video game
berbasis arduino. Pada job kali ini, menggunakan 2 aplikasi, yaitu arduino sketch dan
processing.
Membuat kodingan
dengan arduino
sketch
Upload kodingan
tersebut ke arduino
Membuat kodingan
dengan processor
Upload
processor
Terlihat output
yang dihasilkan
-
7/29/2019 Pak Agus Job 14 15
8/8
Pertama adalah membuat kodingan di arduino sketch seperti di atas. pada kosingan tersebut,
terlihat bahwa IN1 untuk fungsi menembak, IN2 untuk bergerak ke kanan, IN3 untuk bergerak
ke atas, IN4 untuk bergerak ke kiri, dan IN5 untuk bergerak ke kanan. Sedangkan untuk pin,
digunakan pin 2 sampai pin 6 untuk IN1 sampai IN5. Pada void setup digunakan seperti pada job
sebelumnya. Sedangkan untuk void loop menggunakan int val1 membaca IN1 dan seterusnya.Kemudian memasukkan state1 adalah val1, yang berarti jika state 1 high maka val1 berfungsi.
Dan perintah state dalam bentuk byte.
Kodingan untuk processing cukup sederhana, setelah mengatur serial class, kemudian
atur ukuran untuk output (disini menggunakan 600x600). Setelah itu di void draw atur state
membaca dari myport dan atur arah sesuai dengan biner. Kemudian atur dengan if sesuai
dengan int x dan y. Untuk arahnya, atur kebalikan dari arah tersebut. Jika ke kiri adalah 0, maka
ke kanan adalah 1. Setelah itu atur warna background.
Jika semuanya sudah dilakukan, upload sketch ke arduino, kemudian upload diprocessing.
KESIMPULAN
Rangkaian arduino dapat pull up maupun pull down tanpa menggunakan resistor Sketch arduino dapat menggunakan processing sebagai outputnya