Orang-orang yang berhenti belajar akan menjadi pemilik masa lalu. Orang-orang yang masih terus belajar, akan menjadi pemilik masa depan.

Friday, May 8, 2015

Tutorial Arduino – Multiple LEDs

Tutorial Arduino – Multiple LEDs kali ini akan memberikan kesempatan pada anda untuk ber-eksperimen menulis kode pemrograman untuk Arduino. Catatan: Tutorial dan kode yang digunakan di sini disadur dari kode yang tercantum pada link berikut: http://ardx.org/CODE02
Sejalan dengan pengaturan LED kita akan mencoba untuk membuat kode pemrograman lebih sederhana dengan beberapa metode.

for () loops – digunakan ketika kita ingin menjalankan sejumlah baris kode berulang-ulang.
arrays[] – digunakan untuk mengatur penggunaan variabel dengan lebih mudah (array = grup dari variabel).

Rangkaian
Komponen yang diperlukan:
  • 8 buah LED
  • 8 buah resistor 330 ohm
  • Kabel jumper
Skema rangkaian dapat dilihat pada gambar berikut:

Skema rangkaian untuk banyak LED
Berikut ini adalah gambar simulasi penempatan komponen pada breadboard dan board Arduino. Gambar simulasi ini menggunakan software Fritzing yang bisa didapat di sini.



Multiple LEDs using Arduino
Kode Pemrograman
Di bawah ini adalah kode pemrograman yang digunakan untuk Multiple LED. Untuk dapat memahami dengan baik program diberi warna biru dan komentar diberi warna merah.

1. Menghidupkan LED satupersatu dari PIN 2 ke 9 dan mematikan dari PIN 9 ke 2

//LED Pin Variables
int ledPins[] = {2,3,4,5,6,7,8,9}; //An array to hold the pin each LED is connected to
                                   //i.e. LED #0 is connected to pin 2, LED #1, 3 and so on
                                   //to address an array use ledPins[0] this would equal 2
                                   //and ledPins[7] would equal 9
 
/*
 * setup() - this function runs once when you turn your Arduino on
 * We the three control pins to outputs
 */
void setup()
{
  
  //Set each pin connected to an LED to output mode (pulling high (on) or low (off)
  for(int i = 0; i < 8; i++){         //this is a loop and will repeat eight times
      pinMode(ledPins[i],OUTPUT);     //we use this to set each LED pin to output
  }                                   //the code this replaces is below
 
  /* (commented code will not run)
   * these are the lines replaced by the for loop above they do exactly the
   * same thing the one above just uses less typing
  pinMode(ledPins[0],OUTPUT);
  pinMode(ledPins[1],OUTPUT);
  pinMode(ledPins[2],OUTPUT);
  pinMode(ledPins[3],OUTPUT);
  pinMode(ledPins[4],OUTPUT);
  pinMode(ledPins[5],OUTPUT);
  pinMode(ledPins[6],OUTPUT);
  pinMode(ledPins[7],OUTPUT);
  (end of commented code)*/
}
/*
 * loop() - this function will start after setup finishes and then repeat
 * we call a function called oneAfterAnother(). if you would like a different behaviour
 * uncomment (delete the two slashes) one of the other lines
 */
void loop()                     // run over and over again
{
  oneAfterAnotherNoLoop();   //this will turn on each LED one by one then turn each off
}
 
/*
 * oneAfterAnotherNoLoop() - Will light one LED then delay for delayTime then light
 * the next LED until all LEDs are on it will then turn them off one after another
 *
 * this does it without using a loop which makes for a lot of typing. 
 * oneOnAtATimeLoop() does exactly the same thing with less typing
 */
