SMK Binawiyata Sragen

  • This is default featured slide 1 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 2 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 3 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 4 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

  • This is default featured slide 5 title

    Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

Membuat User Online Sederhana Pada Halaman Website (PHP)

Seringkali  kita menjumpai sebuah aplikasi (khususnya aplikasi web) seperti facebook, yahoo, gmail, dlsb. Dimana terdapat list atau daftar pengguna / user yang sedang online saat sesi berlangsung. Pada artikel ini, akan diulas sedikit tentang cara pembuatan aplikasi tersebut secara sederhana. Sebenarnya ada beberapa cara untuk menampilkan data user yang sedang online saat sesi sedang berlangsung, salah satunya dapat menggunakan session atau dapat juga menggunakan parameter baru (istilah saya sendiri lho). Parameter baru yang seperti apa sih ? kok seumur-umur di dunia perwebsite’an baru dengar kali ini. Yah, mungkin itu hanya sekedar istilah saja, maklum penulis mempelajari ini semua dengan cara otodidak dengan bantuan internet. Ok, Let’s start…..

Untuk memudahkan, akan saya bagi menjadi 3 bagian utama :
  1. Bagian Login, yang berfungsi untuk mengetahui siapa yang boleh mengakses aplikasi tsb, apakah user atau bukan. Disini juga akan dilakukan pencocokan user-id dan password user.
  2. Bagian User Log, Apabila berhasil melewati bagian pertama, data user akan di simpan ke dalam basis data (data yang di simpan meliputi : jam login, hari atau tanggal login, nama user, dan status login). Status login inilah yang saya istilahkan parameter baru.
  3. Bagian Penampil, Berfungsi untuk menampilkan siapa saja user yang sedang mengakses sistem (user online) mengacu pada status user.
Ok dehh, selanjutnya langsung ke proses pembuatannya :

Step 1
Buat Database dan Tabel-nya, seperti gambar berikut (hanya contoh) :
Database Name : user_online ; Tabel Name : user & log

Gambar 1. Struktur Tabel user

Gambar 2. Struktur Tabel log
Step 2
Proses pembuatan Halaman Login / Login Page (index.php)


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script language="javascript">
function validasi(form){
if (form.username.value == ""){
alert("Anda belum mengisikan Username.");
form.username.focus();
return (false);
}

if (form.password.value == ""){
alert("Anda belum mengisikan Password.");
form.password.focus();
return (false);
}
return (true);
}
</script>

<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<head>
<title>LOGIN</title>
</head>
<body>
<form name="login" action="cek_login.php" method="POST" onSubmit="return validasi(this)">

<br /><br /><br /><br />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<table cellpadding="0" cellspacing="0">
<tr>
<td height="25">Username :</td>
<td> &nbsp;&nbsp;
<input type="text" name="username"  /></td></tr>
<tr><td height="30">Password :</td>
<td> &nbsp;&nbsp;
<input type="password" name="password" /></td></tr>

<tr><td colspan="2"><div align="right">
<input name="submit"  type="submit" value="LOGIN" /></div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</form>

</body>
</html>
Step 3
Membuat koneksi ke database (koneksi.php)
Source Code :

<?php
// -- Host, Username dan Password Database
$host = "localhost";//db-host
$username = "root";//db-user
$password = "123456";//db-password
$db = "user_online";//db-name

// Melakukan koneksi ke database
mysql_connect($host,$username,$password) or die("Koneksi gagal");
mysql_select_db($db) or die("Database tidak bisa dibuka");
?>
Step 4

Proses Validasi / Pencocokan data user & password ke Database (cek_login.php)

Source Code :
<?php
include "koneksi.php";
function antiinjection($data){
$filter_sql = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ENT_QUOTES))));
return $filter_sql;
}

$username = antiinjection($_POST[username]);
$pass     = antiinjection($_POST[password]);

$login=mysql_query("SELECT * FROM user WHERE username='$username' AND password='$pass'");
$ketemu=mysql_num_rows($login);
$r=mysql_fetch_array($login);

// Apabila username dan password ditemukan
if ($ketemu > 0)
{
session_start();
session_register("username");
session_register("password");

$_SESSION[username]     = $r[username];
$_SESSION[password]     = $r[password];

$jam = date("H:i:s");
$tgl = date("Y-m-d");

mysql_query("INSERT INTO log(username,
tanggal,
jamin,
jamout,
status)
VALUES('$_SESSION[username]',
'$tgl',
'$jam',
'logged',
'online')");

header('location:home.php');
}
else
{
echo "<center><br><br><br><br><br><br><b>LOGIN GAGAL! </b><br>
Username atau Password Anda tidak benar.<br>";
echo "<br>";
echo "<input type=button value='ULANGI LAGI' onclick=location.href='index.php'></a></center>";

}
?>

