정보나눔

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

아두이노에서 홀센서 사용시 질문사항입니다!
이도연 | 2016-05-05

안녕하세요 전자과학생입니다.

 

제가 아두이노로 자전거점멸등을 만드는데

자전거 속도에 따라서 점멸등이 점등되는 속도를 제어하려고 합니다.

홀센서로 rpm값을 받아오고 거기에 따라서 점등되는 속도를 제어하는데

질문사항은 바로

void SpeedLight(){
  while(1){
      sspeed1b();
      sspeed1c();
      sspeed1a();
      sspeed1d();

      delay(10000/rpm);
   
      sspeed2b();
      sspeed2c();
      sspeed2a();
      sspeed2d();

      delay(10000/rpm);
     
      sspeed3b();
      sspeed3c();
      sspeed3a();
      sspeed3d();

      delay(10000/rpm);
    
      sspeed4b();
      sspeed4c();
      sspeed4a();
      sspeed4d();
      delay(10000/rpm);
     
  }
}

while문 안에서 sspeed()라는 함수로 차례대로 점등을 시키는데

rpm값이 5초마다 바껴서 딜레이를 바꿔주면서 속도가 변해야하는데

while문 안에서만 계속 돌아서 5초마다 스캔하는 동작을 행할수가 없습니다.

while문으로 sspeed점등을 반복하고 rpm값을 5초마다 받아오게끔 소스를 짜야하는데

잘 모르겠습니다 도와주시면 감사하겠습니다.

 

int tickEvent=t.every(5000,scanning);   //타이머 라이브러리로 5초마다 scanning이라는 함수 실행

void scanning(){
  attachInterrupt(INT0,rpm_fan,FALLING);  //rpm_fan은 rpmcount ++ 하는 함수
  rpm = rpmcount*60;
  Serial.print("RPM=\t");
  Serial.print(rpm);
  Serial.print("\t Hz=\t");
  Serial.println(rpmcount);
  if(rpmcount > 5){
    SpeedLight();     //sspeed()점등
  }
  
  else if(rpmcount <5){
  scommon1a();
  scommon1b();
  scommon1c();
  scommon1d();
 
  rpmcount=0;
  }
  rpmcount=0;
 
 
}

 

 

이전글   |    음성인식 2016-05-05
다음글   |    usb연결 질문드립니다 2016-05-06