2020/07 (27)

아두이노 강좌 #18 I2C Character LCD 기본 함수 사용 방법 (JHD 162A LiquidCrystal_I2C)

Arduino Uno I2C 16x2 CLCD 기본 사용법Character LCD(CLCD) 는 아두이노 텍스트 출력 장치로 사용 할 수 있는 표시 모듈 중 하나 입니다. 아두이노에서 CLCD를 사용하려면 최소 6개 이상의 포트을 사용해야 해서 핀의 소모가 큽니다. 하지만, I2C I/O 확장 모듈이 함께 내장된 캐릭터 LCD는 단 2개의 포트만 사용하여 쉬운 연결 구성이 가능합니다. 본 포스트에서는 I2C 캐릭터 LCD 를 소개하고, I2C CLCD용 라이브러리의 기본 사용법에 대해 설명합니다.Character LCD (캐릭터 LCD)Character LCD 는 아래 왼쪽그림과 같이 텍스트를 출력 전용 LCD 입니다. CLCD는 8x2, 12x2, 16x1 20x2, 20x4, 24x2 등의 사이즈, ..

Embedded/Arduino 2020. 7. 30.

아두이노 강좌 #17 I2C 통신으로 아두이노 우노와 ESP32 통신 하기

Arduino Uno and nodeMCU ESP-32s지난 포스트에서 I2C 통신에 대한 설명과 아두이노에서 I2C 통신 구현을 위한 기본적인 함수들을 알아보았습니다. 본 포스트에서는 아두이노 보드끼리 I2C 통신하여 내장 LED를 켜고 끄는 예제를 소개하면서 I2C 통신에 대해 학습할 예정입니다. 관련포스트 I2C 통신 소개 및 아두이노에서 I2C 통신 구현 방법 2020/07/28 - [Arduino/Basic] - 아두이노 강좌 #16 I2C 통신 소개와 구현 방법예제 소개아두이노에서 I2C 통신 사용법을 익히기 위해 아래의 3가지 예제를 준비하였습니다.예제1I2C 버스에 존재하는 I2C 장치의 주소 검색예제2Master Write / Slave receiver 예제Slave 에서 1을 수신하면 ..

Embedded/Arduino 2020. 7. 29.

아두이노 강좌 #16 I2C 통신 소개와 구현 방법

Arduino Uno 에서 I2C 통신 구현 코드 소개I2C 통신은 아두이노에서 사용 가능한 시리얼 통신 중의 하나로 비교적 빠른 속도를 요구하지 않는 간단한 주변 장치와 통신이 가능합니다. 아두이노에서는 주로 LCD, OLED 등으로 화면을 출력하고, 각종 센서로부터 데이터 수집, 다른 보드와의 통신등의 사용이 가능합니다. 폰 포스트에서는 I2C 통신에 대해 간단히 알아보고, Arduino 에서 I2C 구현하는 방법에 대해 소개합니다.I2C 통신 I2C는 UART와 유사한 직렬 통신 프로토콜 이지만, PC 장치 통신에는 사용되지 않고 모듈 및 센서와 함께 사용됩니다. 아두이노에서 사용되는 UART, I2C, SPI 는 차후 포스트에서 자세히 차이점에서 다룰 예정이고, 본 포스트에서는 I2C에 대해 간략..

Embedded/Arduino 2020. 7. 28.

아두이노 코딩 : 조도센서(CDS,포토레지스터)로 LED Dimming 하기

Arduino Uno : Dimming LED with light sensor (CDS Sensor, Photoresistor) 포토레지스터는 빛의 세기를 측정 할 수 있는 센서 중의 하나로 주변 밝기에 따라 저항이 변하는 특성을 가지고 있습니다. 본 포스트에서는 포토레지스터로 주변 밝기를 측정하고, 주변 밝기에 따라 LED의 밝기를 조절하는 예제를 소개합니다.포토레지스터 아래 소개 할 예제에 사용된 포토레지스터는 GL5537 입니다. 아래 그림은 GL5537의 외형과 센서 테이블을 보여 주고 있습니다. GL5537 과 같은 센서는 우측 그래프에서 보는 것처럼 오차 범위가 넓어 정밀 센서가 아닙니다. 데이터 시트 상에서 10 lux 의 경우 18kΩ ~ 50Ω 의 범위를 가지는 것을 확인 할 수 있습니다..

Embedded/Arduino 2020. 7. 26.

아두이노 코딩 : 히스테리시스로 아날로그 입력 노이즈 처리

Arduino Uno Schmitt trigger and hysteresis 아두이노로 회로를 꾸미고, 프로그래밍을 할 때, 노이즈 문제는 항상 고려되어야 합니다. 외부 조명 밝기에 따라 내부 조명을 켜고 끄는 프로그래밍을 작성하는 경우, 조명 센서의 값은 항상 노이즈를 포함하고 있기 떄문에 조명을 켜고 끄는 임계점에서는 문제가 발생 할 수 있습니다. 이 때 노이즈를 처리할 수 있는 여러가지 기법들이 있습니다. 본 포스트에서는 아날로그 입력 전압으로 On, Off 제어를 하는 경우 사용 할 수 있는 히스테리시스 적용 방법에 대해 작성하였습니다.슈미트트리거와 히스테리시스우리가 사용하는 모든 신호에는 노이즈가 함께 존재합니다. 아날로그 전압을 1과 0으로 판별하기 위해, 아래와 같이 기준 전압으로 단순하게 ..

Embedded/Arduino 2020. 7. 24.

아두이노 코딩 : 엔터 입력시(문장단위) Serial Echo 프로그램, Putty 로 CR+LF 전송

Arduino Uno Echo Behavior When Entering an Enter Key 아두이노에서 엔터 입력시 Echo 동작을 수행하는 프로그램 예제 입니다. 문장 단위로 메세지를 입력, 또는 특정 문자 입력까지 데이터를 받아 처리하고 싶은 경우 본 포소트의 예제를 응용 할 수 있습니다. 예제1 : Serial Echo 프로그램 시리얼 수신 인터럽트 serialEvent() 함수를 사용하여 수신된 데이터를 바로 송신하는 기본적인 Echo 프로그램입니다.코드123456789101112/* 시리얼 인터럽트 방식 */void setup(){ Serial.begin(9600); Serial.println("Serial Port Connected!");} void loop(){}/* 시리얼 수신 ISR ..

Embedded/Arduino 2020. 7. 23.

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

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.