void oneAfterAnotherNoLoop(){
  int delayTime = 100; //the time (in milliseconds) to pause between LEDs
                       //make smaller for quicker switching and larger for slower
  digitalWrite(ledPins[0], HIGH);  //Turns on LED #0 (connected to pin 2 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[1], HIGH);  //Turns on LED #1 (connected to pin 3 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[2], HIGH);  //Turns on LED #2 (connected to pin 4 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[3], HIGH);  //Turns on LED #3 (connected to pin 5 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[4], HIGH);  //Turns on LED #4 (connected to pin 6 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[5], HIGH);  //Turns on LED #5 (connected to pin 7 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[6], HIGH);  //Turns on LED #6 (connected to pin 8 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[7], HIGH);  //Turns on LED #7 (connected to pin 9 )
  delay(delayTime);                //waits delayTime milliseconds  
 
//Turns Each LED Off
  digitalWrite(ledPins[7], LOW);  //Turns off LED #7 (connected to pin 9 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[6], LOW);  //Turns off LED #6 (connected to pin 8 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[5], LOW);  //Turns off LED #5 (connected to pin 7 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[4], LOW);  //Turns off LED #4 (connected to pin 6 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[3], LOW);  //Turns off LED #3 (connected to pin 5 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[2], LOW);  //Turns off LED #2 (connected to pin 4 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[1], LOW);  //Turns off LED #1 (connected to pin 3 )
  delay(delayTime);                //waits delayTime milliseconds
  digitalWrite(ledPins[0], LOW);  //Turns off LED #0 (connected to pin 2 )
  delay(delayTime);                //waits delayTime milliseconds  
}



2. Menghidupkan LED satupersatu dari PIN 2 ke 9 dan mematikan dari PIN 9 ke 2 dengan kode yang lebih sederhana. Ganti program nomer 1 diatas mulai dari void loop() dengan program dibawah ini


void loop()                // run over and over again
{
  oneAfterAnotherLoop();   //does the same as oneAfterAnotherNoLoop but with 
                           //much less typing
}




/*
 * oneAfterAnotherLoop() - Will light one LED then delay for delayTime then light
 * the next LED until all LEDs are on it will then turn them off one after another
 *
 * this does it using a loop which makes for a lot less typing. 
 * than oneOnAtATimeNoLoop() does exactly the same thing with less typing
 */
void oneAfterAnotherLoop(){
  int delayTime = 100; //the time (in milliseconds) to pause between LEDs
                       //make smaller for quicker switching and larger for slower
 
//Turn Each LED on one after another
  for(int i = 0; i <= 7; i++){
    digitalWrite(ledPins[i], HIGH);  //Turns on LED #i each time this runs i
    delay(delayTime);                //gets one added to it so this will repeat 
  }                                  //8 times the first time i will = 0 the final
                                     //time i will equal 7;
 
//Turn Each LED off one after another
  for(int i = 7; i >= 0; i--){  //same as above but rather than starting at 0 and counting up
                                //we start at seven and count down
    digitalWrite(ledPins[i], LOW);  //Turns off LED #i each time this runs i
    delay(delayTime);                //gets one subtracted from it so this will repeat 
  }                                  //8 times the first time i will = 7 the final
                                     //time it will equal                   
} 




3. Menghidupkan LED satupersatu dari PIN 2 ke 9 dan mematikan LED sebelum berpindah ke LED yang lain. Ganti program nomer 1 diatas mulai dari void loop() dengan program dibawah ini

void loop()                  // run over and over again
{
  oneOnAtATime();            //this will turn one LED on then turn the next one
                             //on turning the 
                             //former off (one LED will look like it is scrolling 
}  
/*
 * oneOnAtATime() - Will light one LED then the next turning off all the others
 */
void oneOnAtATime(){
  int delayTime = 100; //the time (in milliseconds) to pause between LEDs
                       //make smaller for quicker switching and larger for slower
  
  for(int i = 0; i <= 7; i++){
    int offLED = i - 1;  //Calculate which LED was turned on last time through
    if(i == 0) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
      offLED = 7;        //turn on LED 2 and off LED 1)
    }                    //however if i = 0 we don't want to turn of led -1 (doesn't exist)
                         //instead we turn off LED 7, (looping around)
    digitalWrite(ledPins[i], HIGH);     //turn on LED #i
    digitalWrite(ledPins[offLED], LOW); //turn off the LED we turned on last time
    delay(delayTime);
  }
}


4 Menghidupkan LED dari tengah ke ujung dari PIN 3,4 ke 2,9 kemudian mengidupkan dari PIN 2,9 ke 3,4 dengan  mematikan LED sebelum berpindah ke LED yang lain. Ganti program nomer 1 diatas mulai dari void loop() dengan program dibawah ini



void loop()                  // run over and over again
{
  inAndOut();                //lights the two middle LEDs then moves them out then back 
                             //in again
}   
/*
 * inAndOut() - This will turn on the two middle LEDs then the next two out
 * making an in and out look
 */
