• Tidak ada hasil yang ditemukan

MATERI PELATIHAN BASIC ARDUINO SENSOR

N/A
N/A
Protected

Academic year: 2021

Membagikan "MATERI PELATIHAN BASIC ARDUINO SENSOR"

Copied!
34
0
0

Teks penuh

(1)

MATERI PELATIHAN BASIC ARDUINO SENSOR  Arduino  Arduino merupakan board mikrokontroller yang berbasis opensource. Ada beberapa macam arduino,  salah satunya adalah arduino uno yang akan di gunakan pada kesempatan kali ini.    Spesifikasi Arduino Uno  Mikrokontroller  ATMega 328  Tegangan pengoperasian   5V  Tegangan input yang disarankan  7‐12V  Jumlah pin I/O digital  16 (6 diantaranya PWM)  Jumlah pin analog  6    Pin input output arduino uno  Setiap 14 pin digital pada Arduino Uno dapat digunakan sebagai input dan output. Selain itu, beberapa  pin mempunyai fungsi‐fungsi spesial:   • Serial: 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan memancarkan (TX) serial data TTL  (Transistor‐Transistor Logic). Kedua pin ini dihubungkan ke pin‐pin yang sesuai dari chip Serial  Atmega8U2 USB‐ke‐TTL.  • External Interrupts: 2 dan 3. Pin‐pin ini dapat dikonfigurasikan untuk dipicu sebuah interrupt  (gangguan) pada sebuah nilai rendah, suatu kenaikan atau penurunan yang besar, atau suatu  perubahan nilai. Lihat fungsi attachInterrupt() untuk lebih jelasnya.  • PWM: 3, 5, 6, 9, 10, dan 11. Memberikan 8‐bit PWM output dengan fungsi analogWrite().  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin‐pin ini mensupport komunikasi SPI  menggunakan SPI library.  • LED: 13. Ada sebuah LED yang terpasang, terhubung ke pin digital 13. Ketika pin bernilai HIGH  LED menyala, ketika pin bernilai LOW LED mati.    Arduino UNO mempunyai 6 input analog, diberi label A0 sampai A5, setiapnya memberikan 10 bit  resolusi (contohnya 1024 nilai yang berbeda). Secara default, 6 input analog tersebut mengukur dari  ground sampai tegangan 5 Volt, dengan itu mungkin untuk mengganti batas atas dari rangenya dengan  menggunakan pin AREF dan fungsi analogReference(). Di sisi lain, beberapa pin mempunyai fungsi  spesial:   • TWI: pin A4 atau SDA dan pin A5 atau SCL. Mensupport komunikasi TWI dengan menggunakan  Wire library  Ada sepasang pin lainnya pada board:   • AREF. Referensi tegangan untuk input analog. Digunakan dengan analogReference().  • Reset. Membawa saluran ini LOW untuk mereset mikrokontroler. Secara khusus, digunakan  untuk menambahkan sebuah tombol reset untuk melindungi yang memblock sesuatu pada  board.     

(2)

