# 목적
버튼을 이용하여 FND가 변하는 프로그램 만들기
함수를 이용하여 모듈화하는 과정을 통해 코드 가독성 향상
# 버튼 카운터 만들기
목표 : 버튼을 누르면 순서대로 0부터 9까지 FND에 표시된다.
준비물 : 아두이노 키트, FND, 푸쉬버튼
입출력 설명
## 하드웨어
## 코드
int count = 0;
void setup(){
for(int i = 6; i < 14; i++){
pinMode(i, OUTPUT);
}
pinMode(2, INPUT);
}
void loop(){
if(digitalRead(2) == 1){
if(count > 9){
count = 0;
} else {
count = count + 1;
}
delay(200);
}
fnd(count);
}
void fnd(int i){
if(i == 0){
// FND에 0표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 1){
// FND에 1표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
if(i == 2){
// FND에 2표시
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 3){
// FND에 3표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 4){
// FND에 4표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
if(i == 5){
// FND에 5표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
}
if(i == 6){
// FND에 6표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
}
if(i == 7){
// FND에 7표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 8){
// FND에 8표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 9){
// FND에 9표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
## 시뮬레이션
# 버튼 주사위 만들기
목표 : 버튼을 누르면 0~6 사이의 숫자가 랜덤하게 표시된다.
준비물 : 아두이노 키트, FND, 푸쉬버튼, 10k옴 저항
입출력 설명
입력 : digitalRead, 푸쉬버튼 값(1 또는 0)
출력 : digitalWrite, FND
## 하드웨어
## 코드
int dice = 0;
void setup(){
for(int i = 6; i < 14; i++){
pinMode(i, OUTPUT);
}
pinMode(2, INPUT);
}
void loop(){
if(digitalRead(2) == 1){
delay(200);
// 랜덤한 주사위를 표현하기 위해 6개의 숫자를 점차 천천히 보여준다.
dice = random(1,7); fnd(dice); delay(30);
dice = random(1,7); fnd(dice); delay(70);
dice = random(1,7); fnd(dice); delay(120);
dice = random(1,7); fnd(dice); delay(180);
dice = random(1,7); fnd(dice); delay(250);
dice = random(1,7); fnd(dice); delay(330);
dice = random(1,7); fnd(dice);
}else{
dice = dice;
}
// 마지막 랜덤 숫자를 출력한다.
fnd(dice);
}
void fnd(int i){
if(i == 0){
// FND에 0표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 1){
// FND에 1표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
if(i == 2){
// FND에 2표시
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 3){
// FND에 3표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 4){
// FND에 4표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
}
if(i == 5){
// FND에 5표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
}
if(i == 6){
// FND에 6표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
}
if(i == 7){
// FND에 7표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 8){
// FND에 8표시
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if(i == 9){
// FND에 9표시
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
## 시뮬레이션