Вы находитесь на странице: 1из 24

int LED = 13; //pin 13 terhubung dengan LED

void setup(){

pinMode(LED,OUTPUT); //pin 13 sebagai output digital

void loop(){

digitalWrite(LED,HIGH);//LED menyala

delay(100);//LED akan menyala selama 500 ms

digitalWrite(LED,LOW);//LED mati

delay(100);//LED akan mati selama 500 ms

}
//Proyek #2: Blink Empat LED

int ledPertama = 2; //Inisialisasi setiap pin LED

int ledKedua = 4;

int ledKetiga = 6;

int ledKeempat = 8;

void setup()

pinMode(ledPertama, OUTPUT);//set LED pin sbg output

pinMode(ledKedua, OUTPUT);//set LED pin sbg output

pinMode(ledKetiga, OUTPUT); //set LED pin sbg output

pinMode(ledKeempat, OUTPUT);//set LED pin sbg output

void loop()
{

// Setiap LED berkedip 1000 milisecond (1 detik)

kedipkanLED(ledPertama, 100);

kedipkanLED(ledKedua, 100);

kedipkanLED(ledKetiga, 100);

kedipkanLED(ledKeempat, 100);

kedipkanLED(ledKeempat, 100);

kedipkanLED(ledKetiga, 100);

kedipkanLED(ledKedua, 100);

kedipkanLED(ledPertama, 100);

// Memanggil fungsi blok

void kedipkanLED(int pin, int durasi)

digitalWrite(pin, HIGH); //LED on

delay(durasi);

digitalWrite(pin, LOW); //LED off

delay(durasi);

Array adalah kumpulan variable dengan tipe yang sama. Sebuah array memiliki elemen2 yg dapat diakses
melalui indeksnya dimana indeks pertama dimulai dari nol, dengan kata lain bila sebuah array memiliki 5
elemen maka indeks nya yg dapat diakses mulai indeks ke-0 sampai ke-4. Format penulisan array tipe_data
nama_array[ ]={elemen_1,elemen_2,....,elemen_n};

Loops dengan for, struktur perulangan yg digunakan bila ingin melakukan pengulangan. Format penulisan
for(inisialisasi ; kondisi ; pencacah naik/turun){ ......pernyataan ; } misalnya contoh : for(int i = 0 ; x < 100 ; i++) {
println(x); } maka akan mencetak nilai variable i dari 0 sampai 99
/*

Proyek 3: Multiple LED

Menggunakan instruksi array dan for loop

*/

int timer = 100;

// membuat array dgn elemen nomor pin LED

int PinLed[] = {1, 2, 3, 4, 5, 6, 7, 8};

int JmlPin= 8; // indeks atau panjang array

void setup() {

//Gunakan for loop untuk inisialisai pin sbg output

for (int i = 0; i < JmlPin; i++) {

pinMode(PinLed[i], OUTPUT);

void loop() {

//loop dari pin rendah ke lebih tinggi

for (int i = 0; i < JmlPin; i++) {

digitalWrite(PinLed[i], HIGH);

delay(timer);

digitalWrite(PinLed[i], LOW);

//loop dari pin lebih tinggi ke pin rendah:

for (int i = JmlPin - 1; i >= 0; i--) {

digitalWrite(PinLed [i], HIGH);

delay(timer);

digitalWrite(PinLed[i], LOW);

}
/*

Proyek #5: Saklar Tekan

Untuk mengendalikan satu output LED

*/

int LED = 9; // inisialisasi pada LED pin 9

int SAKLAR = 7; // inisialisasi input sakalar tekan

int kondisiSaklar = 0; // Variabel val untuk menyimpan pernyataan pada pin input

void setup() {

pinMode(LED, OUTPUT); // set LED sbg Output

pinMode(SAKLAR, INPUT);//set saklar sbg input

void loop(){

kondisiSaklar = digitalRead(SAKLAR); //Membaca & //menyimpan Nlai input

// Mengecek input ketika HIGH

if (kondisiSaklar == HIGH) {

digitalWrite(LED, HIGH); // LED ON

} else {

digitalWrite(LED, LOW); // LED OFF


}

Rangkaian Switch pengendali LED dengan metode Pull-Up Resistor. Saat Switch tidak ditekan, pin 7 terhubung
ke Vcc sehingga kondisinya HIGH. Kondisi HIGH ini disimpan di variable kondisiSaklar. Saat isi variable
kondisiSaklar diuji di if(kondisiSaklar == HIGH) maka hasilnya adalah TRUE sehingga instruksi
digitalWrite(LED,HIGH).

// Proyek #7: Kontrol Traffic Lights

int lmpMerahKendaraan = 7; //indikator lmpu kendaraan

int lmpKuningKendaraan = 6;

int lmpHijauKendaraan = 5;

int lmpMerahPjlnkaki = 4; //indikator lmpu pjlan kaki

int lmpHijauPjlnkaki = 3;

int saklar = 2; // pin saklar ditmptkn pada pin 2

int WaktuPjln = 5000; // lama waktu melitas

unsigned long saklarTime; // waktu saat saklar ditekan

void setup() {

pinMode(lmpMerahKendaraan, OUTPUT);
pinMode(lmpKuningKendaraan, OUTPUT);

pinMode(lmpHijauKendaraan, OUTPUT);

pinMode(lmpMerahPjlnkaki, OUTPUT);

pinMode(lmpHijauPjlnkaki, OUTPUT);

pinMode(saklar, INPUT); // saklar pada pin 2 sbg input

// on-kan lmpu hijau kendaraan dan lmpu merah pjln kaki

digitalWrite(lmpHijauKendaraan, HIGH);

digitalWrite(lmpMerahPjlnkaki, HIGH);

void loop() {

int keadaanSaklar = digitalRead(saklar);

/* cek jika saklar ditekan dan tidak kurang 5 detik saat penekanan terakhir */

if (keadaanSaklar == HIGH && (millis() - saklarTime) > 5000) {

// panggil fungsi blok untuk merubah peralihan nyala lampu

PeralihanLmp();

void PeralihanLmp() {

digitalWrite(lmpHijauKendaraan, LOW); // hijau off

digitalWrite(lmpKuningKendaraan, HIGH); // kuning on

delay(2000); // tunggu 2 detik

digitalWrite(lmpKuningKendaraan, LOW); // kuning off

digitalWrite(lmpMerahKendaraan, HIGH); // merah on

delay(1000); // tunggu 1 detik

digitalWrite(lmpMerahPjlnkaki,LOW);//lmpmerahpejln off

digitalWrite(lmpHijauPjlnkaki, HIGH);//lmphijaupejln on

delay(WaktuPjln); //tunggu sampai preset periode waktu

// kedipkan lampu hijau pjln kaki

for (int x=0; x<10; x++) {


digitalWrite(lmpHijauPjlnkaki, HIGH);

delay(250);

digitalWrite(lmpHijauPjlnkaki, LOW);

delay(250);

// lampu merah pejln kaki on

digitalWrite(lmpMerahPjlnkaki, HIGH);

delay(500);

digitalWrite(lmpKuningKendaraan, HIGH); //kuning on

digitalWrite(lmpMerahKendaraan, LOW); // merah off

delay(1000);

digitalWrite(lmpHijauKendaraan, HIGH);

digitalWrite(lmpKuningKendaraan, LOW); //kuning off

// merekam waktu penekanan terakhir saklar

saklarTime = millis();

Pada fungsi loop yang akan dieksekusi berulang-ulang, ada sebuah fungsi tambahan yakni blok void
peralihanLmp( ) yang akan dipanggil oleh loop saat saklar ditekan. Jika saklar tidak ditekan maka Lampu Hijau
Traffic Light dan Lampu Merah pejalan kaki akan terus menyala. Saat saklar ditekan, terjadi perubahan di
mana lampu merah traffic light menyala sedangkan lampu hijau pejalan kaki menyala. Lalu lampu ini akan
berkedip sebanyak 10 kali. Perhatikan instruksi for(int i = 0; x < 10; x++) . Di sini pejalan kaki bisa menyeberang
dengan aman dan waktu preset saklar adalah 5 detik (5000 ms) dihitung dari (millis( ) - saklarTime)>5000).

Pada fungsi setup, seperti biasa ada inisiasi penggunaan pin digital, pin 2 sebagai input digital terhubung ke
button, pin 3 dan 4 ke LED untuk pejalan kaki serta 5,6,7 untuk Traffic Light. Pada fungsi setup juga diawal
dikondisikan Lampu traffic light HIJAU menyala dan LAMPU MERAH pejalan kaki menyala.
Kendali LED dengan PWM

int LED = 6;//inisialisasi pin LED

int i = 0; //variable cacah naik & turun unt for loop

void setup(){

pinMode(LED,OUTPUT);//LED sbg Output

void loop(){

for(i=0;i<255;i++){ //cacah naik dari 0 s/d 254

analogWrite(LED,i);//set intensitas cahaya LED

delay(20);//tunda 20 ms

//cacah turun dari 255 s/d 1

for(i=255;i>0;i--){

analogWrite(LED,i);//set intensitas cahaya LED

delay(20);//tunda 20 ms

}
}

Pada for pertama pada void loop, Intensitas cahaya LED dimulai dari i = 0 yakni LED msh mati kemudian nilai i
ditambah mulai dari 0 sampai 254, dan nyala LED berangsur-angsur menjadi terang sampai nilai i = 254. Pada
for yg kedua terjadi sebaliknya.

Misalnya ketika nila i = 1 maka pada voltmeter akan menunjukkan tegangan (1/255) * 5 V = .... V dan saat i =
254 maka nilai tegangan mendekati 5 V

Output analog pada arduino Uno menggunakan pin digital 3,5,6,9,10 dan 11. Metode nya menggunakan Pulse
Width Modulation dimana pin output PWM Arduino menyediakan 8-bit dgn fungsi analog write() dgn nilai
minimum adalah 0 untuk 0 volt dan 255 untuk 5 volt.

//Proyek #9: Aplikasi LED Bar Graph

const int pinPotensiometer = A0;//pin potensiometer A0

const int JmlhLed = 10; // jumlah elemen/LED bar graph

// mendeklarasikan array pada pin LED

int ledPin[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

void setup() {
// Menset semua pin array sbg output:

for (int i = 0; i < JmlhLed; i++) {

pinMode(ledPin[i], OUTPUT);

void loop() {

// Baca nilai potensiometer

int PembacaanPotensio = analogRead(pinPotensiometer);

// peskalaan hasil range input analog

int ledLevel = map(PembacaanPotensio, 0, 1023, 0, JmlhLed);

// loop LED array

for (int i= 0; i < JmlhLed; i++) {

// jika elemen pada array lebih kecil dari ledLevel,

// ON-kan pin

if (i < ledLevel) {

digitalWrite(ledPin[i], HIGH);

// OFF kan semua pin yang lebih tinggi dari ledLevel:

else {

digitalWrite(ledPin[i], LOW);

void loop(){

for(i=0;i<255;i++){ //cacah naik dari 0 s/d 254

analogWrite(LED,i);//set intensitas cahaya LED

delay(100);//tunda 20 ms
//Proyek #10: Baterai Tester

int LEDBiru = 11; // LED biru indikator baterai baru

int LEDHijau = 9; // LED hijau indikator baterai ok

int LEDMerah = 7; // LED merah indikator baterai lama

int pinProbe = A0; //pin A0 untuk probe positif baterai, //pin ground untuk probe negatif baterai

int NilaiAnalog = 0;

float tegangan = 0;

void setup()

pinMode(LEDBiru, OUTPUT);

pinMode(LEDHijau, OUTPUT);

pinMode(LEDMerah, OUTPUT);

void loop()

NilaiAnalog = analogRead(pinProbe);

tegangan = 0.0048*NilaiAnalog;
if ( tegangan >= 1.5 )

digitalWrite(LEDBiru, HIGH);

delay(2000);

digitalWrite(LEDBiru, LOW);

else if ( tegangan < 1.5 && tegangan > 1.3 )

digitalWrite(LEDHijau, HIGH);

delay(2000);

digitalWrite(LEDHijau, LOW);

else if ( tegangan <= 1.3 )

for(int z=0 ; z < 10 ; z++) {

digitalWrite(LEDMerah, HIGH);

delay(200);

digitalWrite(LEDMerah, LOW);

delay(200);

}}

}
/* Proyek #11 Sensor Cahaya,

LED menyala pada kondisi lingkungan Gelap, dan padam bila kondisi lingkungan terang

*/

#define pinLDR 0 //Inisialisasi Sensor LDR pin analog 0

#define pinLED 9 //inisialisasi LED pada pin 9

int pembacaanSensor = 0;//inisialsasi nilai terbaca sensor

int nilaiOutput = 0; //penskalaan nilai sensor

void setup() {

pinMode(pinLED, OUTPUT);

void loop() {

pembacaanSensor = analogRead(pinLDR);//baca nilai sensor

//penskalaan nilai sensor(0-1023) mjdi nilai output(0-500)

nilaiOutput = map(pembacaanSensor, 0, 1023, 0, 500);

//deteksi, jika nilai OutputValue <=300, kondisi gelap

if(nilaiOutput <=300)

digitalWrite(pinLED, HIGH); // On-kan LED


else

digitalWrite(pinLED, LOW); // Off-kan LED

delay(200);

Pada instruksi nilaiOutput = map(pembacaanSensor,0,1023,0,500); melakukan pemetaan dari nilai sensor (0-
1023) menjadi 0-500. Selanjutnya bila nilaiOutput <= 300 maka deteksi yg diterima sensor adalah gelap
sehingga LED menyala.

Sensor LDR dalam rangkaian input analog Arduino menggunakan rangkaian pembagi tegangan. Ketika LDR
mendapat intensitas cahaya tinggi/kondisi terang resistansinya menurun sehingga tegangan pada pin analog
menjadi lebih tinggi dan sebaliknya.

Komponen : Arduino UNO, Resistor 10K dan 220 ohm, LED dan LDR serta Voltmeter DC

/* Proyek #12: Sensor Suhu

Aplikasi monitor temperatur dengan indikator LED */

int LEDBiru = 11; // LED Biru indikator suhu dingin

int LEDHijau = 9; // LED kuning indikator suhu normal

int LEDMerah = 7; //LED merah indikator suhu panas

int pinLM35 = A0; //pin A0 untuk output ICLM35

float suhuPanas = 26; //set batas suhu panas 26oC


float suhuDingin= 20; //set batas suhu dingin 20oC

float sensor = 0;

float tegangan = 0;

int celsius = 0;

void setup()

pinMode(LEDBiru, OUTPUT);

pinMode(LEDHijau, OUTPUT);

pinMode(LEDMerah, OUTPUT);

void loop()

Serial.begin(9600);

sensor = analogRead(pinLM35);

//konversi sensor ke milivolt

tegangan=(sensor*5000/1024);

celsius = tegangan/10;//konversi milivol ke celcius

Serial.print(sensor);

Serial.println();

Serial.print("Temperatur :");

Serial.print(celsius);

Serial.print(" oC");

Serial.println();

if ( celsius < suhuDingin )

digitalWrite(LEDBiru, HIGH);

delay(2000);

digitalWrite(LEDBiru, LOW);
}

else

if ( celsius >= suhuDingin && celsius <= suhuPanas)

digitalWrite(LEDHijau, HIGH);

delay(2000);

digitalWrite(LEDHijau, LOW);

else if ( celsius > suhuPanas )

for(int z=0 ; z < 10 ; z++){

digitalWrite(LEDMerah, HIGH);

delay(200);

digitalWrite(LEDMerah, LOW);

delay(200);

}}

}
// Proyek #13: Sensor PIR

int ledPin = 11;//LED ditempatkan pd pin 11

int pinPIR = 2; //pinout sensor PIR pada pin 2 arduino

int val = 0;//variabel untuk membaca status pin

int pinbuzzer = 6;//buzzer ditmptkan pd pin 6

void setup() {

pinMode(ledPin, OUTPUT);//deklarasi LED sbg output

pinMode(pinPIR, INPUT); //deklarasi sensor sbg input

pinMode(pinbuzzer, OUTPUT); //deklarasi buzer sbg output

void loop(){

val = digitalRead(pinPIR);//baca input sensor

if (val == HIGH) { // cek jika input bernilai HIGH

digitalWrite(ledPin, HIGH);//on-kan LED

tone(pinbuzzer, 500);//bunyikan alarm/buzer


delay(2000);//tunda selama 2 detik

} else {

digitalWrite(ledPin, LOW); //off-kan LED

noTone(pinbuzzer);//off-kan buzzer/alarm

/Proyek #14: Sensor Jarak mengetahui jarak obyek dengan indikator LED/

int LEDKuning = 7; //LED kuning indikator jarak 10cm

int LEDMerah = 8; //LED merah indikator jarak 20cm

int LEDHijau = 9; // LED kuning indikator jarak 30cm

int LEDBiru = 11; // LED Biru indikator jarak 40cm

int pinSensorjrk = A0; //pin A0 pin sensor

void setup(){

pinMode(LEDKuning, OUTPUT);//deklarasikn semua led

pinMode(LEDMerah, OUTPUT);//sebagai output

pinMode(LEDHijau, OUTPUT);
pinMode(LEDBiru, OUTPUT);

Serial.begin(9600);//buka port serial

void loop()

int val_sensor = analogRead(pinSensorjrk);

//lihat pembacaan sensor pada serial monitor/kaliberasi

Serial.print("nilai analog sensor:");

Serial.print(val_sensor);

Serial.println();

//fungsi pengaturan switch case, uji nilai val_sensor

switch(val_sensor){

//perhatikan tabel kaliberasi sensor

case 482: //untuk jarak 10 cm

digitalWrite(LEDKuning, HIGH);//on-kan led kuning

break;

case 271: //untuk jarak 20 cm

digitalWrite(LEDMerah, HIGH);//on-kan led merah

break;

case 193: //untuk jarak 30 cm

digitalWrite(LEDHijau, HIGH);//on-kan led hijau

break;

case 151: //untuk jarak 40 cm

digitalWrite(LEDBiru, HIGH);//on-kan led biru

break;

case 83: //untuk jarak 80 cm, kedipkan semua led

digitalWrite(LEDKuning, HIGH);

digitalWrite(LEDMerah, HIGH);

digitalWrite(LEDHijau, HIGH);
digitalWrite(LEDBiru, HIGH);

delay(200);

digitalWrite(LEDMerah, LOW);

digitalWrite(LEDBiru, LOW);

digitalWrite(LEDHijau, LOW);

digitalWrite(LEDKuning, LOW);

delay(200);

break;

default:

digitalWrite(LEDBiru, LOW);

digitalWrite(LEDHijau, LOW);

digitalWrite(LEDMerah, LOW);

digitalWrite(LEDKuning, LOW);

//secara default semua led off

delay(10);//beri waktu tunda/jeda pmbacaan sensor

}
#include<LiquidCrystal.h>

#define sensor 0

int Vin;

float Temperature;

float TF;

LiquidCrystal lcd(12,11,5,4,3,2);

void setup()

lcd.begin(16,2);

lcd.print("Temperature: ");

void loop()

Vin = analogRead(sensor);

Temperature= Vin/9.31;

TF = ((9*Temperature)/5)+32;

lcd.setCursor(0, 1);
lcd.print(TF);

lcd.print(" F");

delay(1000);

#include<LiquidCrystal.h>

#define sensor 0

int Vin;

float Temperature;

float TF;

LiquidCrystal lcd(12,11,5,4,3,2);

void setup()

analogReference(INTERNAL);

lcd.begin(16,2);

lcd.print("Temperature: ");

void loop()

Vin = analogRead(sensor);

Temperature= Vin/9.31;

TF = ((9*Temperature)/5)+32;

lcd.setCursor(0, 1);

lcd.print(TF);

lcd.print(" F");

delay(1000);

In the setup method we make a call to the analogReference method. This allows us to set the reference
voltage of the Arduino (i.e. the value used as the top of the input range). The reason we are using this is
because the LM35 only produces voltages from 0 to +1V, and setting the reference voltage to INTERNAL will
set it to 1.1 volts, as a result significantly improving the precision

Inside the loop method, we begin by reading the value from the analogue input, and then divide that reading
by 9.31. The reason we divide by 9.31 is because the range of our reading is 1024 and as we have set our
reference voltage to be 1.1 volts we calculate each “step” in the analog reading as being approximately equal
to 0.001074 volts(1.1/1024), or 1.0742 millivolts . As the LM35 reports 1 degree Celsius per 10 millivolts, this
means that for every (10 / 1.0742), we detect a one degree change i.e. every 9.31; so by dividing the reading
by 9.31 we get our temperature reading in Celsius.

Вам также может понравиться