본문내용
1. 멜로디 알람 시계
1.1. 구현 방법
브레드보드에 스위치를 연결한다. 스위치의 한쪽 다리는 저항과 점프선을 연결하고 이때 저항은 최소 180옴에서 500옴이 적당하다. 저항은 +에 연결하고 반대쪽 다리에 연결한 점프선은 -에 연결한다. 저항과 같은 다리에 점프선을 하나 더 연결하고 이 점프선들은 아두이노 우노의 핀에 연결한다.
브레드보드에 LED를 스위치와 관련된 것과 겹치지 않도록 연결한다. LED의 +극은 점프선을 연결하고 -극은 저항을 연결한다. 점프선은 아두이노 우노 핀에 연결한다. +극에 연결한 점프선들은 -극에 연결한다.
브레드보드에 부저를 연결한다. 부저의 -극은 점프선을 이용해 브레드보드에 있는 -극에 연결한다. 부저의 +극은 아두이노 우노의 핀에 연결한다.
시간은 swRTC 라이브러리를 이용해 설정하고 LCD는 LiquidCrystal_I2C 라이브러리를 이용해 제어하기 쉽게 설계한다.
1.2. 회로도
회로도는 멜로디 알람 시계의 전자 회로 구성을 나타낸다. 브레드보드에 스위치, LED, 부저 등의 전자 부품이 연결되어 있으며, 각 부품은 아두이노 우노의 핀에 연결된다.
스위치의 한쪽 다리는 저항(180옴에서 500옴 사이)과 점프선을 거쳐 +극에 연결되고, 다른 쪽 다리는 -극에 연결된다. 이렇게 구성하면 스위치를 누를 때 전류가 흐를 수 있다. LED의 +극은 점프선을, -극은 저항을 거쳐 연결된다. 부저의 +극은 아두이노 핀에, -극은 -극에 연결된다.
이처럼 회로도는 각 전자 부품들의 연결 관계를 나타내며, 멜로디 알람 시계가 정상적으로 작동할 수 있도록 하는 회로 구성을 보여준다. 이를 통해 회로를 실제로 구현할 수 있다.
1.3. 소스 코드 해설
LCD를 쉽게 제어하기 위해 LiquidCrystal_I2C 라이브러리를 추가하였다. 0x27 I2C 주소를 가진 16x2 LCD 객체를 생성하였다.
시간을 수동으로 설정해주고, 부저는 10번 핀, 리셋 스위치는 13번 핀, 음계 LED와 스위치 핀 번호를 설정하였다.
'도~솔' 함수가 호출되면 해당 LED에 불이 들어오고 부저가 울리도록 구현하였다.
AM과 PM을 구분하는 함수와 10보다 작은 수를 출력할 때 앞에 0을 붙이는 함수를 구현하였다.
유효한 알람 시간인지 체크하는 함수와 알람이 울릴 시간인지 체크하는 함수를 구현하였다. 만약 알람 시간이 되면 랜덤으로 3개의 음계가 울리게 하였다.
I2C LCD를 초기화하...