아두이노/출력

LED 6를 사용해서, 빛이 좌우로 움직이게 하기

youjin.A 2016. 2. 8. 22:47

회로:

코드1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const int ledpins[] = {2, 3, 4, 5, 6, 7};
int wait = 100;
 
void setup()
{
for(int i=0; i<6; i++)
   pinMode(ledpins[i], OUTPUT);
 
//first of all, make ledpins[0] HIGH
digitalWrite(ledpins[0], HIGH);
delay(wait);
}
 
 void loop()
{
  //moving left
  for(int i =1; i<=5; i++)
  {
    digitalWrite(ledpins[i], HIGH);
    digitalWrite(ledpins[i-1], LOW);
    delay(wait);
   }
  //moving right
  for(int i =4; i>=0 ; i--)
   {
    digitalWrite(ledpins[i], HIGH);
    digitalWrite(ledpins[i+1], LOW);
    delay(wait);
   }
}

 

코드1 설명:

우선, setup()부분에서 ledpins[0]가 켜집니다.

그 다음, loop()부분에서

첫번째 for문에 의해서 ledpins[1]~ledpins[5]까지 순서대로 왼쪽으로 켜지고,

두번째 for문에 의해서 ledpins[4]~ledpins[0]까지 순서대로 오른쪽으로 켜집니다.  

아래의 두 코드도 코드1과 원리는 같습니다~ 

 

기타코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const int ledpins[] = {2, 3, 4, 5, 6, 7};
const int wait = 20;
 
void setup()
{
  for(int led = 0; led <N; led++)
    pinMode(ledpins[led], OUTPUT);
}
 
void loop()
{
  //moving left
  for(int led = 0; led <=4 ; led++)
     {
      digitalWrite(ledpins[led], HIGH);
      delay(wait);
      digitalWrite(ledpins[led+1], HIGH);
      delay(wait);
      digitalWrite(ledpins[led], LOW);
      delay(wait*2);
      }
  //moving right 
   for(int led = 5; led >=1; led--)
      {  
      digitalWrite(ledpins[led], HIGH);
      delay(wait);
      digitalWrite(ledpins[led-1], HIGH);
      delay(wait);
      digitalWrite(ledpins[led], LOW);
      delay(wait*2);
      }
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const int ledpins[] = {2, 3, 4, 5, 6, 7};
int wait = 50;
 
 
void setup()
{
  for(int led = 0; led < SIZE; led++)
  {
    pinMode(ledpins[led], OUTPUT);
  }
  
 digitalWrite(ledpins[0], HIGH);
 delay(wait);  
}
 
 
void loop()
{
  //moving left  
  for(int led = 0; led <=4 ; led++)
     {
     digitalWrite(ledpins[led+1], HIGH);
     delay(wait);
     digitalWrite(ledpins[led], LOW);
     delay(wait*3);
     }
   //moving right
   for(int led = 5; led >= 1; led--)
     {
     digitalWrite(ledpins[led-1], HIGH);
     delay(wait);
     digitalWrite(ledpins[led], LOW);
     delay(wait*3);
     }

[출처] [디지털출력] 2|작성자 DEW