극한의 아두이노 DIY생활 - 곡률측정기12
안녕하세요 Jimae입니다.
저번에는 로터리에 대한 자료를 올렸는대요.
void setup() {
// put your setup code here, to run once:
LCDInit();
LightSensorInit();
RotaryInit();
SwitchInit();
LightInit();
Serial.begin (9600);
LaserInit();
MsTimer2::set(200, drawing); // flash함수를 200ms마다 호출한다
MsTimer2::start();
}
그 다음 초기화 하는 부품들은 로터리에 있는 스위치 기능과 조명용 LED입니다.
SwitchInit();
LightInit();
#include <PinChangeInt.h>
#define SWITCHPIN A8
#define SWITCHDELAY 150
#define BACK 0
#define ENTER 1
unsigned char switchInputCount = 0;
unsigned long switchTime = 0;
unsigned char switchState = BACK;
void SwitchInit(void)
{
pinMode(SWITCHPIN, INPUT_PULLUP);
attachPinChangeInterrupt(SWITCHPIN, SwitchInput, FALLING);
}
void SwitchDetect(void)
{
if(switchInputCount > 3 && (millis() - switchTime) > SWITCHDELAY) // 스위치 인식
{
if(switchState == BACK) switchState = ENTER;
else switchState = BACK;
switchInputCount = 0;
}
}
unsigned char SwitchStateRead(void)
{
return switchState;
}
void SwitchInput(void)
{
switchTime = millis();
switchInputCount++;
}
attachPinChangeInterrupt 스위치 부분도 마찬가지로 외부 인터럽트를 사용하여 스위치를 인식을 할수있게 구현하였습니다.
#define LIGHT_ON HIGH
#define LIGHT_OFF LOW
#define LIGHTPIN 7
#define LIGHTBRIGHTNESS 50
unsigned char lightFlag = LIGHT_OFF;
void LightInit(void)
{
pinMode(LIGHTPIN, OUTPUT);
digitalWrite(LIGHTPIN, LIGHT_OFF);
lightFlag = LIGHT_OFF;
}
void LightOn(void)
{
analogWrite(LIGHTPIN, (int)(2.55 * LIGHTBRIGHTNESS));
lightFlag = LIGHT_ON;
}
void LightOff(void)
{
digitalWrite(LIGHTPIN, LIGHT_OFF);
lightFlag = LIGHT_OFF;
}
unsigned char LightState(void)
{
return lightFlag;
}
void LightControl(unsigned char rotaryData)
{
analogWrite(LIGHTPIN, (int)(2.55 * rotaryData));
}
조명용 LED 같은경우 PWM을 이용하여 조명의 밝기를 조절할수있도록 구현을 하였습니다.
이것을 로터리 스위치로 이용하여 밝기를 변할수있도록 했습니다.
LaserInit();
같은 경우 시리얼 통신만 초기화 할태지만 이것또한 프로그램이 길어서 다음에 올리도록 하겠습니다.
다들 좋은 하루 되세요.
극한의 아두이노 DIY생활 - 곡률측정기1
극한의 아두이노 DIY생활 - 곡률측정기2
극한의 아두이노 DIY생활 - 곡률측정기3
극한의 아두이노 DIY생활 - 곡률측정기4
극한의 아두이노 DIY생활 - 곡률측정기5
극한의 아두이노 DIY생활 - 곡률측정기6
극한의 아두이노 DIY생활 - 곡률측정기7
극한의 아두이노 DIY생활 - 곡률측정기8
극한의 아두이노 DIY생활 - 곡률측정기9
극한의 아두이노 DIY생활 - 곡률측정기10
극한의 아두이노 DIY생활 - 곡률측정기11
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.