Arduino Starter Kit v2
Arduino Starter Kit v2
Menurut wikipedia:
Dalam diskusi sehari-hari dan di forum internet, Gambar 1.2 Project board dan Kabel Jumper
mikrokontroller sering dikenal dengan sebut µC, uC,
Untuk praktek, kita akan menggunakan project
atau MCU. Terjemahan bebas dari pengertian
board (ada yang menyebutnya dengan istilah bread
tersebut, bisa dikatakan bahwa mikrokontroller
board) dan beberapa kabel jumper untuk
adalah komputer yang berukuran mikro dalam satu
menghubungkan antara komponen dan Arduino
chip IC (integrated circuit) yang terdiri dari processor,
(Gambar 1.2). Dengan project board kita tidak perlu
memory, dan antar muka yang bisa diprogram. Jadi
menyolder rangkaian sehingga relatif mudah dan
disebut komputer mikro karena dalam IC atau chip
cepat dalam merangkai. Project board memungkinkan
mikrokontroller terdiri dari CPU, memory, dan I/O
kita untuk membangun dan membongkar rangkaian
yang bisa kita kontrol dengan memprogramnya. I/O
dengan cepat sehingga sangat cocok untuk
juga sering disebut dengan GPIO (General Purpose
eksperimen. Tapi jika kita ingin membuat rangkaian
Input Output Pins) yang berarti : pin yang bisa kita
yang permanen, maka kita harus menggunakan PCB.
program sebagai input atau output sesuai kebutuhan.
unsigned int x
Contoh
int ledPin = 13; x = 0;
x = x - 1; // x sekarang 65535
Syntax x = x + 1; // x sekarang 0
Int var = val;
2.3 Word
var – nama variable intejer Anda
Sebuah word menyimpan 16 bit angka dari 0 sampai
val – nilai yang diberikan dalam variable Anda
65535 sama seperti unsigned int
Contoh
Tips Coding
word w = 10000;
Saat beberapa variable dibuat untuk melebihi kapasitas
maksimal, maka nilai tersebut akan membalik ke 2.4 byte
minimal kapasitas, begitu juga sebaliknya. byte menyimpan sebuah 8-bit dari 0 samapi 255
Contoh
int x
byte b = B10010; // "B" is the binary
x = -32,768; formatter (B10010 = 18 decimal)
x = x - 1; // x sekarang menjadi 2.5 float
//32,767 – berbalik ke arah negatif.
Tipe data untuk angka floating point, sebuah angka
yang mempunyai titik decimal. Floating-point sering
x = 32,767; dugunakan pada nilai yang mendekati analog dan nilai
yang berkesinambungan karena mempunyai resolusi
x = x + 1; // x sekarang menjadi yang lebih tinggi dari pada intejer. Floating-point
//32,768 – berbalik kea rah positif
mempunyai besar 3.4028235E+38 dan -
3.4028235E+38. Sehingga dapat menyimpan 32bit
2.2 Unsigned Int (4byte. ) informasi.
Unsign int sama seperti int, namun dalam pemberian Float hanya mempunyai kepresisian 6 – 7 dijit
angka negative tidak diperkenankan, sebagai gantinya decimal. Yang maksudnya total angka dari dijitnya
nilai negative digantikan nilai positif sehingga bukan angka dari titik kanan setelah decimal. Tidak
mempunyai range 0 sampai 65,535 (2^16)-1). seperti platform, dimana Anda dapat mendapatkan
Contoh akurasi dari penggunaan tipe data double (sampai 15
unsigned int ledPin = 13; dijit) dalam arduino, double adalah besarnya sama
seperti float.
Syntax
Angka Floating-point belum tentu tepat, dan bisa
unsigned int var = val;
menghasilkan hasil yang tidak biasa saat di komparasi.
Seperti misalkan 6.0 / 3.0 hasilnya mungkin bukan 2.0 // see Integer Constants for explanation
Anda harus mengganti dan mengecek nya karena nilai of the 'L'
absolute berbeda dengan angka yang memiliki Syntax
ketelitian.
long var = val;
x = 1; {
// myArray[9] contains 11
Tipe dara char adalah angka encoding dari -128 sampai
127 //myArray[10] is invalid and contains
random information (other memory address)
Contoh
char myChar = 'A';
Tidak seperti BASIC atau JAVA, dalam compiler C tidak // ...
mengecek untuk mengetahui jika akses array sudah }
sesuai batas besaran array yang Anda deklarasikan
sebelumnya. 2.14 string
Text string dapat dituliskan ke dalam dua cara, Anda
Sebuah penugasan dalam sebuah array dapat menggunakan tipe data String yang merupakan
mySensVals[0] = 10; bagian dari dasar versi 0019, atau Anda dapat
untuk mendapatkan sebuah nilai dari array menggunakan sebuah string luar dari sebuah array tipe
x = mySensVals[4]; char dan null-terminatenya.
}
kemungkinan – kemungkinan untuk deklarasi
srting
2.13 Void deklarasi sebuah array dari chars tanpa
Kata kunci void hanya digunakan dalam inisialisasi seperti dalam Str1
mendelarasikan fungsi. Hal ini untuk mendandakan deklarasi sebuah array dari chars (dengan
bahwa fungsi itu diharapkan untuk memberi informasi satu extra char) dan compiler akan
dari fungsi yang telah dipanggil. menambah karakter null seperti dalam Str2
Contoh menambahkan karakter null secara lagsung,
// actions are performed in the Str3
functions "setup" and "loop" inisial dengan sebuah konstanta string dalam
tanda kutipan, compiler akan menghitung
// but no information is reported
lebar konstanta array untuk panjang
to the larger program
kontanta string dan sebuah pengahiran
void setup() karakter null, Str4
{ inisial array dengan menuliskan besar dan
konstanta string, Str5
// ...
inisial array, memberi ruang ekstra untuk string
} yang lebih besar, Str6
2.14.1 Ahiran Null
Biasanya, banyak string yang diahiri dengan
void loop() sebuah karakter null (kode ASCII 0). Hal ini
{ membolehkan fungsi (seperti Serial.print() ) untuk
memanggil diahir string. Selain itu, meraka akan
melanjutkan pembacaan byte subskuen dari memori 4 Penghitungan
yang bukan merupakan bagian dari string. Hal ini 4.1 abs(x)
dimaksud saat Anda membutuhkan string yang Menghitung nilai absolute dari sebuah cacah
memiliki ruang untuk karakter yang lebih banyak dari
teks yang anda inginkan. Ini kenapa Str2 dan Str5 Parameter
membutuhkan 8 karakter sedangkan “arduino” hanya
x : cacah perhatian
7, posisi yang terahir secara otomatis akan ditempai
oleh karakter null.Str4 akan otomatis sebesar 8 karena tentang abs() berfungsi untuk penerapan, hindari
karakter, satu dari external null. Dalam Str3, kami penggunaan fungsi yang terdapat tanda kurang, hal akan
mempunyai penyertaan karakter null secara explicit. menghasilkan hasil yang salah
abs(a++); // avoid this - yields incorrect
2.14.2 Menyatukan string yang panjang results
Anda dapat menyatukan string yang panjang
a++; // use this instead -
seperti berikut :
abs(a);// keep other math outside the
char myString[] = "This is the first line" //function
“second line”
constrain (x,a,b)
2.14.3 Array dari string contrain merupakan angka batasan dalam sebuah
char* myStrings[]={"This is string 1", range
"This is string 2", "This is string 3",
{
Contoh
Serial.println(myStrings[i]); sensVal = constrain(sensVal, 10, 150);
// batas range dari nilai sensor antara 10
delay(500);} //dan 150
3 String
4.2 map(value, fromLow, fromHigh, toLow,
Kelas String, bagian dari dasar versi 0019,
membolehkan kita memanipulasi string dari teks lebih
toHigh)
komplek dari cara array karakter yang digunakan. Anda Memetakan ulang sebuah angka dari sebuah range ke
dapat menggabungkan String, menambahkannya yang lainnya. Ini adalah sebuah nilai dari fromLow yang
mencari dan megganti substring dan sebagainya. Hal itu sudah dipetakan ke toLow, sebuah nilai dari fromHigh
lebih banyak mengambil memori dari pada array yang pada toHigh.
sederhana. Contoh
y = map(x, 1, 50, 50, 1);
// action B
Untuk cara lain, statemen if selalu dalam keadaan true
}
if (x > 120) digitalWrite(LEDpin, HIGH);
if (x > 120) digitalWrite(LEDpin, HIGH); Else juga dapat digunakan secara bertingkat sampai
if (x > 120){ digitalWrite(LEDpin, dengan tak terhingga selama proses yang kita
HIGH); } inginkan belum menyatakan sebuah kebenaran atau
if (x > 120)
berlogika true, berikut contoh kodenya
if (pinFiveInput < 500)
{
{
digitalWrite(LEDpin1, HIGH);
// do Thing A
digitalWrite(LEDpin2, HIGH);
}
}
else if (pinFiveInput >= 1000)
// semua dianggap benar
{
6.2 Comparison Operators // do Thing B
x == y (x sama dengan y)
}
x != y (x tidak sama dengan y)
else
x < y (x lebih kecil dari y)
{
x > y (x lebih besar dari y)
// do Thing C
x <= y (x lebih kecil sama dengan y)
{
Syntax
switch (var) { for (int i=0; i <= 255; i++){
case label: analogWrite(PWMpin, i);
sens = analogRead(sensorPin);
Parameters
expression - (boolean) statemen C mengoreksi true if (sens > threshold){ // bail out
atau false on sensor detect x = 0;
break;
Contoh }
var = 0;
delay(50);
while(var < 200){ //mengulang sesuatu
sampai 200 kali var++; }
6.9 goto
6.4 do-while Untuk melompati alur program ke program yang
Perulangan do bekerja seperti cara while sudah kita beri label.
melakukan perulangan, perulangan do hanya Syntax label:
mengerjakan sekali di ahir statemen.
do goto label; // mengrirm alur ke program yang telah
diberi label.
{
Tips
//statement block
Dalam menggunakan goto, adalah tidak lazim dalam
}
pemrograman C. beberapa buku memberikan gambaran
while (test condition); bahwa statemen goto justru akan mengganggu jalannya
alur program, karena tidak bisa stemen yang ada didalam
goto tidak dapat dikenali dan tidak dapat di debug,
Contoh sehingga hasilnya pun tidak bisa kita ketahui. Berikut
do contoh programnya:
}
if (analogRead(0) > 250){ goto }
bailout;}
pinMode(ledPin, OUTPUT);
int checkSensor(){
// set digital pin sebagai output
if (analogRead(0) > 400) { return 1;
}
else{
pinMode(ledPin, OUTPUT);
Parameters
pin: nomer pin // set digital pin 13 sebagai output
value: HIGH or LOW pinMode(inPin, INPUT);
void setup()
void loop()
{
{
pinMode(ledPin, OUTPUT);
val = digitalRead(inPin); // baca input
// sets the digital pin as output pin
} digitalWrite(ledPin, val);
// setup serial
Setelah mengganti acuan analog, pembacaan pertama
pada analogRead() mungkin idak bisa akurat. Jika Anda }
menggunakan acuan voltase external (digunakan untuk
pin AREF), Anda harus mennyeting acuan analog pada
void loop()
EXTERNAL sebelum memanggil analogRead(). selain
itu, Anda bisa mengaktifkan acuan voltase bersamaan {
(internally generated) dan pada pin AREF, dapat val = analogRead(analogPin);
merusak mikrokontroler pada board Arduino.
// read the input pin
}
Syntax
analogWrite(pin, value) 9 Advance I/O
9.1 pulseIn()
parameter Fungsi ini digunakan untuk membaca sebuah pulsa
pin: pin yang untuk ditulis (HIGH atau LOW) pada sebuah pin
value : putaran penugasan : antara 0 (selalu off) dan
Syntax
255 (selalu on).
pulseIn(pin,value) pulseIn(pin, value,
Pada output PWM yang dihasilkan pada pin 5 dan timeout)
6 akan mempunyai putaran penugasan yang lebih
tinggi. Hal ini dikarenakan interaksi dengan fungsi Parameter
millis() dan delay() yang membagi sesame penggunaan pin : nomer pin yang akan dibaca pulsa nya (int) value :
internal timer yang digunakan oleh output PWM. tipe dari pulsa (HIGH atau LOW) (int)
timeout (optional) : angka dalam mikrosekon waktu
Contoh tunggu pulsa untuk memulai, defaultnya adalah 1 detik
Set output pada LED dengan nilai yang disesuaikan dari (unsigned long)
nilai potensiometer
Contoh
int ledPin = 9; // LED connected to int pin = 7;
digital pin 9
unsigned long duration;
int analogPin = 3;
void setup() }
{ void loop()
pinMode(ledPin, OUTPUT); {
} }
void loop()
9.9 shiftOut()
{
Shift out adalah sebuah byte dari data dalam satu
val = analogRead(analogPin); // read bit per satuan waktu.
the input pin
}
dataPin dan clockPin harus selalu dikonfigurasi sebagai
output untuk memanggil pinMode() void loop() {
//count up routine
// Do this for MSBFIRST serial int data =
500; for (int j = 0; j < 256; j++) {
// shift out highbyte
//ground latchPin and hold low for as long
shiftOut(dataPin, clock, MSBFIRST, (data
as you are //transmitting
>> 8));
digitalWrite(latchPin, LOW);
// shift out lowbyte
shiftOut(dataPin, clockPin, LSBFIRST, j);
shiftOut(data, clock, MSBFIRST, data);
//return the latch pin high to signal chip
that it
// Or do this for LSBFIRST serial data =
//no longer needs to listen for
500;
information
// shift out lowbyte
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clock, LSBFIRST, data); delay(1000);
void loop()
Parameter
ms : waktu dalam millisecond (unsigned long) {
digitalWrite(outPin, HIGH); //
Contoh sets the pin on
int ledPin = 13; // LED connected to
delayMicroseconds(50); // pauses for
digital pin 13
50 microseconds
void setup()
{ digitalWrite(outPin, LOW); // sets the
pin off
pinMode(ledPin, OUTPUT);
delayMicroseconds(50); // pauses for
// sets the digital pin as output
50 microseconds
}
}
void loop()
Mengkonfigurasi pin nomer 8 sebagai pin output,
{ memberikan pulsa dengan waktu 100 microsecond per
digitalWrite(ledPin, HIGH); // periode.
sets the LED on
digitalWrite(ledPin, LOW); //
sets the LED off
11.2 delayMicroseconds()
Memberi jeda program dalam beberapa waktu
(mikrodetik), 1000 microsecond adalah 1 milisecond
Project 1 - LED Flasher
Komponen yang dibutuhkan 10, kaki ini adalah kaki Anoda LED yang harus
terhubung ke pin positif, sedangkan kaki LED yang
pendek terhubung ke ground (GND), karena kaki
Breadboard LED ini merupakan kaki Katoda LED.
// Project 1 - LED
Jumper Flasher int ledPin = 10;
void setup() {
pinMode(ledPin, OUTPUT);
Rangkaian
}
Pertama setelah memastikan software
void loop() {
arduino sudah terinstall dengan baik dan benar
selanjutnya kita hubungkan semuanya seperti digitalWrite(ledPin,
HIGH); delay(1000);
gambar dibawah ini: digitalWrite(ledPin,
LOW); delay(1000);
Program
Breadboard
void loop() {
LED Kuning
2 x LED Hijau
Rangkaian
Hubungkan LED dan push button sesuai dengan
diagram yang ada pada halaman sebelumnya, lalu
hubungkan LED pada pin 8,9,10,11 dan 12 serta push // Project 4 - Interactive Traffic Lights
Int carRed = 12; // assign the car lights int
button pada pin 2. carYellow = 11;
int carGreen = 10;
int pedRed = 9; // assign the pedestrian lights
Program int pedGreen = 8;
int button = 2; // button pin
int crossTime = 5000; // time allowed to cross
Masukan kode pada halaman arduino IDE, cek kembali unsigned long changeTime; // time since button
pressed
lalu klik upload.
void setup() {
Setelah berhasil, ketika menjalakan program kita akan pinMode(carRed, OUTPUT);
void setup() {
melihat trafic light untuk mobil akan berwarna hijau, pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
dan trafic light untuk pejalan kaki berwarna merah. pinMode(carGreen, OUTPUT);
Ketika push button kita tekan, program akan mengecek pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
keadaan trafic light untuk mobil agar berubah menjadi pinMode(button, INPUT); // button on pin 2
merah, setelah itu giliran lampu untuk pejalan kaki // turn on the green light
digitalWrite(carGreen, HIGH);
yang akan berubah warna menjadi hijau, waktu tunggu digitalWrite(pedRed, HIGH);
yang di tentukan dari mulai penekanan tombol hingga }
void loop()
Jumper
{
// Read in value from LDR
lightVal = analogRead(ldrPin);
// Turn LED on
Rangkaian digitalWrite(ledPin, HIGH);
// Delay of length lightVal
delay(lightVal);
// Turn LED off
digitalWrite(ledPin, LOW);
// Delay again
delay(lightVal);
}
Program
Project 5 – Pushbutton
void setup() {
// initialize the LED pin as an output:
Jumper pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an
input:
pinMode(buttonPin, INPUT);
}
Rangkaian
Pertama hubungkan 1 kaki pushbutton dihubungkan void loop() {
dengan 1 kaki resistor dan pin digital 7, kaki pushbutton // read the state of the pushbutton value:
yang lain dihubungkan dengan VCC dan satu kaki buttonState = digitalRead(buttonPin);
resistor yang lain di hubungkan dengan ground. Lihat // check if the pushbutton is pressed.
contoh diagram rangkaian di atas. // if it is, the buttonState is HIGH:
Sedangkan untuk led kita bisa menghubungkannya if (buttonState == HIGH) {
// turn LED on:
dengan ke kaki 13 setelah melalui resistor 220Ω, digitalWrite(ledPin, HIGH);}
sedangkan kaki katoda LED dimasukan ke ground else {
arduino, pada project ini bisa digunakan juga LED // turn LED off:
digitalWrite(ledPin, LOW);
internal yang telah disediakan di papan arduino, }
sehingga kita tidak perlu menambahkan led lagi. }
Project 6 – Pushbutton Switch
Project ini hampir sama dengan project
sebelumnya, komponen yang digunakanpun sama Program
dengan project sebelumnya, akan tetapi pada kali ini /* switch
kita akan menggunakan pushbutton sebagai switch Each time the input pin goes from LOW to
yang dimana akan menghidupkan LED (atau apapun HIGH (e.g. because of a push-button press),
the output pin is toggled from LOW to HIGH
yang terhubung ke pin LED) dari keadaan mati atau
or HIGH to LOW. There's a minimum delay
mematikan LED dari keadaan hidup hanya dengan between toggles to debounce the circuit
menggunakan 1 pushbutton. (i.e. to ignore noise).
*/
Komponen yang dibutuhkan int inPin = 2; // the number of the input
pin
Tactile Switch int outPin = 13; // the number of the output
pin
Push Putton
int state = HIGH; // the current state of
the output pin
220Ω Resistor int reading; // the current reading
from the input pin
int previous = LOW; // the previous
reading from the input pin
10KΩ Resistors
// the follow variables are long's because
the time, measured in miliseconds,
// will quickly become a bigger number than
LED Hijau can be stored in an int.
long time = 0; // the last time the
output pin was toggled
Breadboard long debounce = 200; // the debounce time,
increase if the output flickers
void setup()
{
Jumper
pinMode(inPin, INPUT);
pinMode(outPin, OUTPUT);
}
void loop()
Rangkaian {
Kita akan menghubungkan 3 kabel ke papan arduino, reading = digitalRead(inPin);
VCC, Ground dan pin digital 2, pertama 1 kaki
// if the input just went from LOW and
pushbutton dihubugnkan dengan 1 kaki resistor dan HIGH and we've waited long enough
pin digital 7, kaki pushbutton yang lain dihubungkan // to ignore any noise on the circuit,
dengan VCC dan satu kaki resistor yang lain di toggle the output pin and remember
// the time
hubungkan dengan ground. Lihat contoh diagram if (reading == HIGH && previous == LOW &&
rangkaian di atas. millis() - time > debounce) {
Sedangkan untuk led kita bisa menghubungkannya if (state == HIGH)
state = LOW;
dengan ke kaki 13 setelah melalui resistor 220Ω, else
sedangkan kaki katoda LED dimasukan ke ground state = HIGH;
arduino, pada project ini bisa digunakan juga LED
time = millis();
internal yang telah disediakan di papan arduino,
}
sehingga kita tidak perlu menambahkan led lagi.
digitalWrite(outPin, state);
previous = reading;
}
Project 7– Two button and LED
Pada project sebelumnya kita sudah mencoba
menggunakan pushbutton sebagai switch, pada
project kali ini kita akan mencoba memodifikasi Rangkaian
program dan skematik dari program pushbutton.
sensorValue = analogRead(kPinPot);
Breadboard ledBrightness = map(sensorValue, 0, 1023, 0,
255);
analogWrite(kPinLed, ledBrightness);
}
LED Merah
Potensio 10k
220Ω Resistor
Jumper
Breadboard
LED RGB
Potensio 10k
Program
void setup()
{
pinMode(kPinLed_R, OUTPUT);
Rangkaian pinMode(kPinLed_G, OUTPUT);
pinMode(kPinLed_B, OUTPUT);
Hubungkan setiap pin potensio 1 dan 3 ke vcc dan }
ground, hubungkan setiap pin potensio 2 (Pin tengah)
void loop()
ke pin analog arduino A0, A1 dan A2, karena pada RGB
{
kita menggunakan jenis RGB common Anoda maka
semua pin yang terhubung dengan warna RGB diberi int potValue;
arus positif, disini kita akan menggunakan tegangan int ledValue;
void loop() {
for (pos = 0; pos <= 180; pos += 1) {
// goes from 0 degrees to 180 degrees
Jumper // in steps of 1 degree
myservo.write(pos);
// tell servo to go to position in variable
//'pos'
delay(15);
Rangkaian // waits 15ms for the servo to reach the
//position
}
for (pos = 180; pos >= 0; pos -= 1) {
// goes from 180 degrees to 0 degrees
myservo.write(pos);
// tell servo to go to position in variable
//'pos'
delay(15);
// waits 15ms for the servo to reach the
//position
}
}
int potpin = 0;
// analog pin used to connect the
Breadboard //potentiometer
int val;
// variable to read the value from the
//analog pin
Servo SG9g/90 void setup() {
myservo.attach(9);
// attaches the servo on pin 9 to the servo
//object
}
Potensio 10k
void loop() {
val = analogRead(potpin);
// reads the value of the potentiometer
//(value between 0 and 1023)
Jumper val = map(val, 0, 1023, 0, 180);
// scale it to use it with the servo
//(value between 0 and 180)
myservo.write(val);
// sets the servo position according to the
//scaled value
Rangkaian delay(15);
// waits for the servo to get there
}
LATIHAN
void setup() {
// set up the LCD's number of columns and
Potensio 10k //rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
Jumper
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since
//counting begins with 0):
Rangkaian lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
void setup() {
// set up the LCD's number of columns and
rows:
lcd.begin(16, 2);
// initialize the serial communications:
Serial.begin(9600);
}
void loop() {
// when characters arrive over the serial
port...
if (Serial.available()) {
// wait a bit for the entire message to
//arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
LCD – Scroll LCD – Text Direction
Program
Program
// include the library code:
// include the library code: #include <LiquidCrystal.h>
#include <LiquidCrystal.h>
// initialize the library with the numbers
// initialize the library with the numbers of the interface pins
//of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int thisChar = 'a';
void setup() {
// set up the LCD's number of columns and void setup() {
//rows: // set up the LCD's number of columns and
lcd.begin(16, 2); rows:
// Print a message to the LCD. lcd.begin(16, 2);
lcd.print("hello, world!"); // turn on the cursor:
delay(1000); lcd.cursor();
} }
}
Project 14 –Ultrasonic
Kali ini kita akan menggunakan sensor ultrasonic kembalinya gelombang suara dan mengonversi waktu
sebagai penghitung jarak, jarak akan di tampilkan tersebut menjadi jarak.
menggunakan ukuran cm atau inch, jarak yang bisa
terhitung normal oleh sensor ini berkisar 3 cm sampai Program
300 cm lebih dari itu terkadang mendapat error yang
lebih besar.
int trigger=7; //”trigger” on pin 7.
Komponen yang dibutuhkan int echo=6; //”echo” on pin 6.
long time=0;//The value “time” will safe the
//time between transmission and
Breadboard //returning of the soundwave.
long dist=0; //The value “dist” will save
the calculated distance. It will
//start with “0”. Instead of “int” we are
using “long” for this value, to save a
Ultrasonik //bigger number.
void setup()
{
Serial.begin (9600); //Starting the serial
communication. It will send the
//data from the arduino board to the
Jumper computer to show it on the serial monitor.
pinMode(trigger, OUTPUT); //”trigger” (Pin
7) is an output.
pinMode(echo, INPUT); //”echo” (Pin 6) is an
input.
Rangkaian }
void loop()
{
digitalWrite(trigger, LOW); //Low voltage on
the trigger pin to produce a
//clear signal.
delay(5); //….for 5 milliseconds.
digitalWrite(trigger, HIGH); //Creating the
soundwave.
delay(10); //..for 10 milliseconds.
digitalWrite(trigger, LOW); //Stop creating
the soundwave.
Pada ultrasonik HC-SR04 memiliki 4 pin yaitu pin vcc, if (dist >= 200 || dist <= 0) //If the
//distance gets over 200cm OR under 0cm,
ground, trigger dan echo. {
Serial.println("No measurement"); //So the
Hubungkan pin vcc dan groung dari sensor ke arduino, //serial monitor displays “No measurement”
pin trigger ke pin 7 dan pin echo ke pin 6 arduino. }
else //otherwise
Cara kerja singkat dari sensor ini yaitu ketika pin trigger {
di beri sinyal pendek (5v) dari mikrokontroler maka Serial.print(dist);
Serial.println("cm");
sensor mengeluarkan gelombang suara, dan ketika }
gelombang tersebut memantul mengenai dinding atau delay(1000);
objek lainya gelombang tersebut kembali, sensor akan }
int trigger=12;
Breadboard int echo=13;
long time=0;
long dist=0;
int piezo=5; //Piezo speaker on pin 5.
void setup()
Ultrasonik {
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(piezo, OUTPUT); //The pin (5)
Jumper connected to the piezo is a output.
}
void loop()
{
digitalWrite(trigger, LOW);
Buzzer delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
time = pulseIn(echo, HIGH);
dist = (time/2) / 29.1;
Rangkaian if (dist >= 500 || dist <= 0)
{
Sama seperti skematik projek sebelumnya, akan tetapi Serial.println("No measurement");
kita akan menambahkan buzzer, kaki positif buzzer }
dihubungkan ke pin digital 5 arduino, dan pin negatif ke else
{
ground. Serial.print(dist);
Serial.println("cm");
Perhatikan lambang positif pada buzzer menunjukan }
kaki positif pada buzzer. if (dist <= 20) //If the measured distance
gets 20 or shorter...
{
digitalWrite(piezo,HIGH); //..the piezo
should beep
}
else //If not ...
{
digitalWrite(piezo,LOW); //..the speaker
should be quiet.
}
delay(1000);
}
int trigger=7;
Breadboard int echo=6;
long time=0;
int LED=12;
long dist=0;
void setup()
Ultrasonik {
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(12, OUTPUT);
Jumper }
void loop()
{
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
Rangkaian delay(10);
digitalWrite(trigger, LOW);
Masih menggunakan skematik yang sama akan tetapi time = pulseIn(echo, HIGH);
ditambahkan LED sebagai penanda, hubungkan led ke dist = (time/2) / 29.1;
pin digital 13 pada arduino, atau bisa menggunakan if (dist >= 500 || dist <= 0)
{
LED internal yang terdapat di Arduino.
Serial.println("No measurement");
}
Caara kerjanya yaitu ketika posisi jarak ultrasonik else
sudah pada jarak tertentu maka led akan berkedip, jika {
makin dekat kedipan led akan semakin cepat, begitu Serial.print(dist);
Serial.println("cm");
sebaliknya.
}
if (dist <= 40)
{
digitalWrite(LED, HIGH);
delay(dist*3);
digitalWrite(LED, LOW);
delay(dist*3);
}
LATIHAN
Rangkaian
Breadboard
Program
Relay Modul
#include "DHT.h"
DHT dht;
Jumper
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Status\tHumidity
Rangkaian
(%)\tTemperature (C)\t(F)");
void loop()
{
delay(dht.getMinimumSamplingPeriod());
Serial.print(dht.getStatusString());
Serial.print("\t");
Serial.print(humidity, 1);
Serial.print("\t\t");
Serial.print(temperature, 1);
Serial.print("\t\t");
Serial.println(dht.toFahrenheit(temperature)
, 1);
}
LATIHAN