Anda di halaman 1dari 53

TRAINING SERIES

SIMULASI ARDUINO
DENGAN SIMULIDE
PROGRAM STUDI TEKNIK ELEKTRO
DAFTAR ISI
Pengenalan Arduino LCD

Pengenalan Software Proteus Motor DC


What you need to know

Pemograman Arduino & simulasi Motor Servo


Proteus

Sensor
iInput & Output Digital

LCD Nokia 5510


Input & Output Analog

Latihan
Serial Monitor
Pengenalan Arduino
What is Arduino?
Arduino adalah sebuah platform elektronika yang
menggunakan sistem terbuka dengan mengutamakan
pada pemrograman fisik berbasiskan sistem input/output
sederhana dengan pengembangan lingkungan kerja
menggunakan bahasa Processing
Arduino: Pemrograman
Menggunakan Arduino IDE (Integrated
Development Environment)
Free Software
C-like language
Dapat diupload langsung
Disebut dengan “sketches”
void setup( )

Structure {
// Statement;

Pemrograman }
void loop( )
{
Pengenalan Arduino // Statement;
}
SETUP ()
Fungsi setup() hanya di panggil satu kali ketika program pertama kali di
jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai
komunikasi serial.

LOOP ()
Setelah melakukan fungsi setup() maka secara langsung akan melakukan
fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada
dalam fungsi loop().

FUNCTION ()
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan
mempunyai statement yang akan di eksekusi ketika function di panggil.
CRULY BRACES {}
Structure Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi.

Pemrograman
SEMICOLON ;
Pengenalan Arduino Semicolon harus di berikan pada setiap statement program yang kita buat,
ini merupakan pembatas setiap statement program yang di buat

BLOCK COMMENT /*..........*/


Function (fungsi) adalah blok pemrograman yang mempunyai nama dan
mempunyai statement yang akan di eksekusi ketika function di panggil.

VARIABLE
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam
program. Variable dapat di rubah sesuai dengan instruksi yang kita buat.
Ketika mendeklarisikan variable harus di ikut sertakan type variable serta
nilai awal variable.
BYTE
Tipe type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte

Data
memiliki range 0 – 255.
Byte biteVariable = 180; // mendeklarasikan ‘biteVariable’ sebagai type byte

INTEGER
Pengenalan Arduino Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa
koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -32.768.
Int integerVariable = 1600; // mendeklarasikan ‘integerVariable’ sebagai type
integer

LONG
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit
dengan range 2.147.483.647 sampai -2.147.483.648
Long longVariable = 500000; // mendeklarasikan ‘longVariable’ sebagai type long

FLOAT
Float adalah tipe data yang dapat menampung nilai decimal, float merupakan
penyimpan yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit
dengan range 3.4028235E+38 sampai -3.4028235E+38
Float floatVariable = 3.14; // mendeklarasikan ‘floatVariable’ sebagai type float
Tipe
Data ARRAY
Array adalah kumpulan nilai yang dapat di akses dengan index number
Contoh penggunaan array:
Pengenalan Arduino Int arraySaya[] = {2,4,6,8,10}
x = arraySaya[5]; // x sekarang sama dengan 10

INTEGER
Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa
koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -32.768.
Int integerVariable = 1600; // mendeklarasikan ‘integerVariable’ sebagai type
integer
Operator ARITMATIKA
operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan
pembagian.
Pengenalan Arduino y = y + 3;
x = x - 8;
i = i * 5;
r = r / 9;

COMPOUND ASSIGNMENTS
Compound assignments merupakan kombinasi dari aritmatic dengan sebuah
variable. Ini biasanya dipakai pada pengulangan.
x ++; // sama seperti x = x + 1 atau menaikan nilai x sebesar 1
x --; // sama seperti x = x - 1 atau mengurangi nilai x sebesar 1
x += y; // sama seperti x = x + y
x -= y; // sama seperti x = x – y
x *= y; // sama seperti x = x * y
x /= y; // sama seperti x = x / y
COMPARISON
Operator Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true.
Statement ini banyak digunakan dalam operator bersyarat.
x == y; // x sama dengan y
Pengenalan Arduino x != y; // x tidak sama dengan y
x < y;// x leboh kecil dari y
x > y;// x lebih besar dari y
x <= y; // x lebih kecil dari sama dengan y
x >= y; // x lebih besar dari sama dengan y

