B. Konsep Pixel
Sebuah obyek dapat dipadukan dengan obyek yang lain. Selanjutnya, obyek -
obyek ini dapat dibuatkan animasi. Lebih jauh lagi, obyek - obyek ini dapat
berinteraksi dengan lingkungan di luar komputer. Menggambar pada layar
komputer sama halnya dengan menggambar pada kertas. Harus memulai suatu
obyek dari suatu sudut atau titik tertentu pada bidang kerja. Pada layar komputer,
elemen-elemen terkecil pembentuk bidang kerja dikenal sebagai piksel. Piksel ini
dapat diilustrasikan seperti grid kertas kotak. Posisi dari tiap-tiap kotak ditentukan
oleh koordinat x dan y-nya. Pada Processing, koordinat-x adalah jarak dari sisi kiri
jendela display (Display Window), dan koordinat-y adalah jarak dari sisi atas
jendela display.
Pada Gambar 1, piksel (0,0) diawali dari sisi kiri-atas, dan akan berakhir pada sisi
kanan-bawah. Indeks dimulai dari 0, bukan dari 1. layar berukuran 200 x 300
piksel,
maka sudut kiri-atas memiliki koordinat (0,0), dan sudut kanan-bawah memiliki
koordinat (199 x 299). Pada ukuran 200 x 300 piksel, nilai 200 menyatakan Lebar
layar, sedangkan nilai 300 menyatakan Tinggi layar.
III. PERALATAN
1. Arduino Uno Board
2. Softwarre Processing
3. Potensiometer
IV. RANGKAIAN
a. Program Arduino
double x,y;
void setup() {
Serial.begin(9600);
x = 0;
}
void loop() {
Serial.flush();
y = 511+511*sin(x);
Serial.println(y);
x += 0.05;
if(x >= 2*3.14)
x = 0;
delay(100);
}
b. Program Processing
import processing.serial.*;
Serial portSerial;
int dataSekarang;
int inByte;
int[] nilaiY;
int w;
void setup() {
size (700,400);
w = width-10;
strokeWeight(3);
smooth();
nilaiY = new int[w];
//sesuikan dengan nomer COM
portSerial = new Serial(this, "COM1", 9600);
}
void draw(){
String inString = portSerial.readStringUntil('\n');
if(inString != null){
inString = trim(inString);
inByte = int(inString);
println(inByte);
dataSekarang = int(map(inByte, 0, 1023, 0+10, height-50));
dataSekarang = height-dataSekarang;
background(0);
for(int i = 1; i < w; i++) {
nilaiY[i-1] = nilaiY[i];
}
nilaiY[w-1] = dataSekarang;
textSize(32);
text(inByte, 10, 30);
stroke(255);
line(w, dataSekarang, width, dataSekarang);
strokeWeight(1);
line(0, dataSekarang, width, dataSekarang);
strokeWeight(3);
for(int i=2; i<w; i++) {
strokeWeight(3);
stroke(220, 10, nilaiY[i]);
line(i, nilaiY[i-1], i, nilaiY[i]);
}
}
}
c. Hasil :
d. Video hasil :
https://drive.google.com/file/d/18c9ZvLZN15S7rDVAr__Jay7pGQ669zQT/vi
ew?usp=sharing
e. Analisa
Pada percobaan ini yaitu akan menampilkan gelombang sinus dengan
persamaan 511+511sin(x) sehingga gelombang tersebut memiliki nilai
maksimum 511 dan minimum -511. Komponen yang digunakan pada software
proteus adalah Arduino uno dan compim. Sebelumnya, connector COM1
haruslah dibuat dan diaktifkan dulu pada VSPE. Lalu pastikan baud rate dan
port pada compim sesuai yaitu 9600 dan COM1. Program Arduino digunakan
untuk mengirim perintah ke processing untuk membentuk gelombang sinus.
Persamaan gelombang tadi berada pada loop() di program Arduino. Nilai x yaitu
0,05 dimana semakin besar nilai x maka bentuk gelombang sinus akan semakin
rapat.
Pada processing, program diatur untuk membuat sebuah tampilan gelombang
sinus. Pada fungsi draw(), berisi baris program yang mengatur warna
background agar berwarna hitam, mengatur ukuran teks yang menampilkan
nilai amplitude gelombang sinus, mengatur ketebalan warna gelombang sinus,
dan menggambar gelombang sinus dengan nilai-nilai seperti pada program.
a. Program Arduino
void setup() {
Serial.begin(9600);
}
void loop() {
int nilaiSensor = analogRead(A2);
Serial.println(nilaiSensor);
delay(100);
}
b. Program Processing import
import processing.serial.*;
Serial portSerial;
int dataSekarang;
int inByte;
int[] nilaiY;
int w;
void setup(){
size (700,400);
w = width-10;
strokeWeight(3);
smooth();
nilaiY = new int[w];
portSerial = new Serial(this, Serial.list()[0], 9600);
}
void draw(){
String inString = portSerial.readStringUntil('\n');
if(inString != null){
inString = trim(inString);
inByte = int(inString);
println(inByte);
dataSekarang = int(map(inByte, 0, 1023, 0+10, height-50));
dataSekarang = height-dataSekarang;
background(0);
for(int i = 1; i < w; i++) {
nilaiY[i-1] = nilaiY[i];
}
nilaiY[w-1] = dataSekarang;
textSize(32);
text(inByte, 10, 30);
stroke(255);
line(w, dataSekarang, width, dataSekarang);
strokeWeight(1);
line(0, dataSekarang, width, dataSekarang);
strokeWeight(3);
for(int i=2; i<w; i++) {
strokeWeight(3);
stroke(220, 10, nilaiY[i]);
line(i, nilaiY[i-1], i, nilaiY[i]);
}
}
}
c. Hasil :
d. Video hasil percobaan :
https://drive.google.com/file/d/1j8A3a9TdlzutC5r8aEc28ip-
05pb0F1j/view?usp=sharing
e. Analisa :
Pada percobaan kedua yaitu membangkitkan gelombang pada arduino dengan
menggunakan potensiometer. Potensiometer dihubungkan dengan pin Arduino
A2. Sebelum dijalankan, pastikan COM1 sudah aktif pada VSPE. Untuk
membentuk grafiknya (nilai naik atau turun), potensio diputar-putar. Pada
software processing, program diatur untuk membuat sebuah tampilan grafik
yaitu baris program yang mengatur warna background, mengatur ketebalan
warna garis, dan menggambar grafik serta pergerakan graffik dengan nilai-nilai
seperti pada program.
b. Hasil :
c. Video hasil percobaan :
https://drive.google.com/file/d/1ARIiplH1K8r7WHseKfPIx_sWbF99rLgF/vie
w?usp=sharing
d. Analisa :
Pada percobaan ketiga membangkitkan audio dengan library minim pada
processing. Sebelumnya library minim dan library audio haruslah di unduh
dahulu. File audio harus ditaruh di direktori yang sama dengan file processing.
Baris lagu = minim.loadFile("01. 너에게 난, 나에게 넌.mp3"); artinya
memutar file audio bernama 01. 너에게 난, 나에게 넌.mp3. selanjutnya akan
ditampilkan semacam gelombang dari lagu tersebut, dengan background hitam
dan garis gelombang berwarna putih.
VI. KESIMPULAN
1. Nilai analog yang diterima Arduino merupakan nilai hasil ADC (Analog to Digital
Converter) 10 Bit yang mempunyai range 0 – 1023.
2. Stroke pada tampilan grafik menggunakan system RGB
3. Untuk menggunakan perintah minim atau memutar lagu, file lagu harus satu
direktori dengan file processing (program processing yang telah dibuat).
4. Untuk dapat menggunakan library minim dan audio, haruslah di download terlebih
dahulu library nya.
VII. LATIHAN
1. Buatlah eksperimen dengan meggunakan Analog Input Arduino dan Potensiometer.
Data hasil pembacaan divisualisasikan dengan software processing seperti gambar
di samping
Jawab :
a. Coding pada Arduino :
void setup() {
Serial.begin(9600);
}
void loop() {
int nilaiSensor = analogRead(A2);
Serial.println(nilaiSensor);
delay(100);
}
d. Video Hasil :
https://drive.google.com/file/d/1Qpm49wFBj11utBQp1P77G4xKiTH3G-
a4/view?usp=sharing
Jawab :
a. Coding pada Arduino
void setup(){
Serial.begin(9600);
}
void loop(){
int nilaiSensor =
analogRead(A2);
Serial.println(nilaiSensor);
delay(100);
}
c. Hasil
d. Video hasil :
https://drive.google.com/file/d/15hG-
pmbo_mdMo3luRW9reXIkRobnEsgS/view?usp=sharing