728x90
* 따라하면서 배우는 아두이노 책을 참고했습니다.
[ 문제 ]
5.3 아래의 패턴이 반복해서 표시되도록 스케치를 작성해보자.
단, 패턴을 배열로 저장하여 사용하는 방식이 아니라 계산에 의해 패턴을 생성하도록 한다.
[ 코드 ]
int pattern, shift;
int pins[] = {2,3,4,5};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(int i=0;i<4;i++){
pinMode(pins[i],OUTPUT);
digitalWrite(pins[i],LOW);
}
}
void loop() {
// put your main code here, to run repeatedly:
for(int idx=0;idx<6;idx++){
pattern = 1;
if(idx<4) shift=idx;
else shift=6-idx;
for(int i=0;i<shift;i++)
pattern = (pattern<<1)|0x01;
if(pattern==0b0001){
digitalWrite(pins[0],HIGH);
digitalWrite(pins[1],LOW);
digitalWrite(pins[2],LOW);
digitalWrite(pins[3],LOW);
}
if(pattern==0b0011){
digitalWrite(pins[0],HIGH);
digitalWrite(pins[1],HIGH);
digitalWrite(pins[2],LOW);
digitalWrite(pins[3],LOW);
}
if(pattern==0b0111){
digitalWrite(pins[0],HIGH);
digitalWrite(pins[1],HIGH);
digitalWrite(pins[2],HIGH);
digitalWrite(pins[3],LOW);
}
if(pattern==0b1111){
digitalWrite(pins[0],HIGH);
digitalWrite(pins[1],HIGH);
digitalWrite(pins[2],HIGH);
digitalWrite(pins[3],HIGH);
}
delay(1000);
}
}
※ 제 글이 도움이 되었다면 공감 부탁드려요 :)
반응형
'아두이노' 카테고리의 다른 글
[ 아두이노 ] 버튼 눌러서 LED 패턴 변경하기 (p.115 문제6.3) (0) | 2021.02.14 |
---|---|
[ 아두이노 ] 입력받은 문자열 오름차순 정렬 (0) | 2021.02.14 |
[ 아두이노 ] 정수 2개 입력받아서 합 구하기 (6) | 2021.02.14 |