Bahasa Pemrograman Arduino  Bahasa pemrograman Arduino adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan  fungsi‐fungsi yang sederhana sehingga mudah untuk dipelajari.    Mulai pemrograman  Struktur Penulisan Awal ARDUINO Terdiri dari :                      void setup( ) { }  Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan  untuk pertama kalinya.    void loop( ) { }  Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini  akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.    Variabel Arduino  Variabel adalah suatu pengenal yang digunakan untuk mewakili suatu nilai tertentu di dalam proses  program.    Contoh penulisan variabel :  1. int a;  2. char nama[20];    Scope  1. Global, di‐definisikan di paling atas.  2. Lokal, di‐definisikan di dalam fungsi.    Tipe Data Arduino   Tipe data merupakan bagian dari suatu program yang dibuat untuk menyatakan suatu bentuk nilai.  Contoh : Kita ingin menyimpan nilai pada variabel LUAS dan akan di gunakan untuk proses perhitungan  maka tipe data yang di gunakan adalah int.      void setup() {

// Di panggil satu kali ; }

void loop() {

//Di panggil berulang-ulang ; }

(3)

Tipe  Range  Keterangan 

int  ‐32768 to 32768  Tipe data yang hanya menampilkan 

berupa bilangan bulat antara ‐32768  to 32768 

char  ‐128 to 127  Tipe data menyimpan karakter/string  boolean  True (1), False (0)  Tipe data logika, yang berisi dua 

kemungkinan nilai : TRUE (benar) atau  FALSE (salah) 

long  ‐2.147.483.648 to 2.147.483.647  Tipe data yang hanya menampilkan  berupa bilangan buat tapi rangenya  lebih banyak 

unsigned int  0 to 4.294.967.295  Tipe data yang hanya menampilkan  berupa bilangan buat tapi rangenya  lebih banyak  float  ‐3,4028235E+38 to  3,4028235E+38  Tipe data yang hanya menampilkan  berupa bilangan pecahan/desimal      Opertator Aritmatika Arduino  Operator Aritmatika adalah operator yang dipakai dalam proses perhitungan dalam suatu program.    Operator Aritmatika  Keterangan  Penjumlahan  ‐  Pengurangan  Perkalian  Pembagian  Sisa bagi (modus)      Operator Kondisi Arduino   Operator Kondisi adalah operator yang dipakai dalam proses perbandingan antara 1 logic program  dengan logic program lainnya.    Operator Kondisi  Keterangan  Lebih kecil  <=  Lebih kecil sama dengan  Lebih besar  >=  Lebih besar sama dengan  ==  Sama dengan  !=  Tidak sama dengan 

(4)

      Operator Boolean Arduino  Operator boolean adalah operator yang menghasilkan true atau false.      Operator Boolean  Keterangan  Boolean NOT  &&  Boolean AND  ||  Boolean OR      Struktur Pengkondisian IF ARDUINO  Struktur Pengkondisian adalah struktur yang di gunakan untuk memilih 1 dari 2 kondisi(pernyataan) atau  lebih.                       Jika kondisi lebih dari 2                                if(kondisi) { Statement 1; } else { Statement selain 1; } if(kondisi 1) { Statement 1; } else if(kondisi 2) { Statement 2; } else {

Statement selain 1 dan 2; }

(5)

Contoh Penggunaan IF :    Ada 3 tombol untuk menghidupkan lampu   • Lampu Merah  • Lampu Kuning  • Lampu Hijau    Ketika tombol 1 di tekan, lampu merah menyala  Ketika tombol 2 di tekan, lampu kuning menyala  Ketika tombol 3 di tekan, lampu hijau menyala  Ketika tidak ditekan semua lampu mati    Bentuk kondisi pemrograman adalah sebagai berikut :                                                if(tombol 1 ditekan) { Merah on; }

else if(tombol 2 ditekan) {

kuning on; }

else if(tombol 3 ditekan) { hijau on; } else { Merah off; kuning off; hijau off; }

(6)

Struktur Pengkondisian Switch ARDUINO                                          Struktur Pengulangan FOR ARDUINO                                      switch(nomor) { case n1: statement 1; break; case n2: statement 2; break; case n3: statement 3; break; default: statement; break; } for(initial;condition;increment) { statement; statement; } for(i=0;i<10;i++) { sum++; total = total+sum; }

(7)

  Struktur Pengulangan WHILE ARDUINO                              Input Mikrokontroler  Input Mikrokontroler Dapat Berupa Digital Dan Analog    Input Digital  • Input Digital adalah input yang memiliki tegangan 5 volt (HIGH) dan 0 volt (LOW).  • Contoh INPUT Digital : Membaca Tombol Switch    Input Analog  • Input Analog adalah input yang memiliki tegangan antara 5 volt s/d 0 volt (LOW).  • Contoh INPUT Analog : Potensiometer, Line Sensor    Output Mikrokontroler  Output Mikrokontroler Hanya Berupa Digital  Output Digital  • Output Digital adalah output yang memiliki tegangan 5 volt (HIGH) dan 0 volt (LOW).  • Output Digital Bisa juga di pin Digital PWM  • Contoh OUTPUT Digital :  Menghidup dan mematikan LED  Menghidupkan dan mematikan Buzzer    Pemrograman Input / Output Digital Arduino  Perintah pinMode()  Digunakan untuk menentukan pin mana yang akan di gunakan dan menentukan apakah sebuah pin :  INPUT atau OUTPUT    while(condition) { statement; statement; … } var = 0; while(var < 200) { var++; }

(8)

Contoh :  ‐ Untuk menentukan pin Input : pinMode(8,INPUT);  ‐ Untuk menentukan pin Output : pinMode(8,OUTPUT);    Perintah digitalWrite()  Digunakan untuk memberikan logika LOW atau HIGH pada sebuah pin I/O.  Contoh :  ‐ Menghidupkan led pada pin 18 : digitalWrite(18,HIGH);  ‐ Mematikan led pada pin 18 : digitalWrite(18,LOW);    Perintah digitalRead()  Digunakan Untuk membaca logika dari sebuah pin I/O  Contoh :  ‐ Membaca switch pada pin 10 : digitalRead(10);    Pemrograman Input / Output Analog Arduino  Perintah analogWrite()  ‐ analogWrite() dapat digunakan untuk menulis nilai analog (gelombang PWM) untuk sebuah pin.  ‐ Dapat juga digunakan menyalakan LED dengan cahaya yang bervariasi atau mengontrol  ‐ motor dengan kecepatan yang bervariasi.  ‐ Value (nilai) analogWrite adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~  5V).  Contoh :  ‐ Menulis kecepatan motor/dinamo pada pin 6 : analogWrite(5,255);    Perintah analogRead()  ‐ Ketika pin analog ditetapkan sebagai INPUT kita dapat membaca keluaran voltase‐nya.  ‐ Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).    Contoh :  ‐ Membaca sensor suara pada pin 24 analog : analogRead(0);    Perintah Waktu Tunda  1. delay()  Akan memberi jeda pada program untuk beberapa waktu ( dalam millisecond).  Contoh : kita akan menulis waktu tunda 2 detik maka delay(2000);  2. delayMicroseconds()  memberi jeda program dalam beberapa waktu (mikrodetik), 1000 microsecond adalah 1  milisecond dan 1 juta microsecond adalah 1 detik.  Contoh : kita akan menulis waktu tunda 2 microsecond maka delayMicroseconds (2000);     