LOGIC OPERATOR
operator logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai balik
benar atau salah tergantung dari operator yang di gunakan. Terdapat 3 operator logical
AND,OR, dan NOT, yang biasanya di gunakan pada if statement.
Contoh penggunaan:
Logical AND
If ( x > 0 && x < 5) // bernilai benar apabila kedua operator pembanding terpenuhi
Logical OR
If ( x > 0 || y > 0) // bernilai benar apabila salah satu dari operator pembanding terpenuhi
Logical NOT
If ( !x > 0 ) // benilai benar apabila ekspresi operator salah
Konstanta TRUE/FALSE
Merupakan konstanta Boolean yang mendifinisikan logic level. False mendifinisikan
0 dan True mendifinisikan 1.
Pengenalan Arduino If ( b == TRUE );
{
//doSomething
}

HIGH/LOW
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di gunakan ketika
membaca dan menulis ke digital pin. HIGH di definisikan sebagai 1 sedangkan LOW
sebagai 0.
digitalWrite( 13, HIGH );

INPUT/OUTPUT
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin
digital, sebagai input atau output
pinMode( 13, OUTPUT );
IF
Flow control If Operator if mengtest sebuah kondisi seperti nilai analog sudah berada di bawah
nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi
baris program yang ada dalam brackets kalau tidak terpenuhi maka akan
Pengenalan Arduino mengabaikan baris program yang ada dalam brackets.
brackets.
If ( someVariable ?? value )
{
//DoSomething;
}

IF... ELSE
Operator if…else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi
yang pertama maka akan mengeksekusi baris program yang ada di else.
If ( inputPin == HIGH )
{
//Laksanakan rencana A;
}
Else
{
//Laksanakan rencana B;
}
FOR

Flow control Operator for digunakan dalam blok pengulangan tertutup.


For ( initialization; condition; expression )
{
//doSomethig;
Pengenalan Arduino }

WHILE
Operator while akan terus mengulang baris perintah yang ada dalam bracket
sampai ekspresi sebagai kondisi pengulangan benilai salah
While ( someVariable ?? value )
{
//doSomething;
}

DO... WHILE
Sama halnya dengan while() hanya saja pada operator Do…while tidak melakukan
pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali
baris perintah walaupun pada awalnya sudah terpenuhi.
Do
{
//doSomething;
}
While ( someVariable ?? value );
ARDUINO PIN I/O
Arduino Arduino uno terdapat pin I/O untuk mengakses atau menerima data yang berupa

Pin
sinyal analog maupun sinyal digital.

PINMODE(PIN, MODE)
Pengenalan Arduino digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input
atau Output. Arduino digital pins secara default di konfigurasi sebagai input
sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage

DIGITALREAD(PIN)
membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
Value = digitalRead(pin); // mengset ‘value’ sama dengan pin

DIGITALWRITE(PIN, VALUE)
digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( 0 – 13 ).
digitalWrite ( pin, HIGH ); // set pin to HIGH
DELAY(MS)
Time & Math Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya
dalam millisecond.
Delay(1000); // menunggu selama satu detik
Pengenalan Arduino
MILLIS()
Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala.
Penapungnya harus long integer.
Value = millis(); // set ‘value’ equal to millis()

MIN(X,Y)
Membadingkan 2 variable dan akan mengembalikan nilai yang paling kecil.
value = min(value, 100); // set ‘value’ sebagai nilai yang paling kecil dari kedua nilai

MAX(X,Y)
Max merupakan kebalikan dari min.
value = max(value, 100); //set ‘value’ sebagai nilai yang paling besar dari kedua nilai
Random & Serial RANDOM
randomSeed(seed)
random(min,max)
Pengenalan Arduino

SERIAL.BEGIN(RATE)
Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset
baudrate.
void setup()
{
Serial.begin(9600); //open serial port and set baudrate 9600 bps
}

