Sabtu, 31 Oktober 2015

Latihan Tiga

Berlatih Arduino dengan LCD 16x2
Untuk latihan dasar arduino yang dihubungkan dengan lcd cobalah latihan dasar yang terdapat di contoh program bawaan. Klik File-Examples-liquid Crystal- Hello Word.
nah ini dia listing programnya.

--------------------------------------------------------------------------------------------------------
/*
  LiquidCrystal Library - Hello World


  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)


 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

--------------------------------------------------------------------------------------------------------

Program di atas di copy dari contoh program bawaan, sebagian komentar sengaja dihapus untuk menghemat layar dan memudahkan dalam menerangkan alur program. di baris atas program terdapat komentar yang menjelaskan bagaimana menghubungkan LCD dengan arduino

* LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:

Jika masih bingung bagaimana menghubungkan LCD dengan Arduino maka cobalah cari di mesin google dengan mengetik " LCD 16x2 arduino ". maka akan tampil halaman yang berhubungan dengan kata kunci tersebut. kunjungilah situsnya. Nah ini gambar cara menghubungkan  LCD dengan Arduino


Program di atas akan menghasilkan alat atau lcd menampilkan nilai detik waktu yang terus berjalan pada layar LCD baris ke 2 dan tulisan Hello World pada baris pertama. Nah coba rekan-rekan ganti hello world dengan kata Ini budi dan lakukan compiler dan upload ke alat niscaya tulisan akan berubah dengan kata ini budi.
Inti belajar mikrokontroller adalah terus belajar menulis programnya sehingga seorang programer akan menjadi mahir dengan sendirinya.cobalah rekan rekan berkreasi sendiri dengan cara merubah program di atas Misalnya :

1. Cobalah rubah program di atas agar dapat menampilkan tulisan selamat datang pada baris 1 dan baris 2 menampilkan nama sendiri. contoh " YADI ".
2. Cobalah untuk menampilkan yang lain sesuai dengan keinginan. berlatihlah sampai 10 kali perubahan program. niscaya rekan rekan akan lebih mahir. cobalah untuk langsung mengetik. jangan terbiasa copy paste.



Latihan tampilan layar lcd yang dapat berganti dengan cara menekan tombol




--------------------------------------------------------------------------------------------------------

#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7
int tampilan =1 ;
boolean  s1 = false ;
void setup() {
  lcd.begin(16, 2);
  pinMode(9,INPUT);
}

void loop() {
if (tampilan == 1 )  {
  lcd.clear () ;
  lcd.setCursor(0, 0);
  lcd.print("Percobaan LCD");
  lcd.setCursor(0, 1);
  lcd.print("aaaaa");
  if (digitalRead(9)==HIGH  && s1== false ){  tampilan =2 ; s1 = true ; }
  if (digitalRead(9)== 0)  s1 = false;
}

if ( tampilan == 2  )  {
  lcd.clear () ;
 lcd.setCursor(0, 0);
  lcd.print("Tampilan Dua");
lcd.setCursor(0, 1);
  lcd.print("bbbbbb" );
  if (digitalRead(9)==HIGH && s1== false ) { tampilan = 3 ; s1=true; }
  if (digitalRead(9)== 0 ) s1 = false;
}


if (tampilan == 3  )  {
  lcd.clear () ;
 lcd.setCursor(0, 0);
  lcd.print("Tampilan Tiga");
lcd.setCursor(0, 1);
  lcd.print("ccccc");
  if (digitalRead(9)==HIGH && s1== false ) { tampilan = 1 ; s1=true; }
  if (digitalRead(9)== 0) s1 = false;
}

delay (266) ;
}

--------------------------------------------------------------------------------------------------------



Latihan 4


Selasa, 27 Oktober 2015

Latihan Dua


Jam dengan RTC dasar
Latihan Membuat jam dengan Mikrokontroller + LCD + RTC







----------------------------------------------------------------------------------------

#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68

int d,m,j,hk,bl,th,tg ;

void setup() {
    Wire.begin();
        lcd.begin(16,2);
  pinMode(18,OUTPUT); digitalWrite (18,LOW); //Kaki RTC Gnd
  pinMode(19,OUTPUT); digitalWrite (19,HIGH); //Kaki RTC VCC
}

void loop() {

  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
   d = bcdToDec(Wire.read());
  m = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());
    delay (333);

  String waktu1 = "Jam : "+ String (j)+":"+String (m)+":"+String (d)  ;
  String waktu2 = "Tgl :" + String (tg)+" "+String (bl)+" " +String (th) ;
   lcd.clear() ;
  lcd.setCursor(0,0);
  lcd.print(waktu1);
  lcd.setCursor(0,1);
  lcd.print(waktu2);


}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );

}


----------------------------------------------------------------------------------------

Program di atas hanya untuk menampilkan waktu yg ada di RTC saja. bila ternyata waktu yang ditampilkan tidak sesuai  maka tidak ada jalan untuk membetulkannya. Untuk Merubah nilai RTC agar sesuai dengan waktu yg ada gunakan program dasar ini.



Jam 2


----------------------------------------------------------------------------------------

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
void setup(){
  Wire.begin();
  Serial.begin(9600);
  pinMode(18,OUTPUT); digitalWrite (18,LOW); //Kaki RTC Gnd
  pinMode(19,OUTPUT); digitalWrite (19,HIGH); //Kaki RTC VCC
  setDateTime(); //MUST CONFIGURE IN FUNCTION
}
void loop(){
  printDate();    delay(1000);
}

void setDateTime(){

  byte second =      41; // isi nilai detik 0-59
  byte minute =      0; //isi nilai Menit 0-59
  byte hour =        23; //isi nilai Jam 0-23
  byte weekDay =     1; // 0-6
  byte monthDay =    18; // isi nilai Tanggah 1-31
  byte month =       10; //isi nilai Bulan 1-12
  byte year  =       15; // isi nilai Tahun 0-99

  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator

  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));

  Wire.write(zero); //start

  Wire.endTransmission();

}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

void printDate(){

  // Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);

  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());

  //print the date EG   3/1/11 23:59:59
  Serial.print(month);
  Serial.print("/");
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);


}

----------------------------------------------------------------------------------------

Jam Yang Bisa Diatur secara langsung
untuk membuat jam digital yang dapat di seting secara langsung tanpa memerlukan laptop dan programer maka kita perlu membuat rangkaian di bawah ini.

Dalam latihan kali ini kita membutuhkan
Mikrokontroller
Rangkaian saklar untuk memasukan data
LCD 16x2 Karakter

----------------------------------------------------------------------------------------


#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527

int d,m,j,hk,bl,th,tg ;
int k=1 ; int tm=1;
int ta=9 ; int tb=8; int tc=7;
String hari;
void setup() {
    Wire.begin();
    lcd.begin(16,2);
  pinMode(ta,INPUT); pinMode(tb,INPUT);pinMode(tc,INPUT);
  pinMode(18,OUTPUT); digitalWrite (18,LOW); //Kaki RTC Gnd
  pinMode(19,OUTPUT); digitalWrite (19,HIGH); //Kaki RTC VCC
}

void loop() {
 if (k==1) {
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
   d = bcdToDec(Wire.read());
  m = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());

  String waktuu = String (j/10)+String (j%10)+":"+String (m/10)+ String (m%10)+":"+String (d/10)+String (d%10) ;
  String waktu2 = hari+ "  " +String (tg)+":"+String (bl)+":" +String (th) ;
   lcd.clear() ;
  lcd.setCursor(0,0);
  lcd.print(waktuu);
  lcd.setCursor(0,1);
  lcd.print(waktu2);
 
  if (digitalRead (ta) ==1) { k=2; delay (200); }
  else    delay (733);

 }

  if (hk==0) hari="Minggu" ;
  if (hk==1) hari="Senin" ;
  if (hk==2) hari="Selasa" ;
  if (hk==3) hari="Rabu" ;
  if (hk==4) hari="Kamis" ;
  if (hk==5) hari="Jum'at" ;
  if (hk==6) hari="Saptu" ;


if (k==2) {
if (tm==1){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print(" Merubah Jam ");
  lcd.setCursor(0,1);
  lcd.print("1. Ya   2. Tidak ");
if (digitalRead (tb)==1) { delay (100); k=1; }
if (digitalRead (ta)==1) {delay (100);   tm=2;}
delay (200);

}
if (tm==2){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Jam : "); lcd.print (j);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1)
{ j=j+1; if (j>24 ) j=0; delay (100); }
if (digitalRead (tb)==1)
{ j=j-1;  if (j<0) j=23; delay (100); }
if (digitalRead (tc)==1) {tm=3; delay (100); }
 
  delay(300); ;
}

if (tm==3){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Menit : "); lcd.print (String (m/10)+ String (m%10));
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1)
{ m=m+1; if (m>59) m=0; delay (100); }
if (digitalRead (tb)==1)
{ m=m-1; if (m<0) m=59; delay (100); }
if (digitalRead (tc)==1) {tm=4; delay (100); }
delay(200); ;
}
if (tm==4){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Hari : "); lcd.print (hari);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1) { hk=hk+1; delay (100); }
if (digitalRead (tb)==1) { hk=hk-1; delay (100); }
if (digitalRead (tc)==1) {tm=5; delay (100); }
delay(200); ;
}

if (tm==5){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Tanggal : "); lcd.print (tg);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1) { tg=tg+1; delay (100); }
if (digitalRead (tb)==1) { tg=tg-1; delay (100); }
if (digitalRead (tc)==1) {tm=6; delay (100); }
delay(200); ;
}

if (tm==6){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Bulan : "); lcd.print (bl);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1) { bl=bl+1; delay (100); }
if (digitalRead (tb)==1) { bl=bl-1; delay (100); }
if (digitalRead (tc)==1) {tm=7; delay (100); }
delay(200); ;
}
if (tm==7){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Tahun : "); lcd.print (th);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1) { th=th+1; delay (100); }
if (digitalRead (tb)==1) { th=th-1; delay (100); }
if (digitalRead (tc)==1) {tm=8; delay (100); }
delay(200); ;
}

if (tm==8){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Data Disimpan");
  lcd.setCursor(0,1);
  lcd.print("1= Ya    2= Tidak");
if (digitalRead (ta)==1) {
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator

  Wire.write(decToBcd(2));
  Wire.write(decToBcd(m));
  Wire.write(decToBcd(j));
  Wire.write(decToBcd(hk));
  Wire.write(decToBcd(tg));
  Wire.write(decToBcd(bl));
  Wire.write(decToBcd(th));

  Wire.write(zero); //start

  Wire.endTransmission();

delay (100);
tm=1; k=1;
}
if (digitalRead (tb)==1) { tm=1; k=1; }
delay(200); ;
}

}
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );

}

----------------------------------------------------------------------------------------



Coba juga listing program di bawah ini. ayoo  semangaath......
----------------------------------------------------------------------------------------

#include <LiquidCrystal.h>
LiquidCrystal lcd(43, 45, 47, 49,51,53); // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527

int d,m,j,hk,bl,th,tg ;
int k=1 ; int tm=1;
int ta=9 ; int tb=8; int tc=7;
String hari;
void setup() {
    Wire.begin();
    lcd.begin(16,2);
  pinMode(ta,INPUT); pinMode(tb,INPUT);pinMode(tc,INPUT);
   pinMode (18,OUTPUT); digitalWrite(18,0); // Untuk Memberi Tegangan 0 Volt ke RTC
 pinMode (19,OUTPUT); digitalWrite(19,1);  // Untuk Memberi Tegangan 5 Volt ke RTC

}

void loop() {
 if (k==1) {
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
   d = bcdToDec(Wire.read());
  m = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());
    delay (233);

  String waktuu = "Jam :" + String (j/10)+String (j%10)+":"+String (m/10)+ String (m%10)+":"+String (d/10)+String (d%10) ;
  String waktu2 = "1.Atur Jam" ; 
   lcd.clear() ;
  lcd.setCursor(0,0);
  lcd.print(waktuu);
  lcd.setCursor(0,1);
  lcd.print(waktu2);
  
  if (digitalRead (ta) ==1 ) {  k=2; delay (400); }
 }

  if (hk==0) hari="Minggu" ;
  if (hk==1) hari="Senin" ;
  if (hk==2) hari="Selasa" ;
  if (hk==3) hari="Rabu" ;
  if (hk==4) hari="Kamis" ;
  if (hk==5) hari="Jum'at" ;
  if (hk==6) hari="Saptu" ;


if (k==2) {
if (tm==1){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print(" Merubah Jam ");
  lcd.setCursor(0,1);
  lcd.print("1. Ya   2. Tidak ");
if (digitalRead (tb)==1) { delay (100); k=1; }
if (digitalRead (ta)==1) {delay (100);   tm=2;}
delay (100);

}
if (tm==2){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Jam : "); lcd.print (j);
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK");
if (digitalRead (ta)==1) { 
   j=j+1; delay (100); 
   if (j>23 ) j=0; }
if (digitalRead (tb)==1) { 
   j=j-1; delay (100); 
   if ( j < 0 ) j=23 ;  }
if (digitalRead (tc)==1) {tm=3; delay (100); }
  
  delay(300); ;
}

if (tm==3){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Menit : "); lcd.print (String (m/10)+ String (m%10));
  lcd.setCursor(0,1);
  lcd.print("1= +  2= -  3=OK"); 
if (digitalRead (ta)==1) { 
    m=m+1; delay (100); 
    if (m > 59) m=0;}
if (digitalRead (tb)==1) { 
    m=m-1; delay (100); 
    if (m<0) m=59; }
if (digitalRead (tc)==1) {tm=4; delay (100); }
delay(100); ;
}

if (tm==4){
  lcd.clear ();
  lcd.setCursor(0,0);
  lcd.print("Data Disimpan"); 
  lcd.setCursor(0,1);
  lcd.print("1= Ya    2= Tidak"); 
if (digitalRead (ta)==1) { 
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator

  Wire.write(decToBcd(10));
  Wire.write(decToBcd(m));
  Wire.write(decToBcd(j));
  Wire.write(decToBcd(hk));
  Wire.write(decToBcd(tg));
  Wire.write(decToBcd(bl));
  Wire.write(decToBcd(th));

  Wire.write(zero); //start 

  Wire.endTransmission();

delay (100);
tm=1; k=1;
}
if (digitalRead (tb)==1) { tm=1; k=1; }
delay(100); ;
}

}
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );

}

----------------------------------------------------------------------------------------


Latihan  1
Latihan  3

Senin, 26 Oktober 2015

Latihan Satu

Latihan 1

Selamat datang di halaman blog ini. untuk anda yang tertarik mempelajari Mikrokontroller arduino mari kita belajar bersama. Bila saudara belum paham cara menghubungkan arduino dengan komputer atau apa itu mikrokontroler arduino. Mudah saja tinggal search di google. BAnyak panduan tentang arduino. DAn dalam waktu singkat pun sodara akan cepat paham
 untuk seorang pemula marilah kita mulai dengan projek sederhana di bawah ini.
Latihan pertama kali kita pilih latihan led berkedip. listing program terdapat di contoh program bawaan. klik saja File - Example - Basic - Blink


Setelah di klik akan ada list program di tampilkan di IDE seperti gambar di bawah ini. 




Ini adalah printah untuk menghidupkan Led selama satu detik dan mati selama satu detik. karena printah dikerjakan secara terus menerus maka setelah mencapai baris bawah maka akan kembali membaca printah dari atas sehingga alat akan bekerja terus menerus ( Led akan terus berkedip Selama ada sumber daya ).


Bila saudara kuram paham maka baiklah kita bahas satu persatu baris programnya..


/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:

Baris program di atas adalah komentar. bukan sebuah printah yang akan di jalankan oleh mikrokontroller. ciri sebuah komentar adalah dimulai dengan  /*  dan di akhiri oleh */  atau ada juga yang menggunakan tanda //. tanda // digunakan untuk memberi komentar satu baris saja, bila kita tekan enter maka dengan otomatis baris selanjutnya bukan komentar