void inAndOut(){
  int delayTime = 100; //the time (in milliseconds) to pause between LEDs
                       //make smaller for quicker switching and larger for slower
  
  //runs the LEDs out from the middle
  for(int i = 0; i <= 3; i++){
    int offLED = i - 1;  //Calculate which LED was turned on last time through
    if(i == 0) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
      offLED = 3;        //turn on LED 2 and off LED 1)
    }                    //however if i = 0 we don't want to turn of led -1 (doesn't exist)
                         //instead we turn off LED 7, (looping around)
    int onLED1 = 3 - i;       //this is the first LED to go on ie. LED #3 when i = 0 and LED 
                             //#0 when i = 3 
    int onLED2 = 4 + i;       //this is the first LED to go on ie. LED #4 when i = 0 and LED 
                             //#7 when i = 3 
    int offLED1 = 3 - offLED; //turns off the LED we turned on last time
    int offLED2 = 4 + offLED; //turns off the LED we turned on last time
    
    digitalWrite(ledPins[onLED1], HIGH);
    digitalWrite(ledPins[onLED2], HIGH);    
    digitalWrite(ledPins[offLED1], LOW);    
    digitalWrite(ledPins[offLED2], LOW);        
    delay(delayTime);
  }
 
  //runs the LEDs into the middle
  for(int i = 3; i >= 0; i--){
    int offLED = i + 1;  //Calculate which LED was turned on last time through
    if(i == 3) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
      offLED = 0;        //turn on LED 2 and off LED 1)
    }                    //however if i = 0 we don't want to turn of led -1 (doesn't exist)
                         //instead we turn off LED 7, (looping around)
    int onLED1 = 3 - i;       //this is the first LED to go on ie. LED #3 when i = 0 and LED 
                             //#0 when i = 3 
    int onLED2 = 4 + i;       //this is the first LED to go on ie. LED #4 when i = 0 and LED 
                             //#7 when i = 3 
    int offLED1 = 3 - offLED; //turns off the LED we turned on last time
    int offLED2 = 4 + offLED; //turns off the LED we turned on last time
    
    digitalWrite(ledPins[onLED1], HIGH);
    digitalWrite(ledPins[onLED2], HIGH);    
    digitalWrite(ledPins[offLED1], LOW);    
    digitalWrite(ledPins[offLED2], LOW);        
    delay(delayTime);
  }
}



Jangan khawatir, pengetikkan kode program yang salah tidak akan mengakibatkan kerusakan.Selamat mencoba dan berkreasi!




SOURCE: 
- http://www.instructables.com/id/Arduino-Expermentation-Kit-How-to-get-Started-wi/step4/8-LED-Fun-Multiple-LEDs-CIRC02/
- http://ardx.org/src/circ/CIRC02-code.txt
- http://blog.famosastudio.com/2011/07/tutorial/tutorial-arduino-multiple-leds/119
Artikel Terkait