(9)

PROJECT 1 ‐ Blinking LED  Bahan yang dibutuhkan  1. Breadboard    Isi dari breadboard adalah Terhubung secara Vertikal / terhubung dari atas ke bawah   2. Dioda Led  3. Kabel Jumper male to male    4. Arduino Uno        Konfigurasi Rangkaian Blinking Led        Isi Breadboard Contoh program blinking arduino 

int LED = 2; // LED connected to

digital pin 2 void setup()

{

pinMode(LED, OUTPUT); // sets the

digital pin as output }

void loop() {

digitalWrite(LED, HIGH); // turns the LED on

delay(1000); // waits for a second digitalWrite(LED, LOW); // turns the

LED off

delay(1000); // waits for a second

} Catatan:   ‐ Pemasangan LED harus diperhatikan polaritasnya.  Kaki yang panjang mengarah ke kutup Positif (+),  sedangkan kaki yang pendek atau kaki pada  permukaan LED yg datar, mengarah ke kutub  negative (‐) atau Ground (Gnd).  

(10)

PROJECT II – ARDUINO SERIAL  Setiap arduino mempunyai port Serial, arduino uno mempunyai 1 komunikasi serial TX dan RX, port ini  berfungsi untuk    Memulai dengan Komunikasi Serial  Sebelum kita dapat menggunakan port serial Arduino, kita harus menentukan pengaturan komunikasi  dengan tepat. Pengaturan komunikasi serial yang lengkap meliputi baud rate (kecepatan).    Untuk menetapkan pengaturan yang diinginkan, kita menggunakan fungsi     Serial.begin()    Contoh, saat kita ingin berkomunikasi dengan kecepatan 9600 bits/detik dan nilai default untuk  pengaturan lainnya, kita bisa menggunakan baris kode berikut.     Serial.begin(9600);      Kita hanya perlu melakukan ini sekali saja. Jadi di void setup() adalah yang pas untuk menuliskan  Serial.begin().            Menulis ke Port Serial  Untuk menulis ke port serial, kita dapat menggunakan salah satu dari metode berikut ini.     print();  println();    Gunakan print() untuk mengirim teks ke penerima.   contoh, perintah print(“hallo”);   void setup() { serial.begin(9600); }