SERIAL.PRINLN(DATA)
Mengirimkan data ke serial port.
Serial.println(100); // mengirimkan 100
Pengenalan
Software SimulIDE
Input & Output Digital
pada pemograman kali ini 4 buah led akan diprogram
dengan Perulangan Metode Manual
void setup ()
{
for (int a = 10; a<=13; a++)
{ digitalWrite (10, LOW);
pinMode(a, OUTPUT); digitalWrite (11, LOW);
}} digitalWrite (12, HIGH);
void loop () digitalWrite (13, LOW);
{ delay (1000);
digitalWrite (10, HIGH); digitalWrite (10, LOW);
digitalWrite (11, LOW); digitalWrite (11, LOW);
digitalWrite (12, LOW); digitalWrite (12, LOW);
digitalWrite (13, LOW); digitalWrite (13, HIGH);
delay (1000); delay (1000);
digitalWrite (10, LOW); }
digitalWrite (11, HIGH);
digitalWrite (12, LOW);
digitalWrite (13, LOW);
delay (1000);
Input & Output Digital
pada pemograman kali ini 4 buah led akan diprogram
dengan Metode Perulangan While, & Do While
int led = 10; int led = 10;
int led_lama; int led_lama;
void setup() void setup()
{ {
for (int a = 9; a<=13; a++) for (int a = 9; a<=13; a++)
{ {
pinMode(a, OUTPUT); pinMode(a, OUTPUT);
}} }}
void loop() void loop(){
{ do {
while (1) { digitalWrite (led, HIGH);
digitalWrite (led, HIGH); led_lama = led;
led_lama = led; led++;
led++; delay(1000);
delay(1000); digitalWrite(led_lama, LOW);
digitalWrite(led_lama, LOW); if (led == 14){
if (led == 14){ led = 10;
led = 10; }}
}}} while (1);}
Input & Output Digital
pada pemograman kali ini 4 buah led akan diprogram
dengan Metode Perulangan for
int led;
int led_lama;
void setup()
{
for (int a = 10; a<=13; a++)
{
pinMode(a, OUTPUT);
}}
void loop(){
for (led = 10; led <= 13; led++ ) {
digitalWrite(led, HIGH);
led_lama = led;
delay (1000);
digitalWrite(led_lama, LOW);
if (led == 14) {
led = 10;
}}}
Input & Output Digital
pada pemograman kali ini 4 buah led akan diprogram dengan push buuton
{
for(int i;i<5;i++)
{
digitalWrite(10, HIGH); // LED padam
void setup() digitalWrite(11, HIGH); // LED padam
{ digitalWrite(12, LOW); // LED menyala
pinMode(10, OUTPUT); digitalWrite(13, LOW); // LED menyala
pinMode(11, OUTPUT); delay(1000); // tunggu 1 detik
pinMode(12, OUTPUT); digitalWrite(10, LOW); // LED menyala
pinMode(13, OUTPUT); digitalWrite(11, LOW); // LED menyala
pinMode(7, INPUT); digitalWrite(12, HIGH); // LED padam
} digitalWrite(13, HIGH); // LED padam
void pola1() delay(1000); // tunggu 1 detik
{ for(inti;i<5;i++) }}
{ void loop()
digitalWrite(10, HIGH); // LED padam {
digitalWrite(11, HIGH); // LED padam int tombol = digitalRead(7);
digitalWrite(12, HIGH); // LED padam if (tombol==HIGH)
digitalWrite(13, HIGH); // LED padam pola1();
delay(100); // tunggu 0.1 detik else
digitalWrite(10, LOW); // LED menyala pola2();
digitalWrite(11, LOW); // LED menyala delay(1000);
digitalWrite(12, LOW); // LED menyala }
digitalWrite(13, LOW); // LED menyala
delay(100); // tunggu 0.1 detik
}}
void pola2()
Input & Output Analog
Input & Output Analog

Pemograman Delay berdasarkan Potensiometer

intsensorValue = 0; //inisialisasi harga bacaan potentiometer awal


void setup()
{
// Inisialisasi Pin Digital sebagai OUTPUT.
// Pin 13 telah menghubungkan LED ke Arduino:
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensor Value = analogRead(A0);
//membaca tegangan dari potentiometer
Serial.println(sensorValue);
//membaca Nilai potensiometer pada serial monitor
digitalWrite(13, HIGH); // LED menyala
delay(sensorValue);
// waktu tunggu sesuai harga tegangan dari potentiometer
digitalWrite(13, LOW); // LED padam
delay(sensorValue);
// waktu tunggu sesuai harga tegangan dari potentiometer
}
Pemograman LED dengan Potensiometer
LED akan menyala bila tegangan potentiometer lebih besar dari harga batas
tertentu dan padam bila tegangan potentiometer kurang dari harga batas tertentu.

intsensorValue = 0; //inisialisasihargabacaan potentiometer awal


