• Motivation

    Bekerja keraslah, Bermimpilah lebih besar dan jadilah yang terbaik FILAB.id...
  • Motivation

    Anda saat ini adalah hasil dari pengalaman anda FILAB.id...
  • Motivation

    Kesalahan adalah bukti bahwa kamu sedang mencoba FILAB.id...
Tampilkan postingan dengan label Arduino. Tampilkan semua postingan
Tampilkan postingan dengan label Arduino. Tampilkan semua postingan

Rabu, 07 Juni 2017

Memaksimalkan PinOut Arduino Mega

Salam elektro, bertemu lagi dengan saya, pada tulisan kali ini saya akan memberikan tutorial cara memaksimalkan pinout arduino mega, sebelumnya kita bahas terlebih dahulu apa itu arduino mega ? 

Arduino Mega 2560 adalah papan pengembangan mikrokontroller yang berbasis Arduino dengan menggunakan chip ATmega2560. Board ini memiliki pin I/O yang cukup banyak, sejumlah 54 buah digital I/O pin (15 pin diantaranya adalah PWM), 16 pin analog input, 4 pin UART (serial port hardware). Arduino Mega 2560 dilengkapi dengan sebuah oscillator 16 Mhz, sebuah port USB, power jack DC, ICSP header, dan tombol reset. Board ini sudah sangat lengkap, sudah memiliki segala sesuatu yang dibuthkan untuk sebuah mikrokontroller. Dengan penggunaan yang cukup sederhana, anda tinggal menghubungkan power dari USB ke PC anda atau melalui adaptor AC/DC ke jack DC. 

Nah dari data sheet atmega 2560 yang sudah saya baca ternyata atmega 2560 mempunya jumlah I/O sebanyak 100 nah dikurangi 14 pin (VCC GND RESET XTAL) menjadi 86 pin, 86 pin tersebut digunakan sebagai GPIO termasuk PWM, analog input, UART, SPI, I2C, nah bisa dilihat perbandingan GPIO yang dikerluarkan arduino mega dengan datasheet atmega 2560, arduino mega mengeluarkan 54 GPIO dan datasheet yang sudah saya lihat atmega2560 yang bisa digunakan 86 GPIO, lalu mengapa arduino mega hanya mengeluarkan 54 GPIO ? menurut saya karena GPIO tersebut menyesuaikan dengan ukuran board arduino mega (kalo salah tolong di koreksi) 

Maka dari sedikit pembahan diatas saya memberikan judul postingan ini " Memaksimalkan PinOut Arduino Mega " agar 86 pin arduino mega bisa terpakai semua dengan syarat kalian membuat design pcb baru untuk atmega 2560 (arduino mega) 


Siapkan alat dan bahan :
1. Buka file pin.h yang sudah kalian download 
2. Copy library pin.h 
3. Paste pada Folder C > Program Files > Arduino > Hardware > Arduino > AVR > Variants > Mega (sebelum kalian paste file library yang baru kalian hapus terlebih dahulu library pin.h yang lama) 

CATATAN !
a. Pastikan hardware sudah benar
b. Pastikan lokasi penyimpanan library pin.h sudah benar 

PERCOBAAN !

Percobaan kali ini kita akan mencoba mengaktifkan pin E2 

Lihat data full mapping pada ms word yang sudah kalian download


Pin E2 bisa dipakai pada digital pin 80 arduino 