Step 5

Proses selanjutnya bila login berhasil (home.php)
Source Code :

<?php
include "koneksi.php";
session_start();
if (empty($_SESSION[username]) AND empty($_SESSION[password]))
{
header('location:index.php');
}
else
{
?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>HOME</title>
<style>
th{
color: #FFFFFF;
font-size: 8pt;
text-transform: uppercase;
text-align: center;
padding: 0.1em;
border-width: 1px;
border-style: solid;
border-color: #969BA5;
border-collapse: collapse;
background-color: #265180;
}
</style>
</head>
<body>                  
<?php                 
echo"
<center>USER ONLINE
<table border=1 width='650' align=center>
<tr><th>No</th><th>Username</th><th>Tanggal Login</th><th>Jam Login</th><th>Jam Logout</th><th>Status</th></tr>";
$sql = mysql_query("SELECT * FROM log ORDER BY no DESC");    
$no=1;
while($d=mysql_fetch_array($sql))
{
echo "<tr><td align=center>$no</td>
<td align=center>$d[username]</td>
<td align=center>$d[tanggal]</td>
<td align=center>$d[jamin]</td>
<td align=center>$d[jamout]</td>";
if($d[status]=='offline')
{
echo"<td style='background-color:red' align=center>OFFLINE</td>";
}      
else
{
echo"<td style='background-color:00ff00' align=center>ONLINE</td>";
}                            
echo"</tr>";
$no++;      
}
echo "</table>";    
echo "<br /><br /><input type=button value='LOGOUT' onclick=location.href='logout.php'></a></center>";    
?>             
</body>
</html>
<?php
}
?>

Step 6

Proses keluar / Logout (logout.php)