(11)

        maka arduino akan mengirim teks  "hallo" (tentu tanpa tanda kutip) di dalam serial monitor.    Untuk println() berperilaku mirip dengan print(), dengan perbedaan penambahan baris baru (new line  atau line feed) pada akhir pengiriman.    Menampilkan data dari potensiometer ke serial  Konfigurasi Pin ke potensiometer    Program ke Arduino  int potensio1 = A0;

int bacapotensio1 = 0; void setup() { Serial.begin(9600); pinMode(potensio1,INPUT); } void loop() {

bacapotensio1 = analogRead(potensio1); // read input value Serial.println(bacapotensio1); } Data yang dibaca potensiometer diatas adalah data ADC antara 0 – 1023,      void setup() { serial.begin(9600); Serial.print(“hallo”); }

(12)

PROJECT III  – Arduino digital Analog Input   sensorValue = analogRead(sensorPin); // membaca nilai dari sensor Analog   buttonState = digitalRead(buttonPin); // membaca nilai dari sensor Digital       Program push button untuk menyalakan led    

int buttonPin = 7; // pin signal modul Switch dihubungkan ke pin 7 Arduino int ledPin = 13; // nomor pin LED internal Arduino

int buttonState = 0; // nama variable status switch

void setup() {

pinMode(buttonPin, INPUT); // tombol tekan (push button) sebagai input:

pinMode(ledPin, OUTPUT); // LED pin sebagai output:

}

void loop() {

buttonState = digitalRead(buttonPin); // membaca nilai tombol tekan if (buttonState == HIGH) // check apakah tombol pushbutton ditekan {

(13)

} else {

digitalWrite(ledPin, LOW); // matikan LED (off)

}

}

 

Mengatur timer led blinking dengan potensiometer 

 

int sensorPin = 0; // pin signal potentiometer dihubungkan ke port analog 0 int ledPin = 13; // nomor pin LED internal Arduino

int sensorValue = 0; // variable nilai awal yg dihasilkan sensor

void setup() {

pinMode(ledPin, OUTPUT);

Serial.begin(9600); // untuk membaca data pada serial port di layar monitor

}

void loop() {

sensorValue = analogRead(sensorPin); // membaca nilai dari sensor Analog Serial.println(sensorValue); // menulis nilai sensor di layar monitor

digitalWrite(ledPin, HIGH);

(14)

digitalWrite(ledPin, LOW);

delay(sensorValue); // lamanya lampu Off

}

(15)

PROJECT IV  –Output dengan PWM  PWM adalah singkatan dari Pulse With Modulation, yang fungsinya untuk mengatur besaran output  dalam range tertentu ( 0 – 255 ).   Penggunaan PWM ini banyak diimplementasikan sebagai pengatur kecepatan motor,pengatur intensitas  cahaya, dan beberapa keperluan lainnya.  Arduino UNO memiliki 6 pin PWM, yaitu pin 3, 5, 6, 9, 10, 11. Untuk itu, penggunaan untuk pengaturan  kecepatan motor atau intensitas cahaya lampu yang akan dikontrol harus dihubungkan dengan pin  PWM tersebut.  Contoh mengatur intensitas cahaya pada dioda LED     

int ledPin = 3; // PWM pin untuk LED

void setup() {

}

void loop() {

for (int i=0; i<=255; i++) // menambah nilai untuk i {

analogWrite(ledPin, i); // set nilai i

delay(100); // delay selama 100ms

}

for (int i=255; i>=0; i--) // mengurangi nilai untuk i {

(16)

analogWrite(ledPin, i); // set nilai i

delay(100); // delay selama 100ms

} }   Penggunaan i++ berarti  nilai i naik +1 secara berulang ulang, misal untuk kenaikan kelipatan 10 bisa  menggunakan i+=5  Contoh  for (int i=0; i<=255; i++) = naik +1 secara berulang .   for (int i=0; i<=255; i+=10) = naik +10 secara berulang   untuk mendapatkan hasil sesuai dengan keinginan, output pwm bisa diatur dengan potensiometer.  Seperti halnya lampu panggung / lampu dimmer. Buatlah rangkaian dan program untuk pengaturan  cahaya dengan menggunakan potensiometer       

