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  9
byte led[]={2,3,4,5,6,7,8,9,10,11};//pin untuk LED

int kondisi=0;
byte pola=1;
byte tambahan=1;
int arah=1;
byte posisi=1;
boolean sekali=false;
int jeda=750;
unsigned long penyesuaian=0;

void setup(){
  pinMode(tombol,INPUT_PULLUP);
  for(int i;i<=9;i++){
    pinMode( led[i],OUTPUT);}
}//Akhir void Setup

void loop(){
//=========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 kondisi
  else{  //jika if diatas salah
      sekali=false;
  }//Akhir else 
//------------------------------------
  
//==========cabang ke-3=====================
  if((millis()-penyesuaian)>=jeda){//Tanggul
  
    penyesuaian=millis();//Naikkan tanggul
    
    if (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==1
    
    if (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==2
    
    if (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 ezButton

ezButton tombol(A3);//Pinnya tombol A3

// indeknya 0 1 2 3 4 5 6 7 8  9
byte led[]={2,3,4,5,6,7,8,9,10,11};//pin untuk LED

byte pola=1;
byte tambahan=1;//Supaya berganti pola
int arah=1;// Untuk ganti arah pola led 
byte posisi=1;
boolean sekali=false;//supaya data berubah sekali jika ditekan
int jeda=750;//kecepatan perpindahan
unsigned long penyesuaian=0;

void setup(){
   tombol.setDebounceTime(50);//waktu menunggu tombol stabil
  for(int i;i<=9;i++){
    pinMode( led[i],OUTPUT);}
}//Akhir void Setup

void loop(){
//=========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 tombol
  else{  //jika if diatas salah
      sekali=false;
  }//Akhir else 
//------------------------------------
  
//==========cabang ke-3=====================
  if((millis()-penyesuaian)>=jeda){//Tanggul
  
    penyesuaian=millis();//Naikkan tanggul
    
    if (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==1
    
    if (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==2
    
    if (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 ezButton

ezButton tombol(6);//Pinnya tombol 6

Servo servoku;
int arah=1;
int pos=0;
boolean setop=false;
int jeda=15;
boolean sekali=false;//Supaya dibaca sekali ketika tombol ditekan
unsigned long penyesuaian=0;

void setup(){
   tombol.setDebounceTime(50);//waktu menunggu tombol stabil
   servoku.attach(3);//Pin ke motor servo 3
   }//Akhir void setup

void loop(){
  
 //========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 if
  else{
      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.

Wasalamualaikum wr. wb.

Tidak ada komentar:

Posting Komentar