Source Code :
<?php
include "koneksi.php";
$jam = date("H:i:s");
session_start();                        
mysql_query("UPDATE log SET jamout='$jam',
status='offline'
WHERE username = '$_SESSION[username]' AND jamout='logged' AND status='online'");
session_destroy();
header('location:index.php');
?>
Tamat ¦..

Pada aplikasi diatas masih memiliki beberapa kekurangan, mohon koreksi dari kawan-kawan dan para pembaca yang budiman. Saran kedepannya untuk user online ini akan lebih baik lagi apabila dipadukan dengan AJAX, sehingga user yang baru melakukan proses login dapat diketahui langsung tanpa me-reload atau me-refresh halaman website tersebut.
Share:

Bilingual Website (PHP & MySQL)

Pernahkah teman-teman memanfaatkan fasilitas / tools google translate ? Pasti rata-rata menjawab “Pernah”. Tetapi yang saya maksud disini adalah tools google yang berfungsi untuk menterjemahkan halaman web yang banyak kita temui pada website atau blog pada umumnya, yang menyediakan banyak pilihan bahasa (Multi Language) pada website tersebut. Umumnya berupa widget yang disediakan oleh mbah google untuk selanjutnya dipasang pada halaman webiste atau blog kita (lihat gambar 1). Nah, udah tau kan sekarang ? trus apa hubungannya sama judul artikel diatas ? kan judulnya cuma bilingual alias 2 bahasa, kalau pakai widget google translate kan bisa bermacam-macam bahasa. Kalau sudah begitu ya kembali ke kebutuhan saja, tergantung keinginan si pemilik web tersebut. Tetapi terkadang dengan pemanfaatan widget multi bahasa tersebut memiliki kekurangan, salah satunya adalah beberapa hasil translation yang kurang sesuai sehingga informasi yang akan ditampilkan menjadi kurang relevan. Pada web-web papan atas yang dibangun secara profesional, ternyata jarang kita temui widget multi bahasa tersebut. Mereka lebih cenderung menggunakan translation atau terjemahan yang berasal dari basis data (database) mereka sendiri.

Gambar 1. Widget Google Translate

Diartikel edisi ini saya hanya ingin sekedar share tentang pembuatan website dwi bahasa tersebut. Sebenarnya tidak harus dwi bahasa sih, cm sebagai contoh aja biar ga banyak-banyak bikinnya. Mau pake multi bahasa juga gpp, sama aja prosesnya. Tetapi disini saya memberi contoh yang sangat sederhana sekali lho, mungkin kalau kita terapkan pada website yang komplek tentu kurang effisien. Yaaaah, namanya mencoba kan ga ada salahnya daripada tidak sama sekali.

Ok, kita mulai saja daripada banyak bicara kayak koruptor….hehehe..

Biar beda ama bahasa-bahasa yang tersedia di widget nya si-mbah google, kali ini kita akan membuat sebuah halaman website sederhana dimana terdapat 2 pilihan bahasa yang tersedia, yaitu : Bahasa Indonesia dan Bahasa Jawa. Demonya bisa kawan lihat pada tautan berikut :


Source Code :

<?php
  session_register('bahasa');
  include "koneksi.php";  

  if($_GET['lang'])
  {
    $_SESSION['bahasa']=$_GET['lang'];
    header('location:index.php');
  }
  else
  {
     if(!$_SESSION['bahasa'])
     {
     $_SESSION['bahasa']='indonesia';
     header('location:index.php');
     }
   }

include "".$_SESSION['bahasa'].".php";
?>


Source code diatas merupakan bagian inti yang berfungsi untuk SWITCHING. Hah?? istilah apa lagi tuh ??? itu istilah saya sendiri alias ngawur.com. hahahaha…. Tetapi pada intinya code diatas berfungsi untuk proses peralihan dari bahasa satu ke bahasa lainnya dengan memanfaatkan session.

Ok, dech ga perlu panjang lebar langsung aja download Full Source Code nya Di SINI

Soalnya kalo Sorce nya di tulis semua disini jadi panjang dehhh artikel nya….hahahaha

-Selesai-
Share:

Widget Setup for Blogger

Step 1.
Get your widget code

Go to your Blog's profile on NetworkedBlogs, click the "Get Widget" link. Copy the text in for Option 1.
Screen_shot_2012-01-16_at_5.43.46_PM.png

Step 2.
Navigate to Layout > Page Elements, then click "Add a Gadget"

help_blogger2.png

Step 3.
From the pop-up list, select "HTML/Javascript"

help_blogger3.png

Step 4.
Paste the HTML code you copied from NetworkedBlogs into the text area and click save. 

help_blogger4.png

Step 5.
You're done. You can now verify your blog

Go to your Blog's profile on NetworkedBlogs, click the "Get Widget" link, then press the Verify button.

http://infonetmu.blogspot.com/2011/02/download-kamus-indonesia-inggrisinggris.html
Share:

Stop Watch dengan Atmega32

Rangkaian :
Code List :
'Program Stopwatch
$regfile = "m32def.dat"
$crystal = 12000000

'deklarasi LCD
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls

'Deklarasi variabel
Dim Pengali As Word
Dim Detik_1 As Byte
Dim Detik As Byte
Dim Menit As Byte
Dim Jam As Word
Dim Status As Byte
Dim Status2 As Byte
Dim Status3 As Byte

'konfigurasi timer
Config Timer0 = Timer , Prescale = 256
Config Debounce = 30
'setting porta
Ddra = 0
Porta = 255

'pengaktifan interupsi timer
On Ovf0 Int_timer0

'penggantian nama variabel
Pin_reset Alias Pina.2
Pin_on_off Alias Pina.1
Pin_capture Alias Pina.0

'setting nilai awal variabel
'Pin_reset = 1
'Pin_on_off = 1
'Pin_capture = 1
Status = 0
Status2 = 1


'pengaktifan timer0
Enable Timer0

Do
 If Pin_capture = 0 Then
   Bitwait Pin_capture , Set
   Incr Status2
   Cls
   Locate 1 , 1
   Lcd "BINA ELEKTRONIK"
   Locate 2 , 1
   Lcd Jam ;
   Locate 2 , 3
   Lcd ":" ;
   Locate 2 , 4
   Lcd Menit ;
   Locate 2 , 6
   Lcd ":" ;
   Locate 2 , 7
   Lcd Detik ;
   Locate 2 , 9
   Lcd ":" ;
   Locate 2 , 10
   Lcd Detik_1 ;
   Locate 2 , 12
   Lcd Capture1
 End If
 If Status2 = 2 Then
   Locate 2 , 13
   Lcd "SLIP"
   End If
If Status2 = 2 Then
   Locate 2 , 11
   Lcd "       "
   End If
 If Pin_on_off = 0 Then
   Bitwait Pin_on_off , Set
   Incr Status

 End If

 If Pin_reset = 0 Then
      Pengali = 0
      Detik_1 = 00
      Locate 2 , 1
      Lcd "00"
      Locate 2 , 4
      Lcd "00"
      Locate 2 , 7
      Lcd "00"
      Locate 2 , 10
      Lcd "00"
      Detik = 00
      Menit = 00
      Jam = 00
 End If


 If Status > 2 Then
   Status = 1
 End If

 If Status2 > 2 Then
   Status2 = 1
   Cls
 End If

 If Status = 1 Then Enable Interrupts
 If Status = 2 Then Disable Interrupts

 If Status2 < 2 Then
   Locate 1 , 1
   Lcd "STOPWATCH"
   Locate 2 , 1
   Lcd Jam ;
   Locate 2 , 3
   Lcd ":" ;
   Locate 2 , 4
   Lcd Menit ;
   Locate 2 , 6
   Lcd ":" ;
   Locate 2 , 7
   Lcd Detik ;
   Locate 2 , 9
   Lcd ":" ;
   Locate 2 , 10
   Lcd Detik_1 ;
   End If
 If Status = 2 Then                                         ' tambahan
   Locate 2 , 13                                            ' tambahan
   Lcd "STOP"                                               ' tambahan
   End If                                                   ' tambahan
 If Status = 1 Then                                         ' tambahan
   Locate 2 , 13                                            ' tambahan
   Lcd ">>>>"                                               ' tambahan
 End If



Loop

Int_timer0:
   Incr Pengali
   If Pengali > 0 Then
      Pengali = 0
      Incr Detik_1
   End If
   If Detik_1 > 99 Then
      Detik_1 = 0
      Incr Detik
   End If
   If Detik > 59 Then
      Detik = 0
      Incr Menit
   End If
   If Menit > 59 Then
      Menit = 0
      Incr Jam
   End If
   Return
Share:

Pengendali motor stepper dengan keypad

Rangkaian ;

Code List :

$regfile = "m16def.dat"
$crystal = 1000000

Config Kbd = Portb
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 ,Rs = Portc.0 , E = Portc.1
Config Portd = Output
Config Porta = Input

Dim A As Byte , B As Byte , Key As Byte , C As Byte , D As Byte , E As Byte

Cls
Cursor Off

B = 0
D = 1

Q:
Locate 1 , 1
Lcd "Putaran :"
Locate 2 , 1
Lcd "Kecept  :"
Do
'************Read Keyboard
A = Getkbd()
If A > 15 Then
   Goto Q
Else
   Key = Lookup(a , Dta)
     If Key <= 9 Then
           B = B * 10
           B = B + Key
'*************Direction
          If D = 0 Then Lcd B
                   Waitms 270
               Elseif Key = 10 Then
                   Locate 1 , 11
                   Lcd "Kiri"
                   C = 1
                   D = 0
                   B = 0

               Elseif Key = 11 Then
                  Locate 1 , 11
                  Lcd "Kanan"
                  C = 2
                  D = 0
                  B = 0
'****************reset
               Elseif Key = 13 Then
                  Cls
                  D = 1
                  B = 0
                  Portd.0 = 0
                  Portd.1 = 0
                  Waitms 50
                  Goto Q
'****************Enter key
               Elseif Key = 14 Then
                   If D = 0 Then
                       Select Case C
                          Case 1 : Gosub R
                          Case 2 : Gosub T
                       End Select

                   End If
         End If

End If

Wait 1

Loop

End

Dta:
Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15

R:
Do
Portd = &B00000001 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001001 : Waitms B
  If Pina.0 = 1 Then
      Locate 2 , 1
      Lcd "Kecept:"
      B = 0
      Lcd B ; "          "
      Return
  End If

Loop

T:
Do
Portd = &B00001001 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000001 : Waitms B
   If Pina.0 = 1 Then
       Locate 2 , 1
       Lcd "Kecept:"
       B = 0
       Lcd B ; "          "
       Return
   End If

Loop
Share:

Program menampilkan penekanan tombol dengan display led

Rangkaian :



Code List :
'===================================================
'Program Saklar_1.bas
'Program untuk menampilkan kondisi saklar pada LED
'===================================================
Saklar Alias P2
Led Alias P0
Do
If Saklar = &HFF Then
Led = &HFF
Elseif Saklar = &HFE Then
Led = &HAA
Else
Led = 0
End If
Loop
End
Share:

Counter Up 00 - 99

Skemantik Counter Up 00-99



Souce Codenya :
'****************************************************************
'*  Name    : 59sec_Counter.BAS                                 *
'*  Author  : Likno                                             *
'*  Date    : 25.03.2012                                        *
'*  Version : 1.0.1                                             *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ Device Xt_osc , Wdt_off , Pwrt_on , Protect_off

Display Var Word
Counter Var Byte
Doonce Var Bit
Pbup Var Porta.0
Pbdn Var Porta.1

Trisa = 011
Trisb = 000000
Porta = 0
Portb = 0

Doonce = 0
Counter = 0

Hours Var Byte                                             
Minutes Var Byte                                           
Seconds Var Byte                                          
Ticks Var Byte                                             
U_flag Var Byte                                           
T0ie Var Intcon.5                                         
T0if Var Intcon.2                                        
Gie Var Intcon.7                                           
Ps0 Var Option_reg.0                                      
Ps1 Var Option_reg.1                                     
Ps2 Var Option_reg.2                                      
Psa Var Option_reg.3                                     
        ' (0= assigned to oscillator)
T0cs Var Option_reg.5                                     
        ' (1=External PORTA.4)
 Hours = 0                                                 
 Minutes = 0
 Seconds = 0
 Ticks = 0
 U_flag = 1                                               


Gie = 0                                                    
While Gie = 1 : Gie = 0 : Wend                             
Psa = 0                                                 
Ps0 = 1                                                   
Ps1 = 0                                                   
Ps2 = 1                                                    
T0cs = 0                                                   
Tmr0 = 0                                                   
T0ie = 1                                                   
Gie = 1                                                    

On Interrupt Goto Clock_int                                

Main:

    If U_flag = 1 Then                                     
        U_flag = 0                                      
        Counter = Seconds
        Display.byte0 =(counter Dig 1) << 4
        Display.byte1 =(counter Dig 0)
        Display = Display >> 4
        Portb = Display.byte0
    End If

Goto Main



Disable                                                    
Clock_int:
 Ticks = Ticks + 1                                         
 If Ticks <= 61 Then Clock_exit                            

' One second has elasped so update the time variables
 Ticks = 0                                                 
 Seconds = Seconds + 1                                     
 If Seconds >= 60 Then                                     
 Seconds = 0                                               
 Minutes = Minutes + 1                                     
 If Minutes >= 60 Then                                     
 Minutes = 0                                               
 Hours = Hours + 1                                         
 If Hours >= 23 Then                                       
 Hours = 0                                                 
 End If
 End If
 End If
 U_flag = 1                                                

Clock_exit:
 T0if = 0                                                  
Resume                                                     
Enable                                                     

End
Share:

Pengaturan Kecepatan Motor DC Dengan Mikrokontroler dengan BASCOM AVR

Penggunaan motor DC dewasa ini sudah sangatlah umum, salah satu kelebihan motor DC adalah relatif gampang didapat dan mudah diatur kecepatan putarnya. Secara umum pengaturan kecepatan motor DC adalah dengan menggunakan cara analog. Pada artikel kali ini akan dibahas contoh cara mengatur kecepatan motor DC dengan menggunakan mikrokontroller.
Mikrokontroler yang digunakan adalah Tipe AVR dari Atmel seperti mikrokontroler Atmega 8535, 16, 32. Informasi kecepatan motor akan ditampilkan pada modul LCD HD4480. Sedangkan sebagai driver motor menggunakan modul driver motor IC L298.
Cara pengaturan kecepatan yang digunakan adalah dengan menggunakan teknik PWM (Pulse Width Modulation), salah satu teknik untuk mengatur kecepatan motor DC yang umum digunakan. Dengan menggunakan PWM kita dapat mengatur kecepatan yang diinginkan dengan mudah. Teknik PWM untuk pengaturan kecepatan motor adalah, pengaturan kecepatan motor dengan cara merubah-rubah besarnya duty cycle pulsa. Pulsa yang yang berubah ubah duty cycle-nya inilah yang menentukan kecepatan motor. Besarnya amplitudo dan frekuensi pulsa adalah tetap, sedangkan besarnya duty cycle berubah-ubah sesuai dengan kecepatan yang diinginkan, semakin besar duty cylce maka semakin cepat pula kecepatan motor, dan sebaliknya semakin kecil duty cycle maka semakin pelan pula kecepatan motor. Sebagai contoh bentuk pulsa yang dikirimkan adalah seperti pada gambar 1, pulsa kotak dengan duty cycle pulsa 50%. Sedangkan sebagai contoh bentuk pulsa PWM adalah seperti pada gambar 2.
Seperti pada gambar 1, semakin besar duty cycle pulsa kotak, maka semakin lama pula posisi logika high. Jika motor diatur agar berjalan ketika diberi logika high, maka jika memberi pulsa seperti pada gambar 1 diatas, maka motor akan berada pada kondisi “nyala-mati-nyala-mati” sesuai dengan bentuk pulsa tersesebut. Semakin lama motor berada pada kondisi “nyala” maka semakin cepat pula kecepatan motor tersebut. Motor akan berputar dengan kecepatan maksimum jika mendapat pulsa dengan duty cycle 100%. Dengan kata lain motor mendapat logika high terus menerus.
Dengan mengatur besarnya duty cycle pulsa kotak yang dikirimkan, kita dapat mengatur banyaknya logika high yang diberikan pada motor, dengan kata lain mengatur lamanya waktu motor untuk berputar dalam satu periode pulsa. Jika lamanya waktu motor untuk berputar dalam satu periode pulsa ini berubah maka kecepatan purtaran motor juga akan berubah, sesuai dengan duty cycle atau waktu motor untuk berputar dalam satu periode pulsa.
===============================================================
PENGATURAN KECEPATAN MOTOR DC Berbasis Atmega8535
Skema dengan proteus:

Hasil simulasi dengan proteus:

Program Pengaturan Kecepatan Motor DC dengan Bascom AVR

1 $regfile = “m8535.dat”   ’menggunakan Atmega8535 sebagai preprosesor
  2 $crystal = 12000000      ’menggunakan crystal clock 12 MHz
  3 $eeprom                  'menggunakan fasilitas eeprom Atmega8535
  4
  5 ‘—————————inisialisasi lcd————————————
  6
  7 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
  8 Config Lcd = 16 * 2 : Cursor Off
  9
 10 ‘—————————inisialisasi pwm———————————–
 11
 12 Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up       ‘pwm dengan settingan fast pwm 10 bit
 13
 14 ‘—————————inisialisasi port——————————–
 15
 16 ‘inisialisasi tombol
 17 Config Portb = Input
 18
 19 ‘—————————pull up internal——————————–
 20
 21 Portb.0 = 1
 22 Portb.1 = 1
 23 Portb.2 = 1
 24 Portb.3 = 1
 25 Config Portd = Output
 26alias logika motor
 27 M1a Alias Portd.0
 28 M1b Alias Portd.1
 29 M2a Alias Portd.2
 30 M2b Alias Portd.3
 31
 32 ‘——————————alias——————————————–
 33
 34alias tombol
 35 Sw_ok Alias Pinb.3
 36 Sw_cancel Alias Pinb.2
 37 Sw_down Alias Pinb.1
 38 Sw_up Alias Pinb.0
 39
 40 ‘——————————————————————————-
 41
 42 Dim Pwm As Integer
 43 Dim Pwm_eprom As Eram Integer
 44 Home
 45 Lcd “Fahmizal_dte2006″
 46 Lowerline
 47 Lcd “Cek fungsi PWM”
 48 Wait 1
 49
 50 Do
 51 Pwm = Pwm_eprom
 52 If Sw_up = 0 Then : Incr Pwm : Waitms 10
 53 End If
 54 If Sw_down = 0 Then : Decr Pwm : Waitms 10
 55 End If
 56 If Pwm > 1023 Then : Pwm = 0 : Waitms 10
 57 End If
 58 If Pwm < 0 Then : Pwm = 1023 : Waitms 10
 59 End If
 60 Pwm_eprom = Pwm
 61 Cls
 62
 63 Home
 64 Lcd “tes uji pwm”
 65 Lowerline
 66 Reset M1a
 67 Reset M2a
 68 Set M1b
 69 Set M2b
 70 Pwm1a = Pwm
 71 Pwm1b = Pwm
 72 Lcd “nilai pwm:” ; Pwm1a : Waitms 100
 73 Loop
 74 End
Share:

Jam Digital dengan Mode 12/24

Rangkaian :

Source Code : Bascom AVR
$regfile = "m8def.dat"
$crystal = 1000000
'------------------------  lcd -----------------------------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Pind.0 , E = Pind.1 , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5
Cls

'---------------------------  ds 1307 -----------------------------------------
$lib "ds1307clock.lib"
'configure the scl and sda pins
Config Sda = Portd.7
Config Scl = Portd.6
'address of ds1307
Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1
'------------------------------ key --------------------------------------------
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
'------------------------------------------------------------------------------
Config Debounce = 30

Dim A As Byte , B As Byte , Data1 As Byte , C As Byte

Dim Seco As Byte , Mine As Byte , Hour As Byte

'----------------------------------------------------------------------------
Cursor Off
'-----------------------------
Cls
Locate 1 , 6
Lcd "Hello"
Locate 2 , 1
Lcd "WWW.elec4u.ir"
Wait 2

For A = 1 To 15
 Shiftlcd Left
Waitms 300
Next

Cls
'-------------------------------------------------------------------------------
Main:
Do
         Gosub Ds1307
         Gosub 24_12
         Gosub Chekkey

Loop
'-------------------------------------------------------------------------------
Ds1307:
        I2cstart                                            ' Generate start code
        I2cwbyte Ds1307w                                    ' send address
        I2cwbyte 0                                          ' start address in 1307
        I2cstart                                            ' Generate start code
        I2cwbyte Ds1307r                                    ' send address
        I2crbyte Seco , Ack                                 'sec
        I2crbyte Mine , Ack                                 ' MINUTES
        I2crbyte Hour , Nack                                ' Hours
        I2cstop

        Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)

        If Seco > 59 Then Seco = 0
        If Mine > 59 Then Mine = 0
        If Hour > 23 Then
        Hour = 0
        Gosub Seco
        End If

