극한의 아두이노 DIY생활 - 곡률측정기12

in kr-dev 커뮤니티2 years ago

안녕하세요 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

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57899.47
ETH 3134.16
USDT 1.00
SBD 2.39