(17)

PROJECT  Konfigura   Berikut ad   No Kaki/P 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  V  – Arduino  asi Pin Kabel k dalah pin dari Pin  Nama  Ke VCC  +5 GND  0V VEE  Te RS  Re R/W  1  E  En D0  D D1  D D2  D D3  D D4  D D5  D D6  D D7  D Anoda  Te Katoda  te LCD 16x2  ke arduino  i LCD 16 X 2  eterangan  5V  V  egangan Kont egister Select = Read, 0 = W nable Clock LC ata Bus 0  ata Bus 1  ata Bus 2  ata Bus 3  ata Bus 4  ata Bus 5  ata Bus 6  ata Bus 7  egangan back egangan back tras LCD  t  Write  CD  klight positif klight Negatif    

(18)

  Pin LCD nomor 4 (RS) merupakan Register Selector yang berfungsi untuk memilih Register Kontrol atau  Register Data.   Register kontrol digunakan untuk mengkonfigurasi LCD.   Register Data digunakan untuk menulis data karakter ke memori display LCD.    Pin LCD nomor 5 (R/W) digunakan untuk memilih aliran data apakah READ ataukah WRITE. Karena  kebanyakan fungsi hanya untuk membaca data dari LCD dan hanya perlu menulis data saja ke LCD, maka  kaki ini dihubungkan ke GND (WRITE).    Pin LCD nomor 6 (ENABLE) digunakan untuk mengaktifkan LCD pada proses penulisan data ke Register  Kontrol dan Register Data LCD.    Menyambungkan LCD dengan Board Arduino    • Pin RS (kaki 4) di sambungkan dengan pin arduino digital pin 12  • Pin E (kaki 6) di sambungkan dengan pin arduino digital pin 11  • Pin D4 (kaki 11) di sambungkan dengan pin arduino digital pin 5  • Pin D5 (kaki 12) di sambungkan dengan pin arduino digital pin 4  • Pin D6 (kaki 13) di sambungkan dengan pin arduino digital pin 3  • Pin D7 (kaki 14) di sambungkan dengan pin arduino digital pin 2  • sambungkan potensio 10 KOhm ke  +5v dan GND , dan Pin LCD 3 ke potensio  • Pin 5 (R/W) ke Ground      Program di arduino  Pada penggunaan program ini di butuhkan library LCD, default installan dari arduino sudah ada library  LCD jadi tidak perlu memasukkan lagi ke folder library    #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() {

// set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Belajar Arduino"); lcd.setCursor(0, 1); lcd.print("Arduino LCD"); }

(19)

void loop() {

//belum ada perintah berulang-ulang }

     

(20)

PROJECT VI  – Mengukur Suhu  Jenis sensor suhu yang akan di gunakan ada 2 macam  LM 35  IC jenis LM 35 ini cukup praktis, bentuknya kecil dan akurasinya tinggi. Cukup dengan menghubungkan  kakinya ke kutub + , A0 dan – seperti pada gambar, nilai tegangan listrik yang didapat akan dikonversi  menjadi nilai suhu dalam satuan derajat Celsius/Rheamur/Fahrenheit.       

int lm35 = A0; // input pin untuk LM35

float temperature = 0; // type float -> 2 angka di blkng koma long val = 0; // tyle long = int, hanya range nilainya lebih besar

void setup() { Serial.begin(9600); } void loop() {

val = analogRead(lm35); // baca data dari sensor

temperature = (5.0 * val * 100.0)/1024.0; // konversi ke celcius Serial.println(temperature); // menampilkan data

(21)

delay(1000); }

   

(22)

PROJECT VII  – Mengukur air 

Mengukur air bisa menggunakan water sensor. Sensor ini mengeluarkan data analog ketika di celupkan  di air. 

 

int water = A0; // input pin untuk water sensor

long val = 0; // tyle long = int, hanya range nilainya lebih besar

void setup() { Serial.begin(9600); } void loop() {

if (Serial.available()) // jika ada serial {

val = analogRead(water); // baca data dari sensor Serial.println(val); // menampilkan data

}

delay(1000); }

(23)