Return
'-------------------------------------------------------------------------------
 24_12:
 If Pinc.4 = 1 Then Gosub Disply_24
 If Pinc.4 = 0 Then Gosub Disply_12
 Return
'-------------------------------------------------------------------------------
Disply_24:

         Locate 1 , 1
         Lcd "Time = " ; Hour ; ":" ; Mine ; ":" ; Seco ; "      "
         Locate 2 , 6
         Lcd "(24)"
Return

'-------------------------------------------------------------------------------
Disply_12:

         If Hour = 0 Then Hour = 12
         If Hour > 12 Then Hour = Hour - 12

         Locate 1 , 1
         Lcd "Time = " ; Hour ; ":" ; Mine ; ":" ; Seco ; "      "
         Locate 2 , 6
         Lcd "(12)"
Return
'-------------------------------------------------------------------------------
Chekkey:

         Debounce Pinc.1 , 0 , Seco , Sub
         Debounce Pinc.2 , 0 , Mine , Sub
         Debounce Pinc.3 , 0 , Hour , Sub

Return
'---------------------------------------------
Seco:
         Incr Seco
         If Seco > 59 Then Seco = 0
         Seco = Makebcd(seco)
         I2cstart                                           ' Generate start code
         I2cwbyte Ds1307w                                   ' send address
         I2cwbyte 0                                         ' starting address in 1307
         I2cwbyte Seco
         I2cstop