Kita coba program led blink menggunakan digital pin 80 

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(80, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(80, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(80, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Coba kalian upload program diatas pada board arduino mega (design baru)

Budayakan mempelajarinya hingga benar benar paham,jika merasa belum paham bisa ajukan pertanyaan di komentar atau contact facebook saya atau email fickrymhd@gmail.com

Share:

Minggu, 05 Maret 2017

Kontrol Led Dengan Visual Studio C# & Arduino

Salam elektro, bertemu lagi dengan saya, pada tulisan kali ini saya akan memberikan tutorial cara kontrol led dengan menggunakan visual studio dan arduino,silahkan kalian baca sampai benar benar paham.


Siapkan alat dan bahan :

Visual Studio 
Software yang menyediakan sebuah fitur testing proyek yang terintegrasi sehingga memudahkan developer.NET dalam melakukan verifikasi dan validasi software. Microsoft ingin membuat Microsoft Visual Studio sebagai IDE yang ‘Home Sweet Home’ terhadap developer setianya. Microsoft menyarankan metode satu proyek untuk aplikasi Web yang berukuran kecil hingga menengah. Visual Studio.NET langsung mendukung metode ini.

Komunikasi Serial
Adalah salah satu metode komunikasi data di mana hanya satu bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu.[1] Pada dasarnya komunikasi serial adalah kasus khusus komunikasi paralel dengan nilai n = 1, atau dengan kata lain adalah suatu bentuk komunikasi paralel dengan jumlah kabel hanya satu dan hanya mengirimkan satu bit data secara simultan.[1] Hal ini dapat disandingkan dengan komunikasi paralel yang sesungguhnya di mana n-bit data dikirimkan bersamaan, dengan nilai umumnya 8 ≤ n ≤ 128.[1] Untuk komunikasi serial tersinkron, lebar pita setara dengan frekuensi jalur.[1]
Pada komputer pribadi, komunikasi serial digunakan misalnya pada standar komunikasi RS-232 yang menghubungkan periferal eksternal seperti modem dengan komputer.[2]

Arduino 
Pengendali mikro single-board yang bersifat open-source[1], diturunkan dari Wiring platform[2], dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri.

CATATAN !
a. Pastikan kabel usb sudah terhubung 
b. Pastikan kalian sudah meng-instal software Visual Studio 2012

WIRING ! 
Sambungkan semua komponen sesuai dengan gambar



Programming Visual Studio C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Diagnostics;

// Fickry Muhammad 
// Aruselektronika.blogspot.com

namespace Serial_Project
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            buttonConnect.Enabled = true;
            buttonDisconnect.Enabled = false;
            L1.Enabled = false;
            L2.Enabled = false;
            comboBoxSerial.Items.Clear();
            foreach (string item in SerialPort.GetPortNames())
            {
                comboBoxSerial.Items.Add(item);
            }
        }

        private void buttonConnect_Click(object sender, EventArgs e)
        {
            serialPort.PortName = comboBoxSerial.Text;
            buttonConnect.BackColor = Color.FromArgb(50, 205, 50);
            try
            {
                serialPort.BaudRate = 9600;
                serialPort.Parity = Parity.Even;
                serialPort.StopBits = StopBits.Two;
                serialPort.DataBits = 7;
                serialPort.Open();
            }
            catch (Exception error)
            {
                MessageBox.Show(error.ToString(), "Serial Port Error !");
            }
            if (serialPort.IsOpen)
            {
                buttonConnect.Enabled = false;
                buttonDisconnect.Enabled = true;
                L1.Enabled = true;
                L2.Enabled = true;
            }
        }

        private void buttonDisconnect_Click(object sender, EventArgs e)
        {
            buttonConnect.BackColor = Color.FromArgb(224, 224, 224);
            if (serialPort.IsOpen)
            {
                serialPort.Close();
                buttonConnect.Enabled = true;
                buttonDisconnect.Enabled = false;
                L1.Enabled = false;
                L2.Enabled = false;
            }
        }

        string RXstring;

        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            RXstring = serialPort.ReadExisting();
            this.Invoke(new EventHandler(tampil_kata));
        }

        private void tampil_kata(object sender, EventArgs e)
        {
            richTextBoxData.AppendText(RXstring);
        }

        private void L1_Click(object sender, EventArgs e)
        {        
            serialPort.Write("A");
        }

        private void L2_Click(object sender, EventArgs e)
        {
            serialPort.Write("B");
        }

    }
}
Programming Arduino C

// Fickry Muhamad

char result;
int Lamp = 13;

void setup() {
   pinMode(Lamp,OUTPUT);
   Serial.begin(9600);
}

void loop() 
{
  while( Serial.available() >0 )     
  {
    result = Serial.read();
    if(result == 'A')             
    { 
      digitalWrite(Lamp,HIGH); 
    } 
    else if(result == 'B')
    {
      digitalWrite(Lamp,LOW); 
    }
    Serial.println(result);
  }  
}