PROJECT VIII  – Mengukur aliran air  Flow meter merupakan sensor yang digunakan untuk mengukur aliran air.  Bentuk flow meter adalah sebagai berikut :        Output yang dikeluarkan dari flow meter ini adalah berupa pulsa/sinyal. Diperlukan resistor 10K Ohm,  sebagai pull up dari sensor water flow. Bentuk rangkaiannya sebagai berikut.       

volatile int NbTopsFan; //measuring the rising edges of the signal int Calc;

int hallsensor = 2; //The pin location of the sensor

void rpm () //This is the function that the interupt calls {

NbTopsFan++; //This function measures the rising and falling edge of the //hall effect sensors signal

(24)

void setup() {

pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input

Serial.begin(9600); //This is the setup function where the serial port is //initialised,

attachInterrupt(0, rpm, RISING); //and the interrupt is attached }

// the loop() method runs over and over again, // as long as the Arduino has power

void loop () {

NbTopsFan = 0; //Set NbTops to 0 ready for calculations sei(); //Enables interrupts

delay (1000); //Wait 1 second cli(); //Disable interrupts

Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate

in L/hour

Serial.print (Calc, DEC); //Prints the number calculated above

Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a new line }

(25)

PROJECT VIII  – Arduino Komunikasi Bluetooth  Konfigurasi Arduino Pin ke Bluetooth HC‐05 

   

 

Program ke Arduino 

//Menyalakan Led dengan bluetooth int led=13;

int DataBluetooth;

void setup() {

Serial.begin(9600);

Serial.println("Menyalakan dan mematikan led dengan bluetooth"); Serial.println("1 : ON, 0 = Off");

pinMode(led,OUTPUT); } void loop() { if (Serial.available()) { DataBluetooth=Serial.read(); if(DataBluetooth=='1') { digitalWrite(led,HIGH); Serial.println("LED On"); } if (DataBluetooth=='0') { digitalWrite(led,LOW); Serial.println("LED Off"); } }

(26)

delay(100); } Untuk penggunaan serial bluetooth yang menggunakan port serial tx,rx. Pada waktu proses download  harus dicabut kabel tx rx nya.  Ada cara lain biar tidak mencabut kabel tx rx yaitu menggunakan port serial arduino lainnya, atau di  kenal dengan softwareserial. Port yang digunakan adalah port  10 (rx), 11(tx). Untuk sketch  pemrogramannya ditambahi program berikut      #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // TX, RX int led=13; int DataBluetooth; void setup() { Serial.begin(9600); mySerial.begin(9600);

Serial.println("Menyalakan dan mematikan led dengan bluetooth"); Serial.println("1 : ON, 0 = Off");

pinMode(led,OUTPUT); } void loop() { if (mySerial.available()) { DataBluetooth=mySerial.read(); if(DataBluetooth=='1') { digitalWrite(led,HIGH); Serial.println("LED On"); } if (DataBluetooth=='0') { digitalWrite(led,LOW); Serial.println("LED Off"); } } delay(100); }        

(27)

  PROJECT IX ‐ Arduino VB  VB atau Visual Basic merupakan interface yang digunakan sebagai pengendali ke arduino, selain itu juga  sebagai pembaca data. Komunikasi dari VB Arduino ini menggunakan komunikasi Serial  Membuat program arduino, ketika mendapat data 1 led 13 on, dan ketika mendapat data 2 led 13 off  int t; void setup() { Serial.begin(9600); pinMode(13,OUTPUT); digitalWrite(13,LOW); } void loop() { while(Serial.available()>0) { t=Serial.read(); } switch(t) { case '1': digitalWrite(13,HIGH);break; case '2': digitalWrite(13,LOW);break; } }   Langkah‐langkah pada visual Basic  • Buka VB6  • Susunlah komponen seperti pada gambar dibawah ini    • microsoft common control (MSComm) atau yang bergambar telp, ini bisa di tambahkan melalui  bar sebelah kiri, kemudian klik kanan dan klik componnent. Pilih pada controls dan check pada  Microsoft Comm Control 6.0  • Aturlah Propertiesnya Seperti berikut ini  Component  Properties  ComboBox  Name : Combo1  Text :‐‐port‐‐ 

