LED 랜덤 점멸을 이용한 아두이노 주사위입니다.

스케치는 다음과 같습니다.


int ledPins[] = {4,5,6,7};
long ran;
int state;
int time = 2000;

void setup()
{
  for(int i=0; i<5; i++)
  {
    pinMode(ledPins[i],OUTPUT);
  }
  randomSeed(analogRead(0));
  ran = random(1,7);
  if(ran==1)
  {
    digitalWrite(ledPins[0], HIGH);
  }
  if(ran==2)
  {
    digitalWrite(ledPins[0], HIGH);
    digitalWrite(ledPins[1], HIGH);
  }
  if(ran==3)
  {
    digitalWrite(ledPins[1], HIGH);
    digitalWrite(ledPins[2], HIGH);
  }
  if(ran==4)
  {
    digitalWrite(ledPins[2], HIGH);
    digitalWrite(ledPins[3], HIGH);
  }
  if(ran==5)
  {
    digitalWrite(ledPins[1], HIGH);
    digitalWrite(ledPins[2], HIGH);
    digitalWrite(ledPins[3], HIGH);
  }
  if(ran==6)
  {
    digitalWrite(ledPins[0], HIGH);
    digitalWrite(ledPins[1], HIGH);
    digitalWrite(ledPins[2], HIGH);
    digitalWrite(ledPins[3], HIGH);
  }

}

void loop()
{






'프로그래밍 > Arduino' 카테고리의 다른 글

아두이노 LED 점멸  (0) 2013.12.01
아두이노 CLCD 응용  (0) 2013.11.25
아두이노 CLCD 출력하기  (0) 2013.11.23
아두이노(arduino) 입문  (0) 2013.07.02

 LED를 켜고 끄는 방법을 통해서 순차적으로 점멸하도록 했습니다.

digitalWrite(led[i], HIGH);로 켜고 digitalWrite(led[i], LOW);로 끌 수 있는데 이것을 이용하면 점멸이 가능합니다.


아래 스케치를 참고하세요.

int led[] = {2,3,4}; //LED와 연결된 보드 핀 번호

void setup()
{
for(int i = 0; i <= 2; i++)
{
pinMode(led[i],OUTPUT); // 8개의 LED를 출력으로 설정.
}
}
void loop()
{
for(int i = 0; i <=2; i++)
{
  digitalWrite(led[i], HIGH); // D2부터 D9에 연결된 LED를 순차적으로 켬
  delay(200); // 200ms(0.2초)동안 기다림.
}

for(int i = 2; i >=0; i--)
{
  digitalWrite(led[i], LOW); // D2부터 D9에 연결된 LED를 순차적으로 끔
  delay(200); // 200ms(0.2초)동안 기다림.
}



실제 구동 영상입니다.


'프로그래밍 > Arduino' 카테고리의 다른 글

LED 주사위  (0) 2014.08.04
아두이노 CLCD 응용  (0) 2013.11.25
아두이노 CLCD 출력하기  (0) 2013.11.23
아두이노(arduino) 입문  (0) 2013.07.02

 CLCD는 정보를 직접적으로 출력할 수 있어서 매우 유용하다. 시리얼 모니터로 출력을 할 수도 있지만 아두이노 자체에서 출력을 한다는 것에 큰 의의가 있고 편리함이 있다고 생각한다. 이것을 이용하면 간단하면서도 재미있는 것들을 만들 수 있다. 그 중에서 생각난 것(시간과 관련된 것)을 소개해볼까 한다.


1. PC 사용 시간 출력

   아두이노를 PC와 연결해놓으면 PC를 부팅해서 전원이 공급되는 순간부터 바로 아두이노가 동작한다. 따라서 타이머로 설정하면 PC 사용 시간을 알 수 있다. 현재 실제로 사용중이기도 하다.


 다소 조잡하지만 스케치는 아래와 같다.

// 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);

byte newChar[8] = { B00000, B11111, B00001, B11111, B00001, B00001, B00001, B00000 };
int h=0,m=0,s=0;

void setup() {
// set up the LCD's number of columns and rows:
lcd.createChar(0, newChar);
lcd.begin(16, 2);


lcd.print("PC Using Time ");
lcd.write(*newChar);
lcd.write(*newChar);
}
void loop() {
lcd.setCursor(0, 1);
if(s!=0&&(s%60)==0)
{
  s=0;
  m++;
}

if(m!=0&&(m%60)==0)
{
  m=0;
  h++;
}

lcd.print(h);
lcd.print("h  ");
lcd.print(" ");
lcd.print(m);
lcd.print("m  ");
lcd.print(" ");
lcd.print(s);
lcd.print("s");
lcd.print(" ");
lcd.print(" ");
lcd.print(" ");
lcd.print(" ");
s++;
delay(1000);


 이 스케치에 대한 결과물은 다음 사진에서 확인할 수 있다.


 ㅋㅋ와 같은 문자를 입력하기 위해서는 http://mikeyancey.com/hamcalc/lcd_characters.php 이곳을 방문하여 커스터마이징 하면 된다.


2. LOL 용 리젠 타이머

   일단 이것은 수동이라는 것을 알아 두어야 한다. 자동 타이머가 있다고 들은 것 같기도 한데 그것은 라이엇 게임즈에서 허용하지 않는 방법이다. 롤 자체의 프로그램에서 어떤 값을 일종의 하이재킹 해야 가능한 일이기 때문이다. 그만한 기술도 없고 일단 허용되지 않은 일이다. 여기서 소개하는 것은 용 리젠 시간인 6분(=360초)에 대한 단순한 타이머의 역할을 한다. 대신 아두이노에는 리셋 버튼이 있기 때문에 용을 처치하고 리셋 버튼을 누르면 다시 리젠 시간을 측정할 수 있으므로 어느 정도 잘 이용한다면 나름대로 유용 할 수 있다고 생각한다. 물론 스마트폰 앱도 많겠지만 말이다. 그냥 하나의 예제로 봐주면 감사하겠다.


 시간 카운터 하는 방법만 바꿔 주면 된다.

// 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);

byte newChar[8] = { B00000, B11111, B00001, B11111, B00001, B00001, B00001, B00000 };
int d=360;

void setup() {
// set up the LCD's number of columns and rows:
lcd.createChar(0, newChar);
lcd.begin(16, 2);

lcd.print("LOL Dragon Timer ");
}
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);
if(d==-1)
{
  d=360;
}
lcd.print(d);
lcd.print("s");
lcd.print(" ");
lcd.print(" ");
d--;


delay(1000);

}




 결과물은 위와 같고 블루, 레드, 바론에 대한 것으로도 쉽게 바꿀 수 있다.


 깊이 있는 내용은 아니지만 흥미가 있는 예제를 가지고서 자발적으로 구현에 임하면 효과적인 연습이 되지 않을까 싶다.

'프로그래밍 > Arduino' 카테고리의 다른 글

LED 주사위  (0) 2014.08.04
아두이노 LED 점멸  (0) 2013.12.01
아두이노 CLCD 출력하기  (0) 2013.11.23
아두이노(arduino) 입문  (0) 2013.07.02

+ Recent posts