intbatas = 500; //inisialisasihargabacaan potentiometer awal
void setup()
{
// Inisialisasi Pin Digital sebagai OUTPUT.
// Pin 13 telah menghubungkan LED ke Arduino:
pinMode(13, OUTPUT);
}
void loop()
{

kutnebmeM nakA inI iraH atiK .UMADAP

NAPED ASAM ID PUDIH ATIK ANAMIAGAB


NASUTUPEK NAD NATAUBREP
sensor Value = analogRead(A0); //membacategangandari potentiometer
if (sensorValue>batas) //cek harga, apakahlebihbesardarihargabatas?
{
digitalWrite(13, HIGH); // LED menyala
delay(1000); // tunggu 1 s

HISAK AMIRETREB
HALTAUBREB
taubmeM nakA gnay utauseS
napeD asaM id umiriD
}
else
{
digitalWrite(13, LOW); // LED padam
delay(1000); // tunggu 1s
}
}
Pemograman Pengaturan PWM
LED akan menyala bila tegangan potentiometer lebih besar dari harga batas
tertentu dan padam bila tegangan potentiometer kurang dari harga batas tertentu.
int sensorValue = 0; //inisialisasi harga bacaan potentiometer awal
int outputValue = 0; //inisialisasi harga output awal
void setup()
{
// Inisialisasi Pin Digital sebagai OUTPUT.
// Pin 13 telah menghubungkan LED ke Arduino:
pinMode(11, OUTPUT);
}
void loop()
{
sensorValue = analogRead(0); //membaca tegangan dari potentiometer
outputValue = sensorValue /4; //harga output disesuai dengan harga ADC
analogWrite(11, outputValue); // LED menyala sesuai dengan harga output

ot noissap gninrub ruoy htiw


delay(1000); // waktu tunggu 1 s

nus eht ekaM .yad eht trats


suolaej nus eht ekam ,nepo
}

era seye ruoy taht woN

.deb ni yats ro suolaej

IBALAH LE KALAM
Serial Monitor
Serial Monitor

Pemograman Dasar Serial Monitor

void setup()
{
void setup() { pinMode(13, OUTPUT);
Serial.begin(9600); Serial.begin(9600);
} }
void loop() { void loop()
int sensorValue = {
analogRead(A0); Serial.println("Led 13 Nyala");
Serial.println(sensorValue); digitalWrite(13, HIGH); int val = 0;
delay(1); delay(1000); void setup()
} Serial.println("Led 13 Mati"); {
digitalWrite(13,LOW); pinMode(13, OUTPUT);
delay(1000); Serial.begin(9600);
} }
void loop()
{

" JIKA KALIAN INGIN MENJADI


val = Serial.read;
Serial.println(val);
if (val == ‘H’)
PEMIMPIN BESAR, MENULISLAH
{
SEPERTI WARTAWAN DAN digitalWrite(13, HIGH);
BICARALAH SEPERTI ORATOR
– HOS Tjokroaminoto
" delay(500);
digitalWrite(13,LOW);
delay(500);
}}
Serial Monitor
int led [] = {1, 2, 3, 4, 5, 6, 7};
char i;
int index;
int mati;
void setup (){
Serial.begin(9600);
for (index = 0; index <= 7; index++)
{pinMode(led[index], OUTPUT);
}}
void loop ()
{
if (Serial.available () > 0){
i = Serial.read();
Serial.println(i);
{
if ((i == '1') ||(i == '2') ||(i == '3') ||(i == '4') ||(i == '5') ||(i == '6') ||(i == '7'))
for (index = 0; index <= 7; index++){
digitalWrite (led[index], LOW);}
if (i == '1'){index = 0;}
if (i == '2'){index = 1;}
if (i == '3'){index = 2;}
if (i == '4'){index = 3;} " JIKA KALIAN INGIN MENJADI
if (i == '5'){index = 4;} PEMIMPIN BESAR, MENULISLAH
if (i == '6'){index = 5;}
if (i == '7'){index = 6;} SEPERTI WARTAWAN DAN
digitalWrite (led[index], HIGH);
}}}
BICARALAH SEPERTI ORATOR
– HOS Tjokroaminoto
"
Serial Monitor
Pemograman LED dengan Serial Monitor
int val = 0;
int batas = 500;
void setup()
Akan tetapi, semakin jelas bahwa kita telah menggunakannya terlalu berlebihan

{
yang luar biasa dalam kehidupan.
Teknologi memberikan manfaat

pinMode(5, OUTPUT);
Kita menggunakannya hampir

pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
}
sampai pada tahap keterikatan yang tidak sehat.