(28)

commandButton  Name : btn_connect  Caption : Connect  commandButton  Name : btn_write  Caption : write  commandButton  Name : btn_exit  Caption : Exit  textBox  Name : text1  name :   MSComm  Name : MSComm1  Settings : 9600,n,8,1     • Tulislah Program basic nya dengan klik 2 kali dmna aja pada form editor 

Private Sub Form_Load() For Port = 1 To 20 Combo1.AddItem Port Next Port

End Sub

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False

End Sub

Private Sub btn_connect_Click() MSComm1.CommPort = Val(Combo1.Text) MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True

MsgBox "Koneksi Berhasil !", vbInformation, "Sukses" btn_connect.Enabled = False

End Sub

Private Sub btn_exit_Click() End

End Sub

Private Sub btn_write_Click() MSComm1.Output = Text1.Text End Sub

(29)

PROJECT X ‐ Arduino Data Logger  Data logger merupakan data penyimpanan ke external memory atau ke SD Card, penggunaan data  logger ini biasanya untuk menganalisa/mendapatkan data dari suatu kondisi di tempat tertentu. Misal  untuk perubahan suhu per satuan waktu di tempat tertentu.   Pada percobaan kali ini modul yang di gunakan adalah modul dari deek‐robot     Selain data logger, Modul ini juga langsung ada RTC (Real Time Clock) untuk pencatat waktu.  Mancoba data logger,   Konfigurasi data logger dengan arduino menggunakan koneksi SPI, maka untuk pin di arduino UNO bisa  menggunakan pin sebagai berikut :      #include <SPI.h> #include <SD.h>

const int chipSelect = 10;

MOSI ‐ pin 11  MISO ‐ pin 12  CLK ‐ pin 13  CS ‐ pin 10 

(30)

void setup() {

Serial.begin(9600);

Serial.print("Initializing SD card..."); // inisialisasi card

if (!SD.begin(chipSelect)) {

Serial.println("Card failed, or not present"); // don't do anything more:

return; } Serial.println("card initialized."); } void loop() { String dataString="okelah";

// membuka file, hanya satu file yang dibuka pada penggunaan data logger

File dataFile = SD.open("datalog.txt", FILE_WRITE);

// menulis data: if (dataFile) {

dataFile.println(dataString); dataFile.close();

// print ke serial port: Serial.println(dataString); }

else {

Serial.println("error opening datalog.txt"); } }   Menyimpan data dari potensiometer    #include <SPI.h> #include <SD.h>

(31)

const int chipSelect = 10; int potensio = A0;

void setup() {

Serial.begin(9600);

Serial.print("Initializing SD card..."); // inisialisasi card

if (!SD.begin(chipSelect)) {

Serial.println("Card failed, or not present"); // don't do anything more:

return; }

Serial.println("card initialized."); }

void loop() {

//membaca data potensio

int sensor = analogRead(potensio);

// membuka file, hanya satu file yang dibuka pada penggunaan data logger

File dataFile = SD.open("datalog.txt", FILE_WRITE);

// menulis data: if (dataFile) {

dataFile.println(potensio); dataFile.close();

// print ke serial port: Serial.println(potensio); }

else {

Serial.println("error opening datalog.txt"); }

}  

(32)

PROJECT XI – Arduino RTC (Real Time Clock)  RTC (Real Time Clock) merupakan sebuah IC yang memiliki fungsi untuk menghitung waktu, mulai dari  detik, menit, jam, tanggal, bulan, serta tahun. Ada beberapa RTC yang di jual di pasaran, seperti :  DS1307, DS1302, DS12C887, DS3234.  Pada percobaan kali ini, menggunakan RTC yang sudah terinclude di data logger yaitu RTC DS1307.   Yang perlu disiapkan adalah menggunakan library arduino DS1307 RTC. Modul ini menggunakan I2C  untuk jalur komunikasinya sehingga pada arduino menggunakan pin 14‐>SDA dan A5‐>SCL    Untuk setting time, bisa langsung menggunakan data dari bios komputer  #include <DS1307RTC.h> #include <Time.h> #include <Wire.h>

