BLINK

Program dasar membuat lampu kelap kelip dari contoh yang ditampilkan Arduino adalah sbb:

 

/*
  Blink
  modified 8 May 2014
  by Scott Fitzgerald
 */
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

 

 

 

program dasar 'blink' cari contoh yang diberikan, ditambah dan sedikit modifikasi sbb:

 

int waktu;
void setup() {
  // put your setup code here, to run once:
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(1, OUTPUT);
 pinMode(0, OUTPUT);
 pinMode(A5, OUTPUT);
 pinMode(A4, OUTPUT);
 pinMode(A3, OUTPUT);
 pinMode(A2, OUTPUT);
 pinMode(A1, OUTPUT);
 pinMode(A0, OUTPUT);
 waktu = 500;
}
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, HIGH);   
  digitalWrite(12, HIGH);   
  digitalWrite(11, HIGH);   
  digitalWrite(10, HIGH);   
  digitalWrite(9, HIGH);   
  digitalWrite(8, HIGH);   
  digitalWrite(7, HIGH);   
  digitalWrite(6, HIGH);   
  digitalWrite(5, HIGH);   
  digitalWrite(4, HIGH);   
  digitalWrite(3, HIGH);   
  digitalWrite(2, HIGH);   
  digitalWrite(1, HIGH);   
  digitalWrite(0, HIGH);   
  digitalWrite(A5, HIGH);   
  digitalWrite(A4, HIGH);   
  digitalWrite(A3, HIGH);   
  digitalWrite(A2, HIGH);   
  digitalWrite(A1, HIGH);   
  digitalWrite(A0, HIGH);   
  delay(waktu);              
  
  digitalWrite(8, LOW);    // nyala
  delay(waktu);              
  digitalWrite(9, LOW);    // nyala
  delay(waktu);              
  digitalWrite(10, LOW);    // nyala
  delay(waktu);              
  digitalWrite(13, LOW);    // nyala
  delay(waktu);              
  digitalWrite(12, LOW);    // nyala
  delay(waktu);              
  digitalWrite(11, LOW);    // nyala
  delay(waktu);              
  digitalWrite(7, LOW);    // nyala
  delay(waktu);              
  digitalWrite(6, LOW);    // nyala
  delay(waktu);              
  digitalWrite(5, LOW);    // nyala
  delay(waktu);              
  digitalWrite(0, LOW);    // nyala
  delay(waktu);              
  digitalWrite(1, LOW);    // nyala
  delay(waktu);              
  digitalWrite(2, LOW);    // nyala
  delay(waktu);              
  digitalWrite(3, LOW);    // nyala
  delay(waktu);              
  digitalWrite(4, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A5, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A4, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A3, LOW);    // nyala
  delay(waktu);    
  digitalWrite(A0, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A1, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A2, LOW);    // nyala
  delay(waktu);              
  digitalWrite(13, HIGH);   
  digitalWrite(12, HIGH);   
  digitalWrite(11, HIGH);   
  digitalWrite(10, HIGH);   
  digitalWrite(9, HIGH);   
  digitalWrite(8, HIGH);   
  digitalWrite(7, HIGH);   
  digitalWrite(6, HIGH);   
  digitalWrite(5, HIGH);   
  digitalWrite(4, HIGH);   
  digitalWrite(3, HIGH);   
  digitalWrite(2, HIGH);   
  digitalWrite(1, HIGH);   
  digitalWrite(0, HIGH);   
  digitalWrite(A5, HIGH);   
  digitalWrite(A4, HIGH);   
  digitalWrite(A3, HIGH);   
  digitalWrite(A2, HIGH);   
  digitalWrite(A1, HIGH);   
  digitalWrite(A0, HIGH);   
  delay(waktu);              
  
  digitalWrite(A2, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A1, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A0, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A3, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A4, LOW);    // nyala
  delay(waktu);              
  digitalWrite(A5, LOW);    // nyala
  delay(waktu);              
  digitalWrite(4, LOW);    // nyala
  delay(waktu);              
  digitalWrite(3, LOW);    // nyala
  delay(waktu);              
  digitalWrite(2, LOW);    // nyala
  delay(waktu);              
  digitalWrite(1, LOW);    // nyala
  delay(waktu);              
  digitalWrite(0, LOW);    // nyala
  delay(waktu);              
  digitalWrite(5, LOW);    // nyala
  delay(waktu);              
  digitalWrite(6, LOW);    // nyala
  delay(waktu);              
  digitalWrite(7, LOW);    // nyala
  delay(waktu);              
  digitalWrite(11, LOW);    // nyala
  delay(waktu);              
  digitalWrite(12, LOW);    // nyala
  delay(waktu);              
  digitalWrite(13, LOW);    // nyala
  delay(waktu);    
  digitalWrite(10, LOW);    // nyala
  delay(waktu);              
  digitalWrite(9, LOW);    // nyala
  delay(waktu);              
  digitalWrite(8, LOW);    // nyala
  delay(waktu);              
  waktu = waktu - 10;
  if (waktu == 50) waktu = 250;
}

 