1. Kalian hubungkan arduino dengan laptop/pc menggunakan kabel usb 
2. Kalian buka device manager,untuk memastikan arduino sudah terhubung (COM PORT)
3. Kalian buka aplikasi.exe yang sudah saya sertakan/download  
4. Kalian pilih COM yang kalian gunakan / COM arduino 
5. Kalian tekan tombol connect jika terhubung maka tombol connect akan berubah warna 
6. Kalian coba tekan tombol Lamp on (lihat apa yang terjadi pada board arduino)
7. Kalian coba tekan tombol Lamp off (lihat apa yang terjadi pada board arduino)

Budayakan mempelajarinya hingga benar benar paham,jika merasa belum paham bisa ajukan pertanyaan di komentar atau contact facebook saya atau email fickrymhd@gmail.com

Share:

Sabtu, 04 Maret 2017

Kontrol Motor Stepper Menggunakan Arduino & Driver TB6600


Salam elektro, bertemu lagi dengan saya, pada tulisan kali ini saya akan memberikan tutorial cara mengendalikan motor stepper,silahkan kalian baca sampai benar benar paham.


Siapkan alat dan bahan :

Motor Stepper 
Motor stepper adalah salah satu jenis motor dc yang dikendalikan dengan pulsa-pulsa digital. Prinsip kerja motor stepper adalah bekerja dengan mengubah pulsa elektronis menjadi gerakan mekanis diskrit dimana motor stepper bergerak berdasarkan urutan pulsa yang diberikan kepada motor stepper tersebut.

Motor stepper mempunyai 2 jenis yaitu 
1. Motor Stepper Bipolar 
2. Motor Stepper Unipolar 

Untuk lebih jelasnya kalian bisa baca disini 

Driver Motor Stepper TB6600
Driver ini berfungsi untuk mengatur current,puls,direction yang masuk pada motor stepper 

CATATAN !
a. Pastikan coil motor stepper tidak terbalik 
b. Pastikan power tidak terbalik  
c. Pastikan current tidak berlebihan 

1. Pada tutorial ini,saya menggunakan motor stepper bipolar,motor ini mempunyai 4 buah Kabel output,dan 2 buah coil,sebelum kalian menggunakannya,kalian ukur dulu tiap tiap kabel,kalian ukur menggunakan multimeter,gunakan skala ohm/buzzer,sambungkan prob 1 & prob 2 multimeter pada sembarang kawat (2 kabel),jika 2 kabel tersambung atau ukuran ohm berada pada posisi penuh,maka 2 kabel itu adalah coil 1 (A- A+) dan 2 kabel lagi adalah coil 2 (B- B+)

2. Pada driver motor stepper terdapat beberapa pinout fungsinya


- VCC & GND     *Power untuk driver motor tegangan biasanya menggunkan 9 - 42 volt
- A- A+ B- B+     *Output untuk motor stepper
- PUL - (PUL)     *Tegangan gnd / negatif untuk driver
- PUL+ (+5V)      *Input pulsa dari arduino 
- DIR-  (DIR)       *Tegangan gnd / negatif untuk driver
- DIR+ (+5V)       *Input logika HIGH LOW dari arduino berfungsi untuk mengendalikan                                            arah putaran motor stepper (CW / CCW)
- EN                    *Tidak dipakai

Pada Driver ini terdapat pengaturan (Switch) urrent dan micro step pada module driver,bisa kalian baca tabel yang tercetak pada modul tersebut
- Solusi jika motor panas,berarti current terlalu besar,kalian atur switch pada posisi current kecil dan bisa menggerakan motor (cukup) 

WIRING ! 
Sambungkan semua komponen sesuai dengan gambar 



Jika kalian menggunakan motor jenis unipolar (6 kabel) kalian bisa pakai wiring seperti dibawah ini 

1. Warna black dan green merupakan 1 coil (coil A)
2. Warna red dan blue merupakan 1 coil (coil B)
3. Warna yellow dan white tidak dipakai


Metode 1

// Fickry Muhammad