Return

'-------------------------------------
Mine:
         Incr Mine
         If Mine > 59 Then Mine = 0
         Mine = Makebcd(mine)
         I2cstart                                           ' Generate start code
         I2cwbyte Ds1307w                                   ' send address
         I2cwbyte 1                                         ' starting address in 1307
         I2cwbyte Mine
         I2cstop
Return
'-------------------------------------

Hour:
         Incr Hour
         If Hour > 23 Then Hour = 0
         Hour = Makebcd(hour)
         I2cstart                                           ' Generate start code
         I2cwbyte Ds1307w                                   ' send address
         I2cwbyte 2                                         ' starting address in 1307
         I2cwbyte Hour
         I2cstop

Return
'-------------------------------------

End
Share:

Jam Digital menggunakan Mikro ATMega8 dan Bahasa BASCOM-AVR

Belajar menggunakan LCD dengan ATMega8535 tidaklah sulit, dengan menggunakan bahasa Bascom AVR hal ini menjadi mudah dilakukan terutama bagi pemula. Berikut adalah rangkaian konfigurasi pin pada mikro ATMega8535 dan contoh program yang dapat dicoba. Selamat Mencoba.

Gambar Rangkaian :

Rangkaian Tampilan LCD.
Kode Bascom AVR


1 $regfile = "m8def.dat"
2 $crystal = 1000000
3 '------------------------  lcd -----------------------------------------------
4 Config Lcd = 16 * 2
5 Config Lcdpin = Pin , Rs = Pind.0 , E = Pind.1 , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5
6 Cls
7 
8 '---------------------------  ds 1307 -----------------------------------------
9 $lib "ds1307clock.lib"
10 'configure the scl and sda pins
11 Config Sda = Portd.7
12 Config Scl = Portd.6
13 'address of ds1307
14 Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
15 Const Ds1307r = &HD1
16 '------------------------------ key --------------------------------------------
17 Config Pinc.1 = Input
18 Config Pinc.2 = Input
19 Config Pinc.3 = Input
20 Config Pinc.4 = Input
21 '------------------------------------------------------------------------------
22 Config Debounce = 30
23 
24 Dim A As Byte , B As Byte , Data1 As Byte , C As Byte
25 
26 Dim Seco As Byte , Mine As Byte , Hour As Byte
27 
28 '----------------------------------------------------------------------------
29 Cursor Off
30 '-----------------------------
31 Cls
32 Locate 1 , 1
33 Lcd "Jam Digital LCD"
34 Locate 2 , 1
35 Lcd "Bina Project"
36 Wait 2 