hasil yang diperoleh adalah seperti pada video terlampir, dan video berikut adalah hasil program dari perbaikan program diatas menjadi beberapa subroutine. Sehingga program kelihatan menjadi lebih sederhana dan mudah dimengerti.

program yang lebih baik putar kiri dan putar kanan adalah sebagai berikut:

 

// blink putar kiri putar kanan
int n, idx, dly;
void setup() {
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(1, OUTPUT);
 pinMode(0, OUTPUT);
 pinMode(A5, OUTPUT);
 pinMode(A4, OUTPUT);
 pinMode(A3, OUTPUT);
 pinMode(A2, OUTPUT);
 pinMode(A1, OUTPUT);
 pinMode(A0, OUTPUT);
 n = 0;
 idx = 0;
 dly = 100;
}
void loop() {
  dly = 100;
  putar_ka();
  dly = 100;
  putar_ki();
}
void putar_ka(void)
{
  while(1)
  {
    for (idx = 0; idx < 20; idx++)
    {
       lampu_mati();
       delay(dly);              
       lampu_n(idx);
       delay(dly);  
    }
    dly = dly - 5;
    if (dly < 10) break;
  }
}
void putar_ki(void)
{
  while(1)
  {
    for (idx = 20; idx >= 0; idx--)
    {
       lampu_mati();
       delay(dly);              
       lampu_n(idx);
       delay(dly);  
    }
    dly = dly - 5;
    if (dly < 10) break;
  }  
}
void lampu_n (int n)
{
  if (n == 0) digitalWrite(8, LOW);    
  if (n == 1) digitalWrite(9, LOW);    
  if (n == 2) digitalWrite(10,LOW);    
  if (n == 3) digitalWrite(13,LOW);    
  if (n == 4) digitalWrite(12,LOW);    
  if (n == 5) digitalWrite(11, LOW);    
  if (n == 6) digitalWrite(7, LOW);    
  if (n == 7) digitalWrite(6, LOW);    
  if (n == 8) digitalWrite(5,LOW);    
  if (n == 9) digitalWrite(0,LOW);    
  if (n == 10) digitalWrite(1,LOW);    
  if (n == 11) digitalWrite(2,LOW);    
  if (n == 12) digitalWrite(3,LOW);    
  if (n == 13) digitalWrite(4,LOW);    
  if (n == 14) digitalWrite(A5,LOW);    
  if (n == 15) digitalWrite(A4,LOW);    
  if (n == 16) digitalWrite(A3,LOW);    
  if (n == 17) digitalWrite(A0,LOW);    
  if (n == 18) digitalWrite(A1,LOW);    
  if (n == 19) digitalWrite(A2,LOW);    
}
void lampu_mati (void)
{
  digitalWrite(13, HIGH);   
  digitalWrite(12, HIGH);   
  digitalWrite(11, HIGH);   
  digitalWrite(10, HIGH);   
  digitalWrite(9, HIGH);   
  digitalWrite(8, HIGH);   
  digitalWrite(7, HIGH);   
  digitalWrite(6, HIGH);   
  digitalWrite(5, HIGH);   
  digitalWrite(4, HIGH);   
  digitalWrite(3, HIGH);   
  digitalWrite(2, HIGH);   
  digitalWrite(1, HIGH);   
  digitalWrite(0, HIGH);   
  digitalWrite(A5, HIGH);   
  digitalWrite(A4, HIGH);   
  digitalWrite(A3, HIGH);   
  digitalWrite(A2, HIGH);   
  digitalWrite(A1, HIGH);   
  digitalWrite(A0, HIGH);   
}