const char *monthName[12] = {

"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

tmElements_t tm;

void setup() { bool parse=false; bool config=false;

// get the date and time the compiler was run if (getDate(__DATE__) && getTime(__TIME__)) { parse = true;

// and configure the RTC with this info if (RTC.write(tm)) {

config = true; }

(33)

Serial.begin(9600);

while (!Serial) ; // wait for Arduino Serial Monitor delay(200);

if (parse && config) {

Serial.print("DS1307 configured Time="); Serial.print(__TIME__);

Serial.print(", Date="); Serial.println(__DATE__); } else if (parse) {

Serial.println("DS1307 Communication Error :-{"); Serial.println("Please check your circuitry"); } else {

Serial.print("Could not parse info from the compiler, Time=\""); Serial.print(__TIME__); Serial.print("\", Date=\""); Serial.print(__DATE__); Serial.println("\""); } } void loop() { }

bool getTime(const char *str) {

int Hour, Min, Sec;

if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false; tm.Hour = Hour;

tm.Minute = Min; tm.Second = Sec; return true; }

bool getDate(const char *str) {

char Month[12]; int Day, Year; uint8_t monthIndex;

if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false; for (monthIndex = 0; monthIndex < 12; monthIndex++) {

if (strcmp(Month, monthName[monthIndex]) == 0) break; }

if (monthIndex >= 12) return false; tm.Day = Day; tm.Month = monthIndex + 1; tm.Year = CalendarYrToTm(Year); return true; }   Membaca time dari RTC  #include <DS1307RTC.h>

(34)

#include <Time.h> #include <Wire.h>

void setup() {

Serial.begin(9600);

while (!Serial) ; // wait for serial delay(200);

Serial.println("DS1307RTC Read Test"); Serial.println("---"); } void loop() { tmElements_t tm; if (RTC.read(tm)) { Serial.print("Ok, Time = "); print2digits(tm.Hour); Serial.write(':'); print2digits(tm.Minute); Serial.write(':'); print2digits(tm.Second);

Serial.print(", Date (D/M/Y) = "); Serial.print(tm.Day); Serial.write('/'); Serial.print(tm.Month); Serial.write('/'); Serial.print(tmYearToCalendar(tm.Year)); Serial.println(); } else { if (RTC.chipPresent()) {

Serial.println("The DS1307 is stopped. Please run the SetTime"); Serial.println("example to initialize the time and begin running."); Serial.println();

} else {

Serial.println("DS1307 read error! Please check the circuitry."); Serial.println(); } delay(9000); } delay(1000); }

void print2digits(int number) { if (number >= 0 && number < 10) { Serial.write('0');

}

Serial.print(number); }

Referensi

Dokumen terkait

Jika terdapat lebih dari satu sisi yang menghubungkan dua titik pada suatu graf, maka sisi-sisi tersebut disebut sisi rangkap... 2 Sebuah graf G adalah graf

Orangtua yang memiliki posisi strategis dalam keluarga dapat memutuskan pilihan anak secara sepihak sehingga tidak terjalin komunikasi yang efektif dalam pengambilan keputusan memilih

Berdasarkan hasil penyajian data pada BAB III, maka dapat diketahui dari hasil baseline 1, intervensi dan baseline 2 bahwa terapi senam perkasa dengan symbolic

Pada extended kalman filter, sama halnya dengan kalman filter, estimasi dilakukan dengan dua tahapan, yaitu dengan cara memprediksi variabel keadaan berdasarkan sistem dinamik

Penurunan kadar air gelatin ini dikarenakan semakin lama perendaman akan semakin banyak asam yang terdifusi dalam jaringan ceker ayam sehingga struktur kolagen semakin terbuka

Kapal dimiliki oleh PT.PANN (Persero) di Jakarta, dilengkapi dengan Surat Ukur Internasional (1969) Nomor 1747/PPm, Surat Laut Nomor PK.674/1075/SL-PM/DK-08, Sertifikat

Pemerintah telah menetapkan kode desa dalam Peraturan Menteri Dalam Negeri Nomor 39 Tahun 2015 tentang Kode dan Data Wilayah Administrasi Pemerintahan, termasuk

Karena strong coloumn weak beam concept yang dipakai pada desain struktur beton tahan gempa maka besarnya momen yang dipakai dalam menghitung tulangan kolom tidak