void loop()
{
val = analogRead(0);
Serial.println(val);
setiap hari.

if (val > batas)


{
digitalWrite (5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
delay(500);
digitalWrite (5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay(500);
}}
LCD
LCD

Pemograman LCD dasar


// PROJECT 1
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Pemograman LCD Kelap Kelip
lcd.begin(16, 2);
} // PROJECT 2
void loop() { #include <LiquidCrystal.h>
lcd.clear(); // Clear the display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.print("Basic Print"); // Print some text void setup() {
delay(2000); lcd.begin(16, 2);
} }
void loop() {
lcd.clear(); // Clear the display
lcd.print("Display On/Off"); // Print some text
for(int x=0; x < 3; x++) { // Loop 3 times
lcd.noDisplay(); // Turn display off
delay(1000);
lcd.display(); // Turn it back on again
delay(1000);
}
}
LCD
Pemograman LCD Text Cursor Pemograman LCD Text Cursor
#include <LiquidCrystal.h> // PROJECT 4
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #include <LiquidCrystal.h>
void setup() { LiquidCrystallcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 2); void setup() {
} lcd.begin(16, 2);
void loop() { }
lcd.clear(); // Clear the display void loop() {
lcd.print("SetCursor Demo"); // Print some text lcd.clear(); // Clear the display
delay(1000); lcd.print("Scroll Right");
lcd.clear(); // Clear the display lcd.setCursor(0,1);
lcd.setCursor(5,0); // Cursor at column 5 row 0 lcd.print("Demo");
lcd.print("5,0"); delay(1000);
delay(2000); lcd.clear(); // Clear the display
lcd.setCursor(10,1); // Cursor at column 10 row 1 lcd.print("Beginning");
lcd.print("10,1"); lcd.setCursor(0,1);
delay(2000); lcd.print("Arduino");
lcd.setCursor(3,1); // Cursor at column 3 row 1 delay(1000);
lcd.print("3,1"); for(int x=0; x<16; x++) {
delay(2000); lcd.scrollDisplayRight(); // Scroll display right 16 times
} delay(250);
}
}
LCD
Pemograman LCD Text Cursor
// PROJECT 5
#include <LiquidCrystal.h>
B.J. Habibie
asaitnanes gnay akerem naaynupek
gnaro kilim halnakub nalisahrebeK

LiquidCrystallcd(12, 11, 5, 4, 3, 2);


halada nalisahrebeK .ratnip gnay

void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.clear(); // Clear the display
lcd.cursor(); // Enable cursor visible
lcd.print("Cursor On");
delay(3000);

lcd.clear(); // Clear the display


.ahasureb

lcd.noCursor(); // Cursor invisible


lcd.print("Cursor Off");
delay(3000);
lcd.clear(); // Clear the display

lcd.cursor(); // Cursor visible


lcd.blink(); // Cursor blinking
lcd.print("Cursor Blink On");
delay(3000);
lcd.noCursor(); // Cursor invisible
lcd.noBlink(); // Blink off
}
Motor DC
Pemograman 1 Motor DC
// Motor shield ini menggunakan pin 4 dan 5 untuk mengontrol 1 motor DC
// Sambungkan motor DC ke M1+, M1-

#define rightMotor_Dir 4// arahputar (Motor 1 / Kanan)


#define rightMotor_Vel 5 // kontrolkecepatan (Motor 1 / Kanan)

