아두이노 디지털 입출력 (6)

아두이노 코딩 스위치 채터링과 디바운스 디바운싱

Arduino Uno Switch Debouncing and Chattering대부분의 스위치를 손으로 한번 누를 때, 접점 부근에서 스위치의 물리적인 떨림에 의해 여러 번 눌러지는 현상을 채터링(Chattering) 이라고 합니다. 이 채터링에 의한 노이즈를 보호하기 위해 디바운스(Debounce)라는 방법을 사용합니다. 디바운싱은 회로적인, 소프트웨어적인 방법으로 처리가 가능합니다. 본 포스트에서는 스위치의 물리적인 떨림에 의한 채터링 현상을 제거하는 디바운스 처리에 대해 작성하였습니다.채터링과 디바운스채터링아래와 같이 스위치를 짧게 한번 눌렀다 때면, 스위치의 물리적 떨림에 의해 스위치가 여러번 눌러진 것과 같은 현상을 채터링 이라고 합니다. 첫 번째 파형사진 시간 간격이 한칸에 20ms 이고, 채..

Embedded/Arduino 2020. 7. 21.

아두이노 코딩 스위치 입력 인터럽트(Interrupt) 방식으로 LED 제어

Arduino Uno Switch Input EXTI Method for LED Control아두이노 우노 보드에서 스위치 입력을 인터럽트 방식으로 구현하여 LED를 제어하는 예제입니다. 인터럽트 방식으로 여러가지 동작을 동시에 기능 하는 것처럼 프로그래밍 구현이 가능합니다. 본 포스트에서는 스위치 인터럽트 방식을 이용하여 우선순위에 따라 사용할 수 있는 두 가지 코드 예제를 소개합니다.Hardware준비물본 예제의 구성품은 아래와 같습니다.Arduino Uno x 1 EADip Type LED x 1 EADip Type Tact Switch x 1 EADip Type Resistor x 1 EABread Board x 1 EAJumper Wires 회로도 : 스위치, LED연결본 포스트의 회로도와 LE..

Embedded/Arduino 2020. 7. 20.

아두이노 코딩 스위치 입력 폴링 방식 (Switch Polling) 으로 LED 제어

Arduino Uno Switch Input Polling Method for LED Control아두이노 우노 보드에서 스위치를 입력을 폴링 방식 구현하여 LED 를 제어하는 예제입니다.Hardware준비물본 예제의 구성품은 아래와 같습니다.Arduino Uno x 1 EALED x 1 EATact Switch x 1 EAResistor x 1 EABread Board x 1 EAJumper Wires 회로도 : 스위치, LED 연결 본 예제의 회로 구성은 아래와 같습니다.D2 : 스위치 입력(내부 풀업 사용)Switch ON : LOW(0V) 입력 Switch OFF : HIGH(5V) 입력D13 : LED 출력HIGH 출력 일 때 LED 켜짐LOW 출력 일 때 LED 꺼짐회로도 참고사항스위치는 2번..

Embedded/Arduino 2020. 7. 19.

아두이노 코딩 LED Toggle (On/OFF) 여러 가지 방식

Arduino Uno LED Toggle with / without delay()아두이노 우노 보드에서 delay(), millis() 함수와 MsTimer2 라이브러리를 사용한 LED Toggle 예제입니다.Hardware준비물 본 예제 구성품은 아래와 같습니다.Arduino Uno x 1 EADIP LED x 1 EAResistor 1kΩ x 1 EA ( 200 Ω ~ 1 kΩ 무관)Bread Board x 1 EAJumper Wires회로도 회로 참고사항 LED 직렬 저항 크기 선정시 아래의 사항이 고려 되어야 합니다.아두이노 digital Pin 의 최대 출력 전류는 30mA 이하로 되도록 저항 값 결정LED (일반적으로) 정방향 전류 IF가 20mA 를 초과 하지 않도록 저항 값 결정 Softw..

Embedded/Arduino 2020. 7. 19.

아두이노 강좌 #3 시간 관련 함수 설명, delay() 없이 LED Blink 코드 작성

delay() delayMicroseconds() millis() micros() 아두이노에서는 일정 시간 동안 프로그램을 멈추거나, 특정 순간부터 시간을 측정 할 수 있는 함수를 제공합니다. 시간 지연 함수는 delay(), delayMicroseconds() 가 있고, 시간을 측정하는 함수는 micros(), millis() 가 있습니다. 이 함수들을 사용하여 1초마다 온도 센서의 값을 PC로 데이터 송신하거나, 0.5초 이내에 버튼이 두 번 눌리면 더블 클릭 같은 기능을 추가하는 방법 등 다양한 방법으로 프로그램 개발이 가능합니다. 본 포스트에서는 아두이노에서 제공하는 시간 함수 사용법과 내장 LED를 사용한 간단한 예시를 작성하였습니다. 시간 지연 vs 시간 측정 차이 아두이노에서 시간 지연 함수..

Embedded/Arduino 2020. 7. 2.

아두이노 강좌 #2 디지털핀 GPIO 으로 LED 깜빡이기

아두이노 디지털 핀으로 LED 제어해보기본 포스트에서는 아두이노 디지털 핀(GPIO)를 제어하기 위한 방법과, LED 제어 예시들을 설명합니다.용어정리디지털 신호 디지털을 정의하는 여러가지 방법이 있지만, 디지털 신호는 1과 0으로 된 신호를 예기합니다. 1과 0만 존재한다는 것은, 어떤 신호의 구분이 HIGH 또는 LOW 만 존재 또는 TRUE(참) FALSE 값만 존재하는 것을 의미합니다. (꼭 이렇게 생긴게 아날로그 스위치는 아닙니다.) 왼쪽 그림과 같은 노브형태의 스위치는 최소 ~ 최대 사이에 중간 무수한 값을 가집니다. 이런 형태를 아날로그 형태로 말 할 수 있습니다. 오른쪽 그림은 자주 보게 되는 On/Off 스위치로, 이 스위치의 상태는 오로지 켜지거나, 꺼지는 상태만 존재하는 디지털과 같은..

Embedded/Arduino 2020. 7. 1.