IT Info

아두이노 - 커패시터 이용 빛 감지

로픽 2017. 4. 22. 10:07
300x250

커패시터 이용 빛 감지

* 커패시터는 전하를 충전하는 소자

* 전체적인 과정
 1. 커패시터를 충전하기 위해 I/O핀을 HIGH로 놓는다.
 2. 커패시터가 충분히 충전될 만큼 기다리고
 3. I/O핀을 입력으로 전환하고
 4. 시간을 체크
 5. 전압이 2.1이하로 떨어지면 다시 시간을 체크하여 이전 시간 값과 차를 구한다.

long rcTime(int pin);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  tone(4,3000,1000);
  delay(1000);
}

void loop() { //왼쪽 라이트 값을 출력한다.
  long tLeft = rcTime(8);
  long tRight = rcTime(6);
  Serial.print("tLeft = ");
  Serial.print(tLeft);
  Serial.print(" us  ");
  Serial.print("tRight = ");
  Serial.print(tRight);
  Serial.println(" us");
  delay(1000);
}

long rcTime(int pin)
{
  pinMode(pin,OUTPUT);  // 출력포트설정
  digitalWrite(pin, HIGH);  //0.001초 동안 HIGH신호 전기 공급
  delay(1);
  pinMode(pin, INPUT);  //입력포트 설정
  digitalWrite(pin, LOW); //전기 끊기
  long time = micros(); //현재시간 마이크로단위로 체크
  while(digitalRead(pin));  // 읽기를 통해서 전력 소모
  time = micros() - time; //그 후 현재시간과 이전에 측정한 시간 체크 후 출력 
  return time;
}

//밝으면 전류 증가 커패시터에 저장된 전력사용 증가 시간차가 줄어든다.
//어두우면 전류 감소 커패시터에 저장된 전력사용 감소 시간차가 증가한다.


반응형