Search

Wednesday, October 12, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Jumlah LED maksimal yang dapat dikontrol oleh ARDUINO (UNO) - Bonus KnightRider LED

Tutorial ini menunjukkan jumlah maksimal LED yang dapat dikontrol secara langsung menggunakan pin digital Arduino (UNO). Dan apakah semua LED dapat menyala bersamaan?

KEBUTUHAN PERANGKAT
  • Arduino (uno)
  • LED (12 buah)
  • Resistor 220 ohm maks 1 kilo-ohm (12 buah)
  • kabel jumper (warna-warni)
SIRKUIT
  • Untuk menghubungkan 1 buah LED ke arduino, silakan lihat tutorial Blinking LED. Silakan duplikat rangkaian LED tsb hingga berjumlah 12 buah rangkaian. Masing2 kaki positif-nya dihubungkan ke pin digital D2 hingga D13. Pin D0 dan D1 tidak dapat digunakan sebagai output dikarenakan sudah memiliki fungsi khusus sebagai RX dan TX.

SKEMATIK

Lihat rangkaian skematik di Blinking LED.

KODE

Setelah membuat rangkaian sirkuitnya:
  • sambungkan Arduino ke komputer
  • jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
  • masukkan kode berikut:
//#define _CDEBUG_ // uncomment for DEBUGGING
#define LED_NUM 12
int aLedPin[LED_NUM] = {13,12,11,10,9,8,7,6,5,4,3,2}; // PIN D0 & D1 can not be set as OUTPUT because of dedicated function as RX & TX
int i = 0, iPos = 0;
int iDir = 1;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  for (i=0; i<LED_NUM; i++) {
    pinMode(aLedPin[i], OUTPUT);
    digitalWrite(aLedPin[i], LOW);
  }
}

void loop() {
  // test all LEDs are blinking simulatenously?
  //LEDAllBlinks(); // uncomment to display blinking 12-LEDs
  
  // knight rider led
  LEDKnightRider(); // uncomment to display Knight Rider LED (using 12 LEDs)
}

void LEDKnightRider() {
#ifdef _CDEBUG_
  Serial.println(iPos);
#endif
  digitalWrite(aLedPin[iPos], HIGH);
  delay(50);
  digitalWrite(aLedPin[iPos], LOW);
  iPos = iPos + iDir;
  if ((iPos == LED_NUM - 1) || (iPos == 0)) {
    iDir = iDir * -1;
  }
}

void LEDAllBlinks() {
  for (i=0; i<LED_NUM; i++) {
    digitalWrite(aLedPin[i], HIGH);
  }
  delay(1000);
  for (i=0; i<LED_NUM; i++) {
    digitalWrite(aLedPin[i], LOW);
  }
  delay(1000);
}

VIDEO

Berikut adalah video hasil tutorial diatas:

12-LEDs are blinking simultaneously

Knight Rider LED (12-LEDs)

SUMBER
https://www.arduino.cc/en/Tutorial/Blink

Selamat mencoba!

No comments:

Post a Comment