15 comments:

  1. Terima kasih Informasinya gan , Sangat Membantu dan di tunggu artikel berikutnya^^


    KONTES SEO Juni 2016
    Poker Online Terpercaya
    agen poker terbaik

    ReplyDelete
  2. Informasi yang sangat bagus dan berguna. Ditunggu untuk informasi berikutnya. Thanks gan


    bandarq
    domino99 online terpercaya
    dominoqq
    domino qiu qiu

    ReplyDelete
  3. Informasi yang sangat bagus dan berguna. Ditunggu untuk informasi berikutnya. Thanks gan


    bandarq
    Domino 99
    Situs Poker Online
    Domino Qiu Qiu

    ReplyDelete
  4. Informasi yang sangat bagus dan berguna. Ditunggu untuk update selanjutnya gan


    bandarq
    domino99 online terpercaya
    dominoqq
    domino qiu qiu

    ReplyDelete
  5. Informasi yang sangat bagus dan berguna. Ditunggu untuk informasi berikutnya. Thanks gan


    bandarq
    domino99 online terpercaya
    dominoqq
    domino qiu qiu

    ReplyDelete
  6. Informasi yang sangat berguna dan bermanfaat. Ditunggu untuk informasi berikutnya. Thanks gan :)


    bandarq
    domino99 online terpercaya
    dominoqq
    domino qiu qiu

    ReplyDelete
  7. Selamat datang di intanqq

    Ayo bergabung bersama kami, tersedia 7 permainan dalam 1 ID:
    - Sakong (New Game)
    - Bandar Poker (New Game)
    - BandarQ (Hot Game)
    - Poker
    - Domino
    - Capsa Online
    - AduQ

    Apa kelebihan bermain di intanqq? Berikut kelebihannya:
    - BONUS TURNOVER 0.3% SETIAP HARI
    - BONUS XTRA TURNOVER SETIAP MINGGUNYA
    - BONUS REFERAL 10% +10% SEUMUR HIDUP!!
    - MIN DEPO IDR 15.000 dan Proses super cepat 1 menit.
    - Bisa dimainkan di Smartphone Versi Android dan Iphone.
    - Win rate 98%
    - No robot
    - Fair play 100% player vs player

    Tunggu apalagi? Ayo segera bergabung sebelum ketinggalan promonya :)

    bandarq
    dominoqq
    domino99 online terpercaya
    Domino Qiu Qiu
    dominoqq

    ReplyDelete
  8. Informasi yang sangat berguna dan bermanfaat. Ditunggu untuk informasi berikutnya. Thanks gan :)


    bandarq
    domino99 online terpercaya
    dominoqq
    domino qiu qiu

    ReplyDelete
  9. Informasi yang sangat bagus dan bermanfaat gan. ditunggu informasi nya selanjutnya gan:) terima kasih ^^



    Selamat Datang di Intanqq

    Intanqq menyediakan 7 permainan dalam 1 ID
    Berikut permainannya :
    - BandarQ
    - AduQ
    - Bandar poker
    - Bandar sakong
    - Domino
    - Poker
    - Capsa

    Berikut keuntungan bermain di Agent Poker Intanqq :
    - Bonus Turnover 0.3% dibagikan setiap hari
    - Bonus Extra turnover setiap minggu
    - Bonus referal sampai 20% dan berlaku seumur hidup
    - Proses depo dan wd HANYA 1 menit
    - Minimal depo dan wd HANYA Rp.15.000
    - Win Rate 98%

    Ayo tunggu apalagi? segera bergabung bersama kami dan kunjungi website kami bosku ^^. menangkan hadiah nya bosku ^^

    ReplyDelete
  10. Informasi yang sangat bagus dan bermanfaat gan. ditunggu informasi nya selanjutnya gan:) terima kasih ^^



    Selamat Datang di Intanqq

    Intanqq menyediakan 7 permainan dalam 1 ID
    Berikut permainannya :
    - BandarQ
    - AduQ
    - Bandar poker
    - Bandar sakong
    - Domino
    - Poker
    - Capsa

    Berikut keuntungan bermain di Agent Poker Intanqq :
    - Bonus Turnover 0.3% dibagikan setiap hari
    - Bonus Extra turnover setiap minggu
    - Bonus referal sampai 20% dan berlaku seumur hidup
    - Proses depo dan wd HANYA 1 menit
    - Minimal depo dan wd HANYA Rp.15.000
    - Win Rate 98%

    Ayo tunggu apalagi? segera bergabung bersama kami dan kunjungi website kami bosku ^^. menangkan hadiah nya bosku ^^

    ReplyDelete
  11. Hallo kepada semua pecinta judi online
    Agen terpercaya 100% di indonesia

    kristalpoker menyediakan 7 game

    Game yang di sediakan oleh kristalpoker :
    - Sakong (New Game)
    - Bandar Poker (New Game)
    - BandarQ (Hot Game)
    - Poker
    - Domino
    - Capsa Online
    - AduQ

    1. deposit dan withdraw hanya rp.15.000
    2. Bonus Turnover 0,3% Setiap minggunya
    3. Extra Bonus Cashback Setiap Minggunya
    4. Bonus Referral 10%+10% Seumur Hidup
    5. Bisa dimainkan di Smartphone Versi Android dan Iphone.
    6. MIN DEPO IDR 15.000 dan Proses cepat 1 menit

    silakan bergabung ya bagi yang belum terdaftar jadi member kristalpoker
    jika ada kendala dalam pendaftaran atau kendala lainnya ,silakan hubungi CS kami langsung ya.

    ReplyDelete