Beberapa Contoh Sketsa Sederhana Arduino pakai Fungsi Millis
Assalamualaikum wr. wb.
Berikut ini contoh sketsa pakai fungsi millis, bisa dikembangkan menurut proyek anda, atau cuma copas (copy-paste), ya tidak apa-apa. Kalau masih binggung dengan penggunaan fungsi millis dapat dilihat dari postingan saya sebelum ini klik disini. Pakai fungsi millis untuk jeda waktu memiliki kelebihan, yaitu bebas multitasking, tidak nge-hang ketika multitasking. Kalau pakai fungsi delay kadang nge-hang ketika programnya multitasking, fungsi delay cocoknya untuk tugas yang berurutan saja. Anda bisa menggunakan Arduino Nano, Arduino Uno atau yang lain untuk mencobanya.
Contoh sketsa 1
sketsa ini untuk membuat led berjalan (hanya istilah), maksutnya cahaya led seolah-olah bergerak, seperti lampu strobo di bus. Bisa ganti-ganti pola, jika kurang banyak polanya, bisa tambah sendiri sketsanya sesuai imajenasi. Yang bisa memicu berganti pola, jika menekan tombol (push button).
SKETSA 1=========
SKETSA
//Sketsa Led Berjalan dengan Millis
#define tombol A3 //Nama alias tombol adalah A3// indeknya 0 1 2 3 4 5 6 7 8 9byte led[]={2,3,4,5,6,7,8,9,10,11};//pin untuk LEDint kondisi=0;
byte pola=1;
byte tambahan=1;
int arah=1;
byte posisi=1;
boolean sekali=false;
int jeda=750;
unsignedlong penyesuaian=0;
voidsetup(){
pinMode(tombol,INPUT_PULLUP);
for(int i;i<=9;i++){
pinMode( led[i],OUTPUT);}
}//Akhir void Setupvoidloop(){
//=========cabang ke-1===========
kondisi=digitalRead(tombol);
//-------------------------------//=========cabang ke-2================if((kondisi==LOW)&&(sekali==false)){
sekali=true;
tambahan++;
if (tambahan==4){
tambahan=1;}
pola=tambahan;
}//Akhir if kondisielse{ //jika if diatas salah
sekali=false;
}//Akhir else //------------------------------------//==========cabang ke-3=====================if((millis()-penyesuaian)>=jeda){//Tanggul
penyesuaian=millis();//Naikkan tanggulif (pola==1){
for(int i;i<=9;i++){
digitalWrite( led[i],LOW);}
digitalWrite(led[posisi],HIGH);
if (posisi==9){
posisi=0;}
else{
posisi++;}
}//Akhir if pola==1if (pola==2){
if (posisi==10){
posisi=0;}
for(int i;i<=9;i++){
digitalWrite( led[i],HIGH);}
digitalWrite(led[posisi],LOW);
if (posisi==9){
posisi=0;}
else{
posisi++;}
}//Akhir if pola==2if (pola==3){
posisi=posisi+arah;
for(int i;i<=9;i++){
digitalWrite( led[i],LOW);}
digitalWrite(led[posisi],HIGH);
if (posisi==9){
arah= -1;}
if (posisi==0){
arah=1;}
}//Akhir if pola==3
}//Akhir if millis //---------------------------------------------------
}//Akhir void loop
Gambar no. 1
Bahan yang diperlukan
Arduino 1 buah
Push button 1 buah
Resistor 1k 10 buah
LED 10 buah
Kabel jumper
Breadboard
Rangkaiannya pinnya
Pin A3 Arduino ke Push Button
Pin D2 Arduino ke LED 1
Pin D3 Arduino ke LED 2
Pin D4 Arduino ke LED 3
Pin D5 Arduino ke LED 4
Pin D6 Arduino ke LED 5
Pin D7 Arduino ke LED 6
Pin D8 Arduino ke LED 7
Pin D9 Arduino ke LED 8
Pin D10 Arduino ke LED 9
Pin D11 Arduino ke LED 10
Pin yang lain dirangkai seperti gambar
Contoh sketsa dua
Sketsa dua ini sebenarnya hampir sama dengan sketsa 1, perbedaannya sketsa dua ditambah library ezButton, fungsinya untuk mencegah mematul (mantul-mantul) pada tombol saat pertama kali ditekan, yang merupakan sifat alamiah tombol. Kalau mantul-mantul tidak diatasi, inputnya bisa banyak walaupun menekannya satu kali. Untuk memulai praktek silakan download dahulu file zip librarynya disini, lalu tambahkan ke file Arduino IDE di folder Libraries, kalau belum tahu cara menambahkan libraries di Arduino IDE browsing google dahulu
SKETSA 2===============
SKETSA
//Sketsa Led Berjalan dengan Millis
#include <ezButton.h>//Melampirkan library ezButtonezButton tombol(A3);//Pinnya tombol A3// indeknya 0 1 2 3 4 5 6 7 8 9byte led[]={2,3,4,5,6,7,8,9,10,11};//pin untuk LEDbyte pola=1;
byte tambahan=1;//Supaya berganti polaint arah=1;// Untuk ganti arah pola led byte posisi=1;
boolean sekali=false;//supaya data berubah sekali jika ditekanint jeda=750;//kecepatan perpindahanunsignedlong penyesuaian=0;
voidsetup(){
tombol.setDebounceTime(50);//waktu menunggu tombol stabilfor(int i;i<=9;i++){
pinMode( led[i],OUTPUT);}
}//Akhir void Setupvoidloop(){
//=========cabang ke-1===========
tombol.loop();//Ini ditulis harus diawal ruang lingkup void loop//-------------------------------//=========cabang ke-2================if((tombol.isPressed())&&(sekali==false)){
sekali=true;
tambahan++;
if (tambahan==4){
tambahan=1;}
pola=tambahan;
}//Akhir if tombolelse{ //jika if diatas salah
sekali=false;
}//Akhir else //------------------------------------//==========cabang ke-3=====================if((millis()-penyesuaian)>=jeda){//Tanggul
penyesuaian=millis();//Naikkan tanggulif (pola==1){
for(int i;i<=9;i++){
digitalWrite( led[i],LOW);}
digitalWrite(led[posisi],HIGH);
if (posisi==9){
posisi=0;}
else{
posisi++;}
}//Akhir if pola==1if (pola==2){
if (posisi==10){
posisi=0;}
for(int i;i<=9;i++){
digitalWrite( led[i],HIGH);}
digitalWrite(led[posisi],LOW);
if (posisi==9){
posisi=0;}
else{
posisi++;}
}//Akhir if pola==2if (pola==3){
posisi=posisi+arah;
for(int i;i<=9;i++){
digitalWrite( led[i],LOW);}
digitalWrite(led[posisi],HIGH);
if (posisi==9){
arah= -1;}
if (posisi==0){
arah=1;}
}//Akhir if pola==3
}//Akhir if millis //---------------------------------------------------
}//Akhir void loop
Komponen dan skema sama dengan sketsa 1
Contoh sketsa tiga
sketsa ini untuk motor servo, motor servo bergerak bukan seperti motor biasa, kalau motor biasa dikasih suplai listrik langsung jalan, kalau motor servo dikasih suplai listrik dan sinyal pwm untuk bergerak per sudut. Sudut maksimal servo 180°, jadi supaya bergeraknya tidak patah-patah (halus) diperlukan jeda waktu, per derajat sudut yang dilalui.
Pasang pin sinyal servo di pin pwm Arduino. Jika servo tidak bergerak, itu artinya kurang arus atau sambungan longgar. Untuk mengatasi servo yang kurang arus, bisa dikasih sendiri suplai listriknya, tidak digabung dengan arduino, caranya cabut kabel oranye (seperti gambar dibawah) di pin arduino, pasangkan kabel oranye ke suplai listrik 5 Volt (terpisah dengan Arduino), ground gabungkan saja. Cara lainnya suplai listrik bisa digabung, tapi gunakan suplai listrik yang lebih besar arusnya, voltase tetap 5V ke motor servo.
SKETSA3===========
SKETSA
//Sketsa Motor Servo tanpa Fungsi Delay
#include<Servo.h>//Melampirkan library Servo
#include <ezButton.h>//Melampirkan library ezButtonezButton tombol(6);//Pinnya tombol 6Servo servoku;
int arah=1;
int pos=0;
boolean setop=false;
int jeda=15;
boolean sekali=false;//Supaya dibaca sekali ketika tombol ditekanunsignedlong penyesuaian=0;
voidsetup(){
tombol.setDebounceTime(50);//waktu menunggu tombol stabil
servoku.attach(3);//Pin ke motor servo 3
}//Akhir void setupvoidloop(){
//========Cabang ke-1=========
tombol.loop();//Ini harus ditulis diawal ruang lingkup void loop//----------------------------//=========Cabang ke-2===============if((tombol.isPressed())&&(sekali==false)){
sekali=true;
setop=!setop;
}//Akhir ifelse{
sekali=false;
}//Akhir else //-----------------------------------//========Cabang ke-3=======================if(((millis()-penyesuaian)>=jeda) //Tanggul
&&(setop==false)){ //On/off servo
penyesuaian=millis();//Menaikkan tanggul
pos=pos+arah;
servoku.write(pos);
if(pos==180){//Pembalik arah servo
arah= -1;}
if(pos==0){//Pembalik arah servo
arah= 1;}
}//Akhir if millis//------------------------------------------
}//Akhir void loop
Gambar no. 2
Bahan yang diperlukan
Arduino 1 buah
Push button 1 buah
Motor servo
Kabel jumper
Breadboard
Rangkaiannya pinnya
Pin 6 Arduino ke Push Button
Pin 3 Arduino ke Motor Servo
Pin yang lain dirangkai seperti gambar
Cara kerjanya, motor servo bergerak melambai, jika tombol ditekan servo bisa on dan off. Sekian dahulu dari saya, jika ada yang kurang jelas bisa ditanyakan di kolom komentar.
Tidak ada komentar:
Posting Komentar