void setup()
{
pinMode(4,OUTPUT); //Setting pin 4 sebagai output
pinMode(5,OUTPUT); //Setting pin 5 sebagai output
}
void loop()
{
digitalWrite(rightMotor_Dir,HIGH); //Motor diberi HIGH untukbergerak CW
digitalWrite(rightMotor_Vel,HIGH); //Motor diberi HIGH agar EN=full speed
delay(1000);
}
Pemograman 2 Motor DC
#define rightMotor_Dir 4// arahputar (Motor 1 / Kanan)
#define rightMotor_Vel 5 // kontrolkecepatan (Motor 1 / Kanan)
#define leftMotor_Dir 7// arahputar (Motor 1 / Kanan)
#define leftMotor_Vel 6 // kontrolkecepatan (Motor 1 / Kanan)
void setup()
{
pinMode(4,OUTPUT); //Setting pin 4 sebagai output
pinMode(5,OUTPUT); //Setting pin 5 sebagai output
pinMode(6,OUTPUT); //Setting pin 4 sebagai output
pinMode(7,OUTPUT); //Setting pin 5 sebagai output
}
void loop()
{
digitalWrite(rightMotor_Dir,HIGH); //Motor diberi HIGH untukbergerak CW
analogWrite(rightMotor_Vel,100); //Motor diberi HIGH agar EN=full speed
digitalWrite(leftMotor_Dir,LOW); //Motor diberi HIGH untukbergerak CW
analogWrite(leftMotor_Vel,55); //Motor diberi HIGH agar EN=full speed
delay(1000);
}
Motor DC dengan arah Putar
#define rightMotor_Dir 4
#define rightMotor_Vel 5
#define leftMotor_Dir 7
#define leftMotor_Vel 6
void setup()
{ void ccw ()
pinMode(4,OUTPUT); {
pinMode(5,OUTPUT); digitalWrite(rightMotor_Dir,LOW);
pinMode(6,OUTPUT); analogWrite(rightMotor_Vel,100);
pinMode(7,OUTPUT); digitalWrite(leftMotor_Dir,LOW);
} analogWrite(leftMotor_Vel,100);
void cw () delay(1000);
{ }
digitalWrite(rightMotor_Dir,HIGH); void loop()
analogWrite(rightMotor_Vel,100); {
digitalWrite(leftMotor_Dir,HIGH); cw();
analogWrite(leftMotor_Vel,100); ccw();
delay(1000);
}
}
Pemograman 2 Motor DC
#define rightMotor_Dir 4
#define rightMotor_Vel 5
#define leftMotor_Dir 7
#define leftMotor_Vel 6
void setup() void leftMotor(boolean arah)
{ {
pinMode(4,OUTPUT); analogWrite(leftMotor_Vel,100);
pinMode(5,OUTPUT); if(arah) digitalWrite(leftMotor_Dir,HIGH);
pinMode(6,OUTPUT); else digitalWrite(leftMotor_Dir,LOW);
pinMode(7,OUTPUT); }
} void loop()
//fungsiarahputar motor kanan {
void rightMotor(boolean arah) rightMotor(true);
{ leftMotor(true);
analogWrite(rightMotor_Vel,100); delay(5000);
if(arah) digitalWrite(rightMotor_Dir,HIGH); rightMotor(false);
else digitalWrite(rightMotor_Dir,LOW); leftMotor(false);
}
delay(3000);
}
Pemograman 2 Motor DC
void maju()
#define rightMotor_Dir 4 {
#define rightMotor_Vel 5
rightMotor(150, false); //motor maju dgn kecepatan 0.5 second
#define leftMotor_Dir 7
leftMotor(150, false);
#define leftMotor_Vel 6
}
void mundur()
void setup()
{
{
pinMode(4,OUTPUT); rightMotor(150, true); //motor mundur dgn kecepatan 0.5 second
pinMode(5,OUTPUT); leftMotor(150, true);
pinMode(6,OUTPUT); }
pinMode(7,OUTPUT); void kanan()
} {
void leftMotor(intpwm, booleanarah) rightMotor(0, false); void loop()
{ leftMotor(100, false); {
analogWrite(rightMotor_Vel,pwm); } maju();
if(arah)digitalWrite (rightMotor_Dir,HIGH); void kiri() delay(1000);
else digitalWrite (rightMotor_Dir,LOW); { kanan();
} rightMotor(100, false); delay(900);
void rightMotor(intpwm, booleanarah) leftMotor(0, false); maju();
{ } delay(700);
analogWrite(leftMotor_Vel,pwm);
kanan();
if(arah) digitalWrite (leftMotor_Dir,HIGH);
delay(900);
else digitalWrite (leftMotor_Dir,LOW);
}
}
Motor Servo
Servo dengan pergerakan 20 derajat

#include <Servo.h>
Pemograman Servo Servo myservo;
int pos;
void setup()
#include <Servo.h>
{
Servo myservo;
myservo.attach(8);
}
void setup()
void loop()
{
{
myservo.attach(8);
for (pos=0; pos <= 180; pos +=20)
}
{
void loop()
myservo.write(pos);
{
delay(100);
myservo.write(0);
}
delay(1000);
delay(1000);
myservo.write(90);
for (pos = 180; pos >= 0; pos-=20)
delay(1000);
{
myservo.write(180);
myservo.write(pos);
delay(1000);
delay(100);
}
}
delay(1000);
}
2 Servo dengan pergerakan 20 derajat