void setup() 
{
  pinMode(8, OUTPUT); // Direction
  pinMode(9, OUTPUT); // Pulse
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

void loop() 
{
  digitalWrite(9, HIGH);
  delayMicroseconds(60);
  digitalWrite(9, LOW); 
  delayMicroseconds(60);
  digitalWrite(8, HIGH);
}

Metode 2

// Fickry Muhammad
const int stepPin = 9; 
const int dirPin = 8; 
 
void setup() 
{
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); 
  for(int x = 0; x < 1000; x++) {
    digitalWrite(stepPin,HIGH); 
    delayMicroseconds(500); 
    digitalWrite(stepPin,LOW); 
    delayMicroseconds(500); 
  }
  delay(1000); 
  
  digitalWrite(dirPin,LOW); 
  for(int x = 0; x < 1000; x++) 
  {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}
Metode 3

// Fickry Muhammad
#include <Stepper.h>  
 
int in1Pin = 8;
int in2Pin = 9;
 
Stepper motor(200, in1Pin, in2Pin);  
 
void setup()
{
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
  
  while (!Serial);
  
  Serial.begin(9600);
  motor.setSpeed(2000);
}
 
void loop()
{
  if (Serial.available())
  {
    int steps = Serial.parseInt();
    motor.step(steps);
  }

  // motor.step (2000);
}


1. Kalian coba salah satu program diatas,lihat perubahan yang terjadi pada motor stepper

2. Motor ini akan berputar pada acuan step yang terlah ditentukan,jika program diberikan 400 step,maka motor akan berputar sampai 400 step,setelah itu motor akan diam 

Budayakan mempelajarinya hingga benar benar paham,jika merasa belum paham bisa ajukan pertanyaan di komentar atau contact facebook saya atau email fickrymhd@gmail.com

Share:

Kamis, 25 Agustus 2016

Komunikasi Serial Master Slave

Sebelumnya apa kalian sudah tau apa itu master slave ? 

Komunikasi antar Mikro/Arduino dengan menggunakan serial data sehingga antar mikrokontroller memiliki komunikasi yang bershinambungan dan saling memiliki keterkaitan, dalam serial slave-master minimal dua mikrokontroller terhubung, maksimal tak terhingga selama masih terjadinya komunikasi antar mikrokontroller. Dalam komunikasi slave-master digunnakan serial komunikasi,serial merupakan komunikasi data dengan pengiriman data secara satu per satu berurutan dimulai dari LSB (Least Significant Bit) sampai dengan MSB (Most Significant Bit), dengan menggunakan satu jalur kabel data dalam satu waktu,untuk lebih jelasnya bisa kalian baca baca di google.
Singkatnya sih master slave itu seperti boss dan anak buah,master itu bossnya sedangkan slave itu anak buahnya,jadi ketika master memanggil anak buah untuk memberikan data maka anak buah tersebut akan segera memberikannya,data data yang sudah diberikan oleh pada anak buah/slave maka akan di tampung pada boss/master kemudian data tersebut akan diolah oleh boss/master untuk berbagai aplikasi,oke kita lanjut aja ke bagian wiring dan programming,oh iya kali ini saya menggunakan arduino untuk aplikasi master slavenya,dan menggunakan proteus untuk simulasinya,mudah mudahan bermanfaat.

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Uno/Nano/Mega (sama saja) (jumlah disesuaikan) 
  • Push button
  • Kabel usb arduino 
  • Kabel jumper disesuaikan dengan kebutuhan
  • Download simulasi proteus 
1. Yang pertama kalian wiring master board dan board slave"

Catatan !
a. Jumlah slave jangan terpacu pada gambar bisa kalian sesuaikan dengan kebutuhan
b. Pastikan hubungan RX TX antara mastre dan slave sudah benar 
c. Hasil simulasi dan harware pasti berbeda,jika kaliaan membuatnya langsung pada hardware kalian atur delay pada programnnya (lebih lama) 
d. Setelah kalian berhasil membuatnya,budayakan untuk mempelajarinya,jangan hanya copy paste saja,hasil dari usaha sendiri lebih puas meskipun itu sederhana

2. Copy paste sketch/program di bawah ini  ke dalam software arduino

Master

char patch;

void setup() {
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(A0,INPUT_PULLUP);
  pinMode(A1,INPUT_PULLUP);
  pinMode(A2,INPUT_PULLUP);
  pinMode(A3,INPUT_PULLUP);
}

void loop() 
{
  if (!digitalRead(A0))Serial.print('1');delay(5);
  if (!digitalRead(A1))Serial.print('2');delay(5);
  if (!digitalRead(A2))Serial.print('3');delay(5);
  if (!digitalRead(A3))Serial.print('4');delay(5);
  
  if (Serial.available() > 0)
  { 
    
  patch = Serial.read();
    
    if (patch == '5')
    {
    digitalWrite(13,HIGH);
    }
    if (patch == '6')
    {
    digitalWrite(12,HIGH);
    }
    if (patch == '7')
    {
    digitalWrite(11,HIGH);
    }
    if (patch == '8')
    {
    digitalWrite(10,HIGH);
    }
  }
}

Slave 1

bool send_data = true;
bool enable    = true;
char read_data;

int addres  = 2;
int digital = 1;
int adc     = 175;

void setup() {
Serial.begin(9600);  
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
}

void loop() 
{
    if (Serial.available() > 0)
    {
    read_data = Serial.read();
      if (read_data == '1')
      {
        if (send_data = true)
        {
        digitalWrite(13,HIGH);
        delay(100);
        Serial.print('5');
        send_data = false;
        enable = false;
        Serial.end();
        digitalWrite(13,LOW);
        delay(100);
        Serial.begin(9600);   
        }
      }
      else
      {
      Serial.print(" "); 
      Serial.end();
      delay(100);
      Serial.begin(9600); 
      }
    } 
}
3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini

5. Sekarang kalian buat rangkaiannya pada software simulasi proteus isis,atau bisa kalian download di atas

Prinsip Kerja
Karena ini adalah program dasar dari aplikasi master slave, jadi saya menggunakan push button untuk trigger memanggil slavenya,pada mode startup kalian di perintahkan untuk menekan salah satu push button pada board master,contoh menekan push button 1,artinya kalian memanggil slave 1,ketika slave 1 sudah menjawab dari panggilan master maka slave 1 akan mengirim data pada master dan master akan mengolah data kiriman dari slave 1 untuk menghidupkan led,begitupun untuk slave slave selanjutnya semoga membantu.

Budayakan mempelajarinya hingga benar benar paham,jika merasa belum paham bisa ajukan pertanyaan di komentar atau contact facebook saya atau email fickrymhd@gmail.com 

Share:

Selasa, 23 Agustus 2016

Arduino Control Brushless Motor


Oke karena akhir akhir ini saya lagi seneng sama aeromodeling,akhirnya saya akan memadukan antara arduino dan motor brushless yang sering dipakai pada quadcopter,helicopter dll,nah pada tutorial kali ini saya akan membagi tutorial cara control motor brushless menggunakan arduino oke langsung aja 


TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Uno/Nano/Mega (sama saja)
  • ESC (Electric Speed Controller) (> 10 ampere)
  • Battery 1000mAh 7.4 Volt (Minimal)
  • Motor Brushless > 920 KV
  • Potensio 10K
1. Yang pertama kalian wiring antara motor dan arduino dan komponen lainnya
Catatan !
a. Gunakan battery dengan sesuai dengan kebutuhan,untuk percobaan ini menggunakan battery 1000mAh 7.4 volt sudah cukup
b. Hubungan kabel dari esc ke motor itu bebas,jika kalian ingin membalikan arah putaran motor tinggal kalian tukarkan saja salah satu kabel yang menyambung ke motor dari esc,prinsipnya seperti motor 3 phase 
c. pin signal yang digunakan biasanya berwarna putih atau orange,nah pin tersebut yang akan menyambung pada port pwm arduino


2. Copy paste sketch/program di bawah ini  ke dalam software arduino

3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini

5. Sekarang kalian buka serial monitor pada software arduino (pastikan COMnya sudah benar),amati data yang masuk pada serial monitor  

Prinsip Kerja
motor akan semakin cepat berputar ketika nilai pwm semakin besar,nilai pwm tersebut diatur oleh potensio,nah esc tersebut yang dapat mengatur motor brushlessnya 

Share:

Kamis, 04 Agustus 2016

Jam Digital DS1307 LCD 16X2 FULL SHOW

 JAM DIGITAL DS1307 FULL SHOW
VIA ARDUINO


Salam elektro,pada beberapa jenis jam digital biasanya tidak menggunaka ic backup data,jadi ketika listrik aliran listrik di rumah kalian padam,jam akan mereset pad posisi semula bisanya 12.00 atau tergantung program yang dibuat oleh pabrikan,nah banyak yang bertanya" bagaimana sih agar waktu tersebut tidak reset dengan sendiri,artinya ketika listrik padam,jam tertap menghitung clock detik,pada tutorial kali ini aruselektronika akan memberi solusinya,pada postikan kali ini aruselektronika menambahkan beberapa data yang tampil pada lcd 16x2,silahkan kalian simak penjelasannya dibawah ini.

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Nano/Uno/Mega(sama saja)
  • IC DS1307
  • Crystal 32.768 Khz
  • Breadboard
  • Resistor 10k
  • Laptop
  • Software arduino ide
  • Kabel usb
  • Kabel male to female
  • Library <Wire.h>  (tutorial instal library klik disini)
  • Library "RTClib.h"  (tutorial instal library klik disini)
  • Library <LiquidCrystal.h> (tutorial instal library klik disini)
  • Download simulasi proteus (cara simulasi arduino di proteus klik disini)
1. Sambungkan board arduino & komponen jam lain (sesuai gambar dibawah) 
 
    
CATATAN !
a. Jangan lupa perhatikan sambungan pin SCL dan SDA & pullup resistor 10k,dalam beberapa kasus bila pin tersebut terbalik maka lcd akan menampilkan 65:65:65
b. Apabila ic ds1307 kalian belum pernah sama sekali diisi data bisa kalian hapus "//" (artinya komentar) pada bagian program rtc.adjust(DateTime(2014, 1, 21, 3, 13, 12)); setting manual jam menit detik tanggal bulan tahun dan rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); setting data otomatis menyesuaikan dengan jam di laptop kalian silahkan kalian pilih salah satu   

2. Copy paste sketch/program di bawah ini  ke dalam software arduino 
/*
 * By Fickry Muhammad
 */
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>

RTC_DS1307 rtc;
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

char weekdays[][7]={"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
char months[][12] = {"No","Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
byte icon1[8]={B00000,B00100,B01110,B01110,B01110,B11111,B00100,B00000};

int var; 
int temp;

void setup () {
  lcd.createChar(0,icon1);
  //Serial.begin(9600);
  Wire.begin();
  rtc.begin();
  lcd.begin(16,2);

  Wire.beginTransmission(0x68);
  Wire.write(0x07); // move pointer to SQW address
  Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
  Wire.endTransmission();


  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    //rtc.adjust(DateTime(2014, 1, 21, 3, 13, 12));
  }else{
    Serial.println("RTC is running!");
    //rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {

  /*
   byte newChar[8] = {
 B00100,
  B01110,
  B01110,
  B01110,
  B01110,
  B01110,
  B11111,
  B00100
};
   */

    /*
     #include <LiquidCrystal.h>
 
LiquidCrystal lcd(5,6,7,8,9,10);
 
byte icon1[8]={B00000,B00100,B01110,B01110,B01110,B11111,B00100,B00000};
void setup()
{
 lcd.begin(16,2);
 lcd.createChar(0,icon1);
 
}
 
void loop()
{
 lcd.write(byte(0))
}
     */
    DateTime now = rtc.now();
    var=analogRead(A0);
    temp = ((var*500)/1024);

    //Serial.println(weekdays[now.dayOfWeek()]);

    char text[50];
    char text2[50];
    char dayofweek[50]; 
    
    //Via Serial
    //sprintf(text, "This Time Is = %02d:%02d:%02d ",  now.hour(),now.minute(),now.second());
    //sprintf(text2, "This Date Is = %02d:%02d:%02d", now.day(),now.month(),now.year());
    //Serial.print(text);
    //Serial.print("\t");
    //Serial.print("\t");
    //Serial.print("\t");
    //Serial.print(text2);
    //Serial.println();
    //Serial.println(dayofweek);
    //*Via LCD
    sprintf(text, "%02d:%02d:%02d ",  now.hour(),now.minute(),now.second());
    sprintf(text2, "%02d",now.year());
    lcd.setCursor(0,1);lcd.print(text);
    lcd.setCursor(12,1);lcd.print(temp);lcd.print(char(223));lcd.print("C");
    lcd.setCursor(0,0);lcd.print(weekdays[now.dayOfWeek()]);lcd.print(",");
    lcd.setCursor(5,0);lcd.print(now.day());lcd.print(" ");lcd.print(months[now.month()]);lcd.print(" ");lcd.print(text2);
    lcd.setCursor(9,1);
    if(now.hour()>12){lcd.write(byte(0));}else{lcd.print("PM");}
    
    /*
    lcd.setCursor(0,0);lcd.print(weekdays[now.dayOfWeek()]);
    lcd.setCursor(5,0);lcd.print(text);
    lcd.setCursor(0,1);lcd.print(months[now.month()]);
    lcd.setCursor(5,1);lcd.print(text2);
    */
    /*
    switch (now.dayOfWeek()){
      case 1:sprintf(dayofweek,"Senin");break;
      case 2:sprintf(dayofweek,"Selasa");break;
      case 3:sprintf(dayofweek,"Rabu");break;
      case 4:sprintf(dayofweek,"Kamis");break;
      case 5:sprintf(dayofweek,"Jum'at");break;
      case 6:sprintf(dayofweek,"Sabtu");break;
      case 7:sprintf(dayofweek,"Minggu");break;
    }
    */
      
    /*
    Serial.print(now.year());
    Serial.print('/');
    Serial.print(now.month());
    Serial.print('/');
    Serial.print(now.day());
    Serial.print(' ');
    Serial.print(now.hour());
    Serial.print(':');
    Serial.print(now.minute());
    Serial.print(':');
    Serial.print(now.second());
    Serial.println();
    */
    delay(200);
}
3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang 
belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini

5. Sekarang kalian coba lihat lcd 16x2 pada simulasi atau hardware jika sudah benar maka akan tampil data waktu seperti gambar dibawah ini


Share:

Selasa, 28 Juni 2016

Dimmer Lampu / Motor AC Via Arduino

Salam elektro,Dimmer adalah rangkaian yang bisa mengatur besaran dan juga tingkat cahaya lampu/motor yang menyala, kalian bisa mengaturnya mulai dari yang redup hingga ke remang-remang sampai ke nyala lampu yang terang, dan kalian juga bisa membuat rangkaian dimmer pengatur nyala lampu dengan pola sederhana, di dalam rangkaian dimmer ini, terdapat 4 komponen penting guna mengatur kerja dimmer ini, komponen TRIAC berfungsi untuk mengatur besaran tegangan AC yang masuk ke perangkat lampu ini, sementara komponen OPTOTRIAC dan arduino berfungsi untuk mengatur bias TRIAC guna menentukan titik on dan off pada komponen TRIAC ini.

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Uno/Nano/Mega (sama saja)
  • Variable resistor 10k
  • Resistor 100 Ohm (2)
  • Resistor 220 Ohm (2)
  • Lampu / Motor AC 220VAC
  • Sumber 220 VAC
  • Triac BTA08 
  • OptoTriac MOC3021
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software arduino ide
  • Download simulasi schematic (altium file) 
1. Sambungkan semua komponen sesuai dengan gambar atau bisa kalian coba dulu pada software proteus isis



CATATAN !

A. Menurut pengalaman saya kalian jangan salah memilih jenis optotriac karena optotriac     mempunyai 2 jenis yaitu yang menggunakan zero crossing dan tanpa zero crossing, untuk aplikasi ini kalian gunakan yang tanpa zero crossing MOC302x, apa itu zerocrossing ?  

B. Pastikan kalian mengunakan opto triac bukan optotransistor, mengapa harus demikian ? silahkan kalian baca baca lagi di google

C. Rangkaian tidak akan berjalan dengan sempurna pada simulasi, jadi kalian langsung saja membuat hardwarenya

D. Pastikan pin optotriac ,triac dll sudah sesuai

E. Dikarenakan rangkaian ini melibatkan arus AC,jadi kalian lebih berhati hati lagi 

F. Jika kalian menggunakan beban yang tinggi, gunakan tipe triac yang mempunyai ampere besar

2. Copy paste sketch/program di bawah ini  ke dalam software arduino atau bisa langsung kalian upload pilih arduino yang digunakan,com yang digunakan kemudian click Run on Arduino pada lembaran project (driver harus benar benar terinstal) 
 3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini

Instruction 
Pastikan rangkain sudah benar (sesuai),kalian beri supply pada board arduino,kemudian beri supply 220VAC pada lampu (be carreful),kalian coba putar tuas pada potensio,lihat perubahan yang terjadi pada lampu/motor, jika berhasil, lampu/motor akan terang atau redup/lambat cepat, sesuai putaran potensio (nilai potensio)

Development
1. Bisa kalian gunakan untuk control lampu kamar tidur kalian 
2. Bisa kalian gunakan untuk mengatur kecepatan motor universal AC



Share:

Jumat, 17 Juni 2016

Keycode 4x4 Basic

Keycode 4x4 Basic 
VIA ARDUINO



Salam elektro,sebelumnya aruselektronika sudah memberikan tuturial cara mengakses keypad dasar menggunakan arduino,nah karena ada beberapa request dari pembaca untuk memberikan tutorial membuat keycode akhirnya pada kesempatan ini aruselektronika baru bisa posting artikel keycode basic,apasih keycode ? untuk apa sih keycode ? initinya sih keycode berfungsi untuk mengurangi tingkat kejahatan,karena dengan menggunakan alat ini jika kalian ingin masuk ke suatu ruangan kalian harus memasukan dulu password,jika tidak bisa ya kalian akan  bisa dianggap penjahat :) 

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Uno/Nano/Mega (sama saja)
  • Keypad 4x4 
  • Lcd 16x2
  • Variable resistor 10k
  • Led Merah 5mm (1)
  • Led Hijau 5mm (1)
  • Resistor 220ohm (2)
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software arduino ide
  • Download library <LiquidCrystal.h> (tutorial instal library klik disini)
  • Download library <Keypad.h> (tutorial instal library klik disini)
  • Download simulasi proteus
1. Sambungkan semua komponen sesuai dengan gambar atau bisa kalian coba dulu pada software proteus isis 


CATATAN !
a. Sebelum kalian menyambungkan keypad pada arduino pastikan kalian sudah mengetahui mana bagaian row mana bagian bar pada keypad,agar data yang masuk tidak salah ketika keypad ditekan  

2. Copy paste sketch/program di bawah ini  ke dalam software arduino atau bisa langsung kalian upload pilih arduino yang digunakan,com yang digunakan kemudian click Run on Arduino pada lembaran project (driver harus benar benar terinstal) 
3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini

5. Jika kalian membuatnya pada simulasi,kalian coba play kemudian kalian tekan keypad sesuai instruksi/cara penggunaan dibawah ini 

Instruction 

kalian lihat pada bagian program String password = "1212"; itu adalah password yang ditanam pada board arduino (bisa kalian rubah sesuai keinginan),kemudian kalian lihat status led pada simulasi,led open dalam keaadaan off dan led close dalam keadan on,sekarang kalian coba tekan terlebih dahulu keypad secara sembarang,kemudian tekan enter ('#'),maka text pada lcd akan mencetak character "You Failed",sekarang kalian coba masukan password yang benar ('1212'),maka lcd akan mencetak character "Welcome In The Wolrd" dan led open akan on led close akan off,jika kalian 3x salah memasukan password maka lcd akan mencetak character "You Crime !!!" dan kalian tidak akan pernah bisa mencoba memasukan password kembali kecuali kalian me-reset arduino tersebut 

Development
Ini adalah keycode dasar,coba kalian kembangkan dengan menambahkan beberapa feature contohnya merubah password,reset lewat keypad dan lain lain,kalian juga bisa menambahkan motor untuk membuka pintu tersebut secara otomatis  


Share:
Copyright © FILAB | Powered by FILAB
Design by Fickry Muhammad | Technology by Filab.id