제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신7

in PIRCOIN · 해적 코인4 years ago

안녕하세요!! Jimae입니다!!

저번에는 시리얼 통신 폴링 방식을 설명 했고 이번에는

인터럽트 방식을 설명 하겠습니다.

우선 방식을 알려면 인터럽트에 대해서 알아야 하는대

극한의 아두이노 DIY생활 - 시간을 재는 방석8

이곳에 일부 설명을 했었습니다.

다시 설명 하자면 인터럽트란

image.png

농구에서 공을 빼앗을때 쓰는 인터셉트 처럼

프로그램도 실행하고 있는 순서를 빼앗고 다른 함수를 먼저 실행해 버리는 거죠.

즉 일정을 빼앗아서 급한것부터 먼저 처리하는게 인터럽트라고 생각하시면됩니다.

급한일정이 끝나면 다시 돌아가서 프로그램을 실행하는거죠

image.png

자 그러면 여기에서 말하는건 컴퓨터에서 신호가 들어올때

인터럽트가 실행이 되어 들어온 데이터를 처리하고 다시 기존 프로그램으로 돌아가서 프로그램을 실행하면 됩니다.

그렇게 이해하시면 되요.

그런 프로그램은 어떻게 짜야하는지 보시면!!

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

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available())
  {
    char ch = Serial.read();

    Serial.print(ch);
  }
}

저번까지 한 프로그램입니다. 여기서 변환을 해볼게요.

char data = 0;

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

void loop() {

 if(data != 0){
  Serial.print(data);
  data = 0;
  }
}

void serialEvent(void) 
{
  data = Serial.read();
}

자 이것이 인터럽트 방식인대요. 컴퓨터애서 신호가 들어오면 serialEvent 함수가 실행되며 여기서 데이터를 읽어서
loop 안에 있는 print 함수를 실행하여 아래와 같이 데이터를 뿌려줄것 입니다.

image.png

결국에는 이글에 프로그램을 2개나 올렸는대 같은 결과를 얻을수 있을것입니다.

인터럽트 방식에대해 좀더 자세히 알고 싶다면 저기서 다른 프로그램을 추가하여 알아보는것이 방법이겠죠.

이런거는 숙제로 나두겠습니다.

serialEvent 함수명은 절대로 바뀌면 안되는것이라서 시리얼 통신 인터럽트를 쓸때 이것을 꼭 활용해주세요.

결국 두가지 방식의 차이를 알려면 프로그램 좀더 올려서 추가를 해보고 비교를 해보는것밖에 방법이 없습니다.

그래서 두가지 방법 전부 해보시는걸 추천드립니다.

이상!! 시리얼 통신은 여기까지

오늘 다들 좋은 하루되세요.

다음주제는 뭘로 할지 고민이 필요할것 같내요.

제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신1
제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신2
제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신3
제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신4
제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신5
제로부터 시작하는 극한의 아두이노 DIY생활 - 시리얼통신6

Sort:  

Upvoted! Thank you for supporting witness @jswit.

즐거운 날 되세요~~^^

!shop

你好鸭,jimae!

@garamee21给您叫了一份外卖!

蛋糕

吃饱了吗?跟我猜拳吧! 石头,剪刀,布~

如果您对我的服务满意,请不要吝啬您的点赞~

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.083
BTC 60762.96
ETH 1565.09
USDT 1.00
SBD 0.47