#include <Servo.h>
Servo myservoa, myservob;
int pos;
int pos1;
void setup()
{
myservoa.attach(8);
myservob.attach(9);
}
void loop()
{
for (pos = 0; pos <= 180; pos +=20)
for (pos1 = 0; pos1 <= 180; pos1 +=20)
{ myservoa.write(pos);
myservob.write(pos1);
delay(100);}
delay(1000);
for (pos = 180; pos >= 0; pos -=20)
for (pos1 = 180; pos1 >= 0; pos1 -=20)
{myservoa.write(pos);
myservob.write(pos1);
delay(100);}
delay(1000);}
SENSOR
Pemograman ULTRASONIC

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int trig_pin=8;
const int echo_pin=9;
long distance,duration;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
pinMode(8,OUTPUT);
pinMode(9,INPUT);
}
void loop() {
digitalWrite(8,HIGH);
delayMicroseconds(20);
digitalWrite(8,LOW);
delayMicroseconds(20);
duration = pulseIn(echo_pin, HIGH);
distance= duration*0.034/2;
lcd.setCursor(0,1);
lcd.print(distance);
lcd.print("cm");
delay(100);
}
Pemograman ULTRASONIC
Pemograman ULTRASONIC
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void loop() {
const int trig_pin=8; ultrasonik ();
const int echo_pin=9; if(distance<=30)
long distance,duration; { lcd.setCursor(0,0); //set the cursor
void setup() { to column 0 and line 1
lcd.begin(16, 2); lcd.print("nilai di bwh 30 cm");
lcd.setCursor(0,0); delay(100);
pinMode(8,OUTPUT); }
pinMode(9,INPUT); if((distance>=40)&&
} (distance<=120))
void ultrasonik () { lcd.setCursor(0,0); //set the cursor
{ to column 0 and line 1
digitalWrite(8,HIGH); lcd.print("nilai di 40-120 cm");
delayMicroseconds(20); delay(100);
digitalWrite(8,LOW); }
delayMicroseconds(20); if((distance>=130)&&
duration = pulseIn(echo_pin, HIGH); (distance<=300))
distance= duration*0.034/2; { lcd.setCursor(0,0); //set the cursor
lcd.setCursor(0,1); to column 0 and line 1
lcd.print(distance); lcd.print("nilai di 130-300 cm");
lcd.print("cm"); delay(100);
delay(100); }}
}
LATIHAN
LCD NOKIA 5510 (a)
Pemograman LCD Text Cursor Pemograman LCD Text Cursor
#include <LiquidCrystal.h> // PROJECT 4
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #include <LiquidCrystal.h>
void setup() { LiquidCrystallcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 2); void setup() {
} lcd.begin(16, 2);
void loop() { }
lcd.clear(); // Clear the display void loop() {
lcd.print("SetCursor Demo"); // Print some text lcd.clear(); // Clear the display
delay(1000); lcd.print("Scroll Right");
lcd.clear(); // Clear the display lcd.setCursor(0,1);
lcd.setCursor(5,0); // Cursor at column 5 row 0 lcd.print("Demo");
lcd.print("5,0"); delay(1000);
delay(2000); lcd.clear(); // Clear the display
lcd.setCursor(10,1); // Cursor at column 10 row 1 lcd.print("Beginning");
lcd.print("10,1"); lcd.setCursor(0,1);
delay(2000); lcd.print("Arduino");
lcd.setCursor(3,1); // Cursor at column 3 row 1 delay(1000);
lcd.print("3,1"); for(int x=0; x<16; x++) {
delay(2000); lcd.scrollDisplayRight(); // Scroll display right 16 times
} delay(250);
}
}
#include <Adafruit_GFX.h> LCD NOKIA 5510 (b)
#include <Adafruit_PCD8544.h>
digitalWrite(7,HIGH); //Turn Backlight ON
boolean backlight = true;
digitalWrite(9,LOW); //led1
boolean Lamp1 = true;
digitalWrite(10,LOW); //Led2
boolean Lamp2 = true;
digitalWrite(12,LOW); //Led3
boolean Lamp3 = true;
Serial.begin(9600);
int contrast=60;
display.begin();
int menuitem = 1;
display.setContrast(contrast); //Set contrast to 50
int page = 1;
display.clearDisplay();
volatile boolean up = false;
display.display();
volatile boolean down = false;
}
volatile boolean middle = false;
void loop() {
int downButtonState = 0;
drawMenu();
int upButtonState = 0;
downButtonState = digitalRead(1);
int selectButtonState = 0;
selectButtonState = digitalRead(2);
int lastDownButtonState = 0;
upButtonState = digitalRead(0);
int lastSelectButtonState = 0;
checkIfDownButtonIsPressed();
int lastUpButtonState = 0;
checkIfUpButtonIsPressed();
Adafruit_PCD8544 display = Adafruit_PCD8544( 5, 4, 3);
checkIfSelectButtonIsPressed();
void setup() {
if (up && page == 1 ) {
pinMode(2, INPUT_PULLUP);
up = false;
pinMode(1, INPUT_PULLUP);
menuitem--;
pinMode(0, INPUT_PULLUP);
if (menuitem==0)
pinMode(7,OUTPUT);
{
pinMode(9,OUTPUT);//led1
menuitem=4; //change to 4 or more if adding
pinMode(10,OUTPUT);//led2
}}
pinMode(12,OUTPUT);//led3
LCD NOKIA 5510 (b)
if (page == 1 && menuitem==4)
else if (up && page == 2 ) {
{ if (Lamp3)
up = false;
{ Lamp3 = false;
contrast--;
Led3Off(); }
setContrast(); }
else
if (down && page == 1) {
{ Lamp3 = true;
down = false;
Led3On();}}
menuitem++;
if(page == 1 && menuitem ==3)
if (menuitem==5) //change to 5 or more if adding a
{ if (Lamp1)
new menuitem
{ Lamp1 = false;
{menuitem=1; }
Led1Off(); }
}else if (down && page == 2 ) {
else
down = false;
{ Lamp1 = true;
contrast++;
Led1On(); }}
setContrast(); }
else if (page == 1 && menuitem==1) {
if (middle) {
page=2;
middle = false;
}
if (page == 1 && menuitem==2)
else if (page == 2) {
{ if (Lamp2) // In the example video i added a relay to
page=1; }}}
void led2off and void led2on in the bottom of code.
void checkIfDownButtonIsPressed()
{ Lamp2 = false;
{ if (downButtonState != lastDownButtonState)
Led2Off(); }
{ if (downButtonState == 0)
else
{ down=true;
{ Lamp2 = true;
} delay(50); }
Led2On();
lastDownButtonState = downButtonState;
}}
}
LCD NOKIA 5510 (b)
void checkIfUpButtonIsPressed() if (menuitem==2)
{ if (upButtonState != lastUpButtonState) { display.setTextColor(WHITE, BLACK); }
{ if (upButtonState == 0) { else
up=true; } { display.setTextColor(BLACK, WHITE); }
delay(50); } display.print("Kuning: ");
lastUpButtonState = upButtonState; } if (Lamp2)
void checkIfSelectButtonIsPressed() { display.print("ON"); }
{ if (selectButtonState != lastSelectButtonState) else
{ if (selectButtonState == 0) { middle=true; } { display.print("OFF"); }
delay(50); } if (menuitem==3)
lastSelectButtonState = selectButtonState; } { display.setTextColor(WHITE, BLACK); } \
void drawMenu() else
{ if (page==1) { display.setTextColor(BLACK, WHITE); }
{ display.setTextSize(1); display.setCursor(7, 30);
display.clearDisplay(); display.print("Merah: ");
display.setTextColor(BLACK, WHITE); if (Lamp1)
display.setCursor(4, 0); { display.print("ON"); }
display.print("BLUECORE TECH"); else
display.drawFastHLine(0,8,83,BLACK); { display.print("OFF"); }
display.setCursor(0, 10); if (menuitem==4)
if (menuitem==1) { display.setTextColor(WHITE, BLACK); }
{ display.setTextColor(WHITE, BLACK); } else
else { display.setTextColor(BLACK, WHITE); }
{ display.setTextColor(BLACK, WHITE); } display.setCursor(7, 40);
display.print(">Contrast"); display.print("BIRU: ");
display.setCursor(7, 20);
LCD NOKIA 5510 (b)
if (Lamp3)
{ display.print("ON"); }
else void setContrast()
{ display.print("OFF"); } { display.setContrast(contrast);
display.display(); } display.display(); }
else if (page==2) void Led1On()
{ { digitalWrite(10,LOW); }
display.setTextSize(1); void Led1Off()
display.clearDisplay(); { digitalWrite(10,HIGH); }
display.setTextColor(BLACK, WHITE); void Led2On()
display.setCursor(15, 0); { digitalWrite(9,LOW); }
display.print("CONTRAST"); void Led2Off()
display.drawFastHLine(0,10,83,BLACK); { digitalWrite(9,HIGH); }
display.setCursor(5, 15); void Led3On()
display.print("Value"); { digitalWrite(12,LOW); }
display.setTextSize(2); void Led3Off()
display.setCursor(5, 25); { digitalWrite(12,HIGH); }
display.print(contrast);
display.setTextSize(2);
display.display(); }}
Do you have
any questions?
Send it to us! We hope you learned something new.

Anda mungkin juga menyukai