Arduino(아두이노)2010. 7. 1. 14:28

주문한 아두이노는 아직 오지 않았다..

그냥 컴파일러만 받아서,  이렇게 하면 되겠지 하는 생각만으로 한번 짜봤는데,, 다행히 컴파일상 오류는 없나보다 ㅎㅎㅎ


조건 :

아두이노는 폴딩제어를 하는 8핀 릴레이가 달려있다.

입력은 Acc , 폴딩스위치 2핀 , 도어락 모터 구동신호 (+,-) 를 받는다.

폴딩스위치의 동작이 최우선하여 어느순간이건 누르면 접히게 한다.

사람이 운전중이라 판단되는 상태인 Acc 입력 상태에선 도어언락 신호에 반응하지 않는다.

Acc 가 없는 상태에서는 도어 언락/락 신호에 반응하여 폴딩 동작을 한다.


아두이노의 핀번호도 잘 모른다 어떤게 디지털인지 아날로그인지.. 일단 그냥 해봤다. ㅋㅋ



2010/07/02 수정
아두이노 시뮬레이터를 구했다.
이것저것 세팅하고 회로를 그려 어제 만든 프로그램을 테스트 했더니 제대로 동작하지 않았다.
원인파악후, 제대로 동작하는 소스를 다시 만들었다.




12V 입력을 5V 로 낮춰주는 방법, 제너다이오드 이용




아두이노 소스

 // 모든 12V 가 입력되는 입력선은 전압분배회로나 제너다이오드를 써서 5V 로 낮춰줘야함.

int relay_output=1; // 폴딩을 제어할 8핀 릴레이 출력
int lock_input=2; // 도어락시 + 가 출력되는 핀 입력
int unlock_input=3; // 도어 언락시 + 가 출력되는 핀 입력
int acc = 4; // ACC 입력
int folding_switch=5; // 폴딩스위치에서 폴딩시 + 가 나오는 핀 입력

int doorlock_status = 0; // 0 = unlock , 1 = lock
int folding_switch_status=0; // 0 = normal , 1 = pushed

// 미러 접는 기능.
void folding()
{
        // 폴딩 릴레이가 동작하지 않을때만 동작
 if (digitalRead(relay_output)==LOW) digitalWrite(relay_output,HIGH);
}

// 미러 펼침 기능
void unfolding()
{
        // 폴딩릴레이가 동작할때만 동작.
 if (digitalRead(relay_output)==HIGH) digitalWrite(relay_output,LOW);
}

void setup()
{
 pinMode (relay_output,OUTPUT);
 pinMode (lock_input,INPUT);
 pinMode (unlock_input,INPUT);
 pinMode (acc,INPUT);
 pinMode (folding_switch,INPUT);  
}

void loop()
{
  
 // 폴딩 스위치의 현재값을 읽음
 if (digitalRead(folding_switch)==HIGH) folding_switch_status=1;
 else folding_switch_status=0;

        // 도어락의 신호에 따라 도오락 상태값을 저장해둠.
        // 도어락 모터 신호는 연속적이지 않으니 저장해 두었다 사용해야함.
 if (digitalRead(unlock_input) == HIGH) doorlock_status = 0;
        if (digitalRead(lock_input) == HIGH) doorlock_status = 1;

 if (folding_switch_status==1)
 {
  folding(); // 폴딩스위치가 눌린상태면 무조건 접음
 }
 else if (folding_switch_status==0) // 폴딩스위치가 안눌린 상태.
 {
  if (digitalRead(acc)==LOW) // 주행중인 ACC 상태에서는 속도감응 도어락이 동작하므로 락폴딩 기능 정지. ACC 가 아닌 상태에서만 동작함.
  {
   if (doorlock_status==0) unfolding(); // 도어가 열린 상태면 펼침
   if (doorlock_status==1) folding(); // 도어가 잠긴 상태면 접음
  }
 }


 delay (500);

}


'Arduino(아두이노)' 카테고리의 다른 글

아두이노에 빠져볼까?  (2) 2010.06.29
Posted by 초동