본문 바로가기

Embedded/Arduino

lilyPad-v211026

회로를 다음의 두가지 가운데 하나로 구성하시면 됩니다.

회로 #1

교차부분

 

회로 #2 : 교차하지 않고 릴리패드 아래로 바느질

 - 주의 사항 : A4 A5의 금속부분과 닫으면 안됨

 

 

아두이노 프로그램 설정하기

1.  보드가 LilyPad Arduino USB 인지 확인

2. 포트 확인하기

작성된 코드 업로드

1. 깜빡이기 (blink)

const long interval = 150; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;

unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
 
}
void led_blink(int count)
{
  if(count%2 == 0){ 
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], HIGH);
    }
  }
  else{
    for(int i=0; i<ledSize; i++){
      digitalWrite(ledArr[i], LOW);
    }
  }
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_blink(ledCount);
    ledCount++;
  }
}

 

2. 위에서 아래로 깜빡이기

const long interval = 200; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;

unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
 
}
void led_up2dn(int n)
{
  n = n % (ledSize+1);
  for(int i =0; i<ledSize; i++){
    if (i == n)
      digitalWrite(ledArr[i], HIGH);
    else
      digitalWrite(ledArr[i], LOW);
  }
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_up2dn(ledCount);
    ledCount++;
  }
}

 

3. 아래에서 위로 깜빡이기

const long interval = 200; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;

unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
 
}
void led_dn2up(int n)
{
  n = n % (ledSize+1);
  for(int i=ledSize-1; i>=0; i--){
    if (i == (ledSize-1-n))
      digitalWrite(ledArr[i], HIGH);  
    else
      digitalWrite(ledArr[i], LOW);  
  }
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_dn2up(ledCount);
    ledCount++;
  }
}

 

4. 누적해서 깜빡이기(위에서 아래로)

const long interval = 200; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;

unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
 
}

void led_off()
{
  for(int i=0; i<ledSize; i++)
  	digitalWrite(ledArr[i], LOW);
}

void led_weighted_up2dn(int n)
{
  n = n % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
    digitalWrite(ledArr[n], HIGH);
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_weighted_up2dn(ledCount);
    ledCount++;
  }
}

 

5. 누적해서 깜빡이기(아래에서 위로)

const long interval = 200; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);
int ledCount = 0;

unsigned long previousMillis = 0;
 
void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
 
}

void led_off()
{
  for(int i=0; i<ledSize; i++)
  	digitalWrite(ledArr[i], LOW);
}

void led_weighted_dn2up(int n)
{
  n = n % (ledSize+1);
  if (n == ledSize)
    led_off();
  else
    digitalWrite(ledArr[ledSize-1-n], HIGH); 
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_weighted_dn2up(ledCount);
    ledCount++;
  }
}

 

FADE

const long interval = 20; //깜빡임 시간

int ledArr[] = {11,10,9,3}; // 사용하는 LED번호
int ledSize = sizeof(ledArr)/ sizeof(ledArr[0]);

int ledCount = 0;
int fadeDirection = 1;

unsigned long previousMillis = 0;

void led_fade()
{ 
  for(int i=0; i<ledSize; i++)
      analogWrite(ledArr[i], ledCount);
  
  if(ledCount == 255) 
  	fadeDirection = -1;
  
  if(ledCount == 0) 
  	fadeDirection = 1;
    
  ledCount += (5*fadeDirection);
  //Serial.println(ledCount);
}

void setup()
{
  for(int i=0; i<ledSize; i++)
  	pinMode(ledArr[i], OUTPUT);
}
 
void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    led_fade();
  }
}

'Embedded > Arduino' 카테고리의 다른 글

CAN example #1  (0) 2021.11.29
lilyPad-v211026 #2  (0) 2021.10.26
lilyPad-v211025  (0) 2021.10.25
Arduino-v211022  (0) 2021.10.22
Arduino-v211021  (0) 2021.10.21