int led = 13;

printah di atas maksudnya kita mendeklarasikan sebuah variabel dengan nama led yang diisi dengan nilai 13

void setup() {
  pinMode(led, OUTPUT);

Di bagian Setup kita mendeklarasikan kaki digital no 13 sebagai output

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second

Di bagian loop kita perintahkan kaki no 13 agar berlogika High sehingga mengeluarkan tegangan sebesar 5 Volt. tegangan inilah yang akan menghidupkan Led. ditambah dengan perintah delay selama 1000 mikro detik atau selama 1 detik.

  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second

Perintah di atas adalah untuk memerintahkan kaki no 13 agar berlogika Low sehingga Led mati. dan ditambah dengan perintah delay selama 1000 mikro detik atau selama 1 detik

Jadi baris perintah di atas akan menghidupkan led selama 1 detik dan akan mematikan led selama 1 detik. karena perintah loop sipatnya terus berulang atau akan kembali ke perintah atas setelah perintah paling bawah dilaksanakan, maka alat ini akan terus berkedip.

Tips untuk berlatih memprogram alat bagi pemula.



Untuk melancarkan berlatih. cobalah buka contoh program dan buka juga jendela kosong. Ketik ulang programnya. untuk komentar tidak perlu di ketik. dengan cara sering menulis program maka akan lebih memahami program tersebut.


Latihan Menghidupkan LED dengan dua buah saklar tekan.
Latihan kali ini kita akan berlatih untuk mengoperasikan led dengan 2 saklar. saklar 1 untuk menghidupkan LED dan Saklar 2 untuk mematikan LED.

Alat yang kita butuhkan adalah  :
* BredBoard
* Resistor  1 Kilo Ohm 2 buah
* Saklar tekan 2 buah
* Mikrokontroller Arduino
* Kabel utuk Jumper.

 Nah sekarang buatlah rangkaian seperti di bawah ini .





Liting Programnya adalah seperti di bawah ini
-------------------------------------------------------------------------------------------------------

void setup() {
pinMode (9,INPUT); // Tombol 1 untuk menghidupkan
pinMode (8,INPUT);  // Tombol 2 untuk mematikan
pinMode (13,OUTPUT);
}
void loop() {
// Jika tombol 1 ditekan maka akanterbaca logika High atau nilai 1
  if (digitalRead(9) ==1)
  digitalWrite (13,1);  // Kaki 13 Berlogika High (Led Hidup )
// Jika tombol 1 ditekan maka akanterbaca logika High atau nilai 1
  if (digitalRead(8) == 1)
  digitalWrite (13,0);  // Kaki 13 Berlogika Low (Led Mati )

delay (111); }

-----------------------------------------------------------------------------------------------------


Latihan Menghidupkan LED dengan 1 buah saklar tekan.




Rangkaian di atas terdiri dari satu buah rangkaian saklar digital yang dihubungkan dengan kaki mikrokontroller no 2 dan lampu led yang dihubungkan dengan kaki no 13. kita akan berlatih membuat program untuk menyalakan led dengan satu buah saklar digital, jika kita tekan satu kali maka lampu akan menyala dan jika di tekan satu kali lagi maka lampu tersebut akan mati. untuk modul arduino dari pak yadi saklar yang digunakan adalah saklar 1 yang dihubungkan dengan kaki no 9. led tetap dihubungkan dengan kaki 13. 
Listing programnya adalah seperti di bawah ini yaaaa.....!!!!!!

-----------------------------------------------------------------------------------------------------

int d1,d2,d3;
void setup (){
  pinMode(9,INPUT); 
  pinMode(13,OUTPUT); 
}
void loop()  {
  d2 = digitalRead(9);
  if (d2 != d1)  {
    if (d2==1)  {
      if (d3==1) d3 =0;
      else d3 = 1; }
     d1=d2; }
   digitalWrite(13,d3);
delay(99);
}

-----------------------------------------------------------------------------------------------------



cobalah program di bawah ini . penulisan berbeda tapi hasilnya sama
----------------------------------------------------------------------------------------------------
boolean a= false ; 
int b =0 ;
void setup (){
  pinMode(9,INPUT);  
  pinMode(13,OUTPUT);  
}
void loop()  {
  if (digitalRead(9) == 1 && a == false) {
    a= true ;
    if (b== 1) b=0;
    else b = 1 ;  }
  if (digitalRead(9) == 0 ) a = false ;
   digitalWrite(13,b);
delay(99);

}

----------------------------------------------------------------------------------------------------







Latihan gabungan

Latihan Menghidupkan LED dengan 1 buah saklar tekan. dan latihan menghidupkan 1 Led dengan 2 saklar.

int d1,d2,d3;
void setup (){
pinMode (7,INPUT); // Tombol 1 untuk menghidupkan
pinMode (8,INPUT);  // Tombol 2 untuk mematikan
pinMode (12,OUTPUT);
  pinMode(9,INPUT); 
  pinMode(13,OUTPUT); 
}
void loop()  {
  d2 = digitalRead(9);
  if (d2 != d1)  {
    if (d2==1)  {
      if (d3==1) d3 =0;
      else d3 = 1; }
     d1=d2; }
   digitalWrite(13,d3);
// Jika tombol 1 ditekan maka akanterbaca logika High atau nilai 1
  if (digitalRead(8) ==1)
  digitalWrite (12,1);  // Kaki 13 Berlogika High (Led Hidup )
// Jika tombol 1 ditekan maka akanterbaca logika High atau nilai 1
  if (digitalRead(7) == 1)
  digitalWrite (12,0);  // Kaki 13 Berlogika Low (Led Mati )
delay (111);
} 




Program latihan membuat tasbeh digital




Pernah memakai Counter atau tasbeh digital seperti di atas. yaaa.. itu adalah tasbeh digital atau alat penghitung . satu tombol jika di tekan maka nilai hitungan akan bertambah dan satu tombol yang satunya untuk mereset hitungan agar kembali ke nilai nol. Kali ini marilah kita berlatih membuat tasbeh digital. Rangkaiannya seperti di bawah ini.




Saklar 1 digunakan untuk menambah hitungan
Saklar 2 digunakan untuk mereset hitungan


Program  tasbeh digital


-----------------------------------------------------------------------------------------------------

int a=8;
int b=9;
int x=0;
#include <LiquidCrystal.h>
LiquidCrystal lcd (43, 45, 47, 49,51,53);  // RS,E,D4,D5,D6,D7

void setup()   {
pinMode(a,INPUT);
pinMode(b,INPUT);
 lcd.begin(16, 2);
}

void loop() {
lcd.clear();
  lcd.setCursor(0, 0); lcd.print(x);

  lcd.setCursor(0, 0); lcd.print("Tasbeh Digital");

if (digitalRead(a)==1) x=x+1;
if (digitalRead(b)==1) x=0;
delay(222);

}

-----------------------------------------------------------------------------------------------------

Program di atas mempunyai satu kelemahan yaitu bila kita tekan terus maka hitungan akan terus bertambah. nah cobalah program di bawah ini dan bandingkan hasilnya.

Program tasbeh digital 2
-----------------------------------------------------------------------------------------------------

int a=8;  // Tombol 1
int b=9;  // Tombol 2
int x=0;
boolean stA = false ;
boolean stB = false ;
#include <LiquidCrystal.h>
LiquidCrystal lcd (43, 45, 47, 49,51,53);  // RS,E,D4,D5,D6,D7
void setup()   {
pinMode(a,INPUT);
pinMode(b,INPUT);
 lcd.begin(16, 2);
}
void loop() {
lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Tasbeh Digital 2");
  lcd.setCursor(0, 1); lcd.print(x);
 
if (digitalRead(a)== 1 && stA == false)
{  x=x+1; stA =  true ; }
if (digitalRead(a)== 0  )  stA =  false ;
if (digitalRead(b)==1 && stB == false)
{  x=0; stB =  true ; }
if (digitalRead(b)== 0  )  stB =  false ;
delay (88);}

-----------------------------------------------------------------------------------------------------


Latihan  2