정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노를 이용한 LED 점등,소등
맹구 | 2018-05-08

    

1. 프로젝트 사용한 보드 종류

  아두이노 UNO

 

 

2. 사용한 개발 프로그램명

  아두이노 IDE

 

 

3. 사용한 센서 모델명

  버튼 2개

 

 

4. 연결한 회로 설명 (또는 이미지)

 

 

5. 소스코드 (주석 필수)

 // 변수 정의
#define BUTTON1 2 // BUTTON1은 2번 PIN
#define BUTTON2 3 // BUTTON2는 3번 PIN
int LED[4] = {6,7,8,9}; // LED1~4는 6번 핀부터 9번 핀까지 순서대로
int val1 = 0; // 디지털 값 저장 1
int val2 = 0; // 디지털 값 저장 2
int start = 0; // 시작
int times = 0; // 지연 시간 측정
 
// 설정
void setup() {
  Serial.begin(9600); // PC로 확인을 위한 시리얼 통신
  pinMode(BUTTON1, INPUT); // 버튼1은 INPUT으로
  pinMode(BUTTON2, INPUT); // 버튼2는 INPUT으로
  for(char i=0;i<4;i++) pinMode(LED[i], OUTPUT); // LED는 핀 6번부터 9번까지 순서대로 OUTPUT 
}
 
void loop() {
  // 디지털 값 수신
  val1 = digitalRead(BUTTON1);
  val2 = digitalRead(BUTTON2);
 
  if(val1 == HIGH) start = 1;
  else if(val2 == HIGH) start = 0;
 
  if(start == 1) {
    for(int i=0;i<13000;i++) {
      digitalWrite(LED[0], HIGH);
      times++;
      Serial.print(i);
      Serial.print("\t");
      Serial.println(times);
      val2 = digitalRead(BUTTON2);
      if(val2 == HIGH) i=13000, start = 0;
    }
    for(int i=0;i<13000;i++) {
      digitalWrite(LED[0], LOW);
      times++;
      Serial.print(i);
      Serial.print("\t");
      Serial.println(times);
      val2 = digitalRead(BUTTON2);
      if(val2 == HIGH) i=13000, start = 0;
    }
  }
}
 

 

 

6. 문제점 및 에러 내용

  버튼을 누르면 5분점등 → 5분소등 반복

 오차가 1분~2분정도 발생하는데 오차를 해결방안을 알고 싶습니다.

 더불어서 프로그램에서 틀린 점이 있으면 수정해주시면 감사하겠습니다. 

이전글   |    아두이노 재 설치후 포트 인식 안됩니다. 2018-05-07
다음글   |    gps 데이터형인 float를 aes 암호화 2018-05-08