37 
38 For A = 1 To 15
39  Shiftlcd Left
40 Waitms 30
41 Next
42 
43 Cls
44 '-------------------------------------------------------------------------------
45 Main:
46 Do
47          Gosub Ds1307
48          Gosub 24_12
49          Gosub Chekkey
50 
51 Loop
52 '-------------------------------------------------------------------------------
53 Ds1307:
54         I2cstart                                            ' Generate start code
55         I2cwbyte Ds1307w                                    ' send address
56         I2cwbyte 0                                          ' start address in 1307
57         I2cstart                                            ' Generate start code
58         I2cwbyte Ds1307r                                    ' send address
59         I2crbyte Seco , Ack                                 'sec
60         I2crbyte Mine , Ack                                 ' MINUTES
61         I2crbyte Hour , Nack                                ' Hours
62         I2cstop
63 
64         Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)
65 
66         If Seco > 59 Then Seco = 0
67         If Mine > 59 Then Mine = 0
68         If Hour > 23 Then
69         Hour = 0
70         Gosub Seco
71         End If 

72 
73 Return
74 '-------------------------------------------------------------------------------
75  24_12:
76  If Pinc.4 = 1 Then Gosub Disply_24
77  If Pinc.4 = 0 Then Gosub Disply_12
78  Return
79 '-------------------------------------------------------------------------------
80 Disply_24:
81 
82          Locate 1 , 1
83          Lcd "Jam = " ; Hour ; ":" ;
84          If Mine < 10 Then
85             Lcd "0" ; Mine ; ":" ;
86          Else
87             Lcd Mine ; ":" ;
88          End If
89 
90          If Seco < 10 Then
91             Lcd "0" ; Seco
92          Else 

93             Lcd Seco
94          End If
95 
96          Locate 2 , 6
97          Lcd "(24 Jam)"
98 
99 Return
100 
101 '-------------------------------------------------------------------------------
102 Disply_12:
103 
104          If Hour = 0 Then Hour = 12
105          If Hour > 12 Then Hour = Hour - 12
106
107          Locate 1 , 1
108          Lcd "Jam = " ; Hour ; ":" ;
109          If Mine < 10 Then
110             Lcd "0" ; Mine ; ":" ;

111          Else
112             Lcd Mine ; ":" ;
113          End If
114
115          If Seco < 10 Then
116             Lcd "0" ; Seco
117          Else
118             Lcd Seco
119          End If
120
121          Locate 2 , 6
122          Lcd "(12 Jam)"
123 Return
124 '-------------------------------------------------------------------------------
125 Chekkey:
126
127          Debounce Pinc.1 , 0 , Seco , Sub
128          Debounce Pinc.2 , 0 , Mine , Sub
129          Debounce Pinc.3 , 0 , Hour , Sub
130 
131 

132 Return
133 '---------------------------------------------
134 Seco:
135          Incr Seco
136          If Seco > 59 Then Seco = 0

137          Seco = Makebcd(seco)
138          I2cstart                                           ' Generate start code
139          I2cwbyte Ds1307w                                   ' send address
140          I2cwbyte 0                                         ' starting address in 1307
141          I2cwbyte Seco
142          I2cstop
143 Return
144
145 '-------------------------------------
146 Mine:

147          Incr Mine
148          If Mine > 59 Then Mine = 0
149          Mine = Makebcd(mine)
150          I2cstart                                           ' Generate start code
151          I2cwbyte Ds1307w                                   ' send address
152          I2cwbyte 1                                         ' starting address in 1307
153          I2cwbyte Mine
154          I2cstop
155 Return
Share:

Jadwal Waktu Sholat

TIME WIB

TV EDUKASI LIVE

Popular Posts

Recent Posts

Pages