MATERI PELATIHAN BASIC ARDUINO SENSORsekolahrobot.com/download/MATERI PELATIHAN BASIC ARDUINO...1....
Transcript of MATERI PELATIHAN BASIC ARDUINO SENSORsekolahrobot.com/download/MATERI PELATIHAN BASIC ARDUINO...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.
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 ; }
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
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; }
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; }
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; }
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++; }
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);
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).
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); }
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”); }
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 { digitalWrite(ledPin, HIGH); // nyalakan LED (on)
} 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); delay(sensorValue); // lamanya lampu On
digitalWrite(ledPin, LOW); delay(sensorValue); // lamanya lampu Off }
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 {
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
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
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"); }
void loop() { //belum ada perintah berulang-ulang }
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 Serial.println((long)temperature); // menjadikan bil bulat
delay(1000); }
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); }
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 }
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 }
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"); } }
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); }
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‐‐
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
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
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>
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"); } }
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; } }
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>
#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); }