Anda di sini

Pemrograman

[TUTORIAL] Waoo!!! Terang - Redup Lampu Dapat Dikontrol Dengan Smartphone Android

Agus Ady Aryanto - 21 November 2015 23:31:40 0

Pada eksperimen yang lalu mengenai Kontrol Mati/Hidup Lampu dengan Android. Nah, sekarang mari kita bereksperimen lagi dengan menggontrol Terang dan Redup sebuah lampu tentunya dengan sebuah SmartPhone Android. Sistem ini akan menggunakan sebuah PWM (Pulse Width Modulation) atau bahasa kerennya kita mengatur lebar pulsa sinyal dalam suatu periode. Ayo sekarang mulai kita membuatnya, bahan yang wajib ADA :

  • Smartphone Android
  • Papan Arduino
  • Bluetooth
  • Tentunya LED

Disini eksperimen masih menggunakan LED nanti bila ingin lebih? bisa menggunakan lampu rumah dengan menambah sebuah Driver atau rangkaian baru. Karena dalam tutorial ini masih digunakan untuk belajar dan menambah pengalaman jadi disimpulkan No Problem. Sistem ini sama saja bila akan diaplikasikan dalam lampu rumah. Jadi, apa fungsinya nanti alat ini?? Jawabanya dapat digunakan untuk mengatur terang dan redup lampu sesuai keinginan kita misalkan kalau kita akan membaca bisa lampunya diterangkan kemudian jika ingin tidur maka tinggal diredupkan saja. Intinya Kita tidak perlu lagi mengunakan banyak lampu hanya sekedar untuk mengatur kondisi cahaya dalam ruangan rumah. Kelebihan yang lain? dapat dikontrol dengan Smartphone Android tanpa perlu lagi repot-repot dan buang waktu untuk mengurus terang dan redup lampu cukup buka aplikasi yang sudah diinstal dalam Smartphonenya dan Dikontrolah Lampu Rumahnya.

Oke langsung Sintaks Untuk Papan Arduino, tentunya buka dulu Arduino IDE-nya :

#include <MeetAndroid.h>
 
int DataMerah = 0;
int DataHijau = 0;
 
MeetAndroid meetAndroid;
 
int led_merah = 5;
int led_hijau = 6;
 
void setup(){
  Serial.begin(38400);
  meetAndroid.registerFunction(LEDMerah,'A');
  meetAndroid.registerFunction(LEDHijau,'B'); 
  pinMode(led_merah, OUTPUT);
  pinMode(led_hijau, OUTPUT);
  digitalWrite(led_merah, HIGH);
  digitalWrite(led_hijau,HIGH);
  delay(1000);
}
 
void loop(){
   
  meetAndroid.receive();
   
  if(DataMerah >= 0)
  {
    analogWrite(led_merah, DataMerah);
  }
   
  if(DataHijau >= 0)
  {
    analogWrite(led_hijau, DataHijau);
  }
 
}
 
void LEDMerah(byte flag, byte numOfValues)
{
  DataMerah = meetAndroid.getInt();
}
 
void LEDHijau(byte flag, byte numOfValues)
{
  DataHijau = meetAndroid.getInt();
}

Sintaks Untuk Android disini menggunakan Eclipse:

<RelativeLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"
    xmlns:tools="<a href="http://schemas.android.com/tools">http://schemas.android.com/tools</a>"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="14dp"
        android:text="Nilai PWM Merah :" />
 
    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:max="255"
        android:progress="0" />
 
    <SeekBar
        android:id="@+id/seekBar2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/seekBar1"
        android:layout_below="@+id/TextView01"
        android:max="255"
        android:progress="0" />
 
    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/seekBar1"
        android:layout_marginTop="34dp"
        android:text="Nilai PWM Hijau :" />
 
    <View
        android:id="@+id/ColorIndicator"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_alignLeft="@+id/seekBar2"
        android:layout_below="@+id/seekBar2"
        android:layout_marginTop="26dp"
        android:layout_weight="1" />
 
</RelativeLayout>
package com.example.ledpwmamarino;
import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;
import at.abraxas.amarino.Amarino;
 
public class MainActivity extends Activity implements OnSeekBarChangeListener{
    private static final String DEVICE_ADDRESS = "20:13:10:16:01:21";
    private static final String TAG = "PWM LAMP";
    final int DELAY = 100;
    SeekBar merahSekbar;
    SeekBar hijauSekbar;
    View colorIndicator;
    public TextView mViewShow, mViewShow2;
    int merah, hijau, biru;
    long lastChange;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Amarino.connect(this, DEVICE_ADDRESS);
         
        merahSekbar = (SeekBar) findViewById(R.id.seekBar1);
        hijauSekbar = (SeekBar) findViewById(R.id.seekBar2);
        colorIndicator = findViewById(R.id.ColorIndicator);
        mViewShow = (TextView) findViewById(R.id.textView1);
        mViewShow2 = (TextView) findViewById(R.id.TextView01);
      
        merahSekbar.setOnSeekBarChangeListener(this);
        hijauSekbar.setOnSeekBarChangeListener(this);
    }
     
    @Override
    protected void onStart() {
        super.onStart();
 
        // load last state
        ShamerahPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        merah = prefs.getInt("merah", 0);
        hijau = prefs.getInt("hijau", 0);    
         
   
        merahSekbar.setProgress(merah);
        hijauSekbar.setProgress(hijau);     
        colorIndicator.setBackgroundColor(Color.rgb(merah, hijau,biru));
        new Thread(){
            public void run(){
                try {
                    Thread.sleep(6000);
                } catch (InterruptedException e) {}
                Log.d(TAG, "update colors");
                updateAllColors();
            }
        }.start();
         
    }
 
    @Override
    protected void onStop() {
        super.onStop();
        // save state
        PreferenceManager.getDefaultSharedPreferences(this)
            .edit()
                .putInt("merah", merah)
                .putInt("hijau", hijau)                
            .commit();    
        Amarino.disconnect(this, DEVICE_ADDRESS);
    }
     
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        // TODO Auto-generated method stub
        if (System.currentTimeMillis() - lastChange > DELAY ){
            updateState(seekBar);
            lastChange = System.currentTimeMillis();
        }        
    }
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
        lastChange = System.currentTimeMillis();        
    }
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
        updateState(seekBar);
         
    }
     
private void updateState(final SeekBar seekBar) {
         
        switch (seekBar.getId()){
            case R.id.seekBar1:
                merah = seekBar.getProgress();
                updatemerah();
                mViewShow.setText("Nilai PWM Merah : "+ merah);
                break;
            case R.id.seekBar2:
                hijau = seekBar.getProgress();
                updatehijau();
                mViewShow2.setText("Nilai PWM Hijau : " + hijau);
                break;        
        }        
        colorIndicator.setBackgroundColor(Color.rgb(merah, hijau, biru));        
    }
     
    private void updateAllColors() {        
        updatemerah();
        updatehijau();       
    }
     
    // Kirim data ke arduino Arduino
    private void updatemerah(){        
        Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'A', merah);        
    }
     
    private void updatehijau(){
        Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'B', hijau);
    }    
}

Untuk videonya seperti terpampang diatas!!!

Sekian eksperimennya kali ini berikutnya akan lanjut dengan membuat Alarm Anti Maling tentunya masih menggunakan sebuah Android. Semoga bermanfaat dan Terima kasih.. bye..

12.460
Image

Agus Ady Aryanto

Profil pujangga Komang Agus Ady Aryanto belum tersedia.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.