week6
2023.02.17
17:00-20:00
LCD 제어 코드 및 회로도 정리
7segment 제어 코드 및 회로도 정리
아두이노 5주차 ppt 교재 제작(LCD, 7segment)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2); // lcd(접근주소, lcd 열의 수, lcd 행의 수)
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0); //0행 0열에 커서 set
lcd.print("Hello,world!"); // LCD 모니터에 출력
lcd.setCursor(3,1); //0행 1열에 커서 set
lcd.print("SWeat!"); // LCD 모니터에 출력
}
void loop()
{
}

/*
제목 : 7세그먼트로 숫자 표시하기
내용 : 7세그먼트를 사용하여 0부터 9까지 숫자를 표시해 봅시다.
*/
// 7세그먼트는 총 8개의 LED로 구성이 되어 있습니다.
// 본 예제에서는 캐소드(Common Cathode) 타입을 사용하므로, HIGH(1) 값으로 설정합니다.
// 켜고자 하는 LED의 핀에 HIGH(1) 값을 보내도록 설정합니다.
// 반대로, 공통 애노드(Common Anode) 타입의 7세그먼트을 사용할 경우, LOW(0) 값으로 설정합니다.
// 7세그먼트 각각 LED에 핀을 할당합니다. {A, B, C, D, E, F, G, H}
int segmentLEDs[] = {2, 3, 4, 5, 6, 7, 8, 9};
// 지정된 LED 개수
int segmentLEDsNum = 8;
// 각 숫자에 대한 LED 설정 값을 정의합니다.
// 숫자에 매칭되는 LED의 로직레벨을 LOW(0) 상태로 설정합니다.
int digitForNum[10][8] = {
// {A, B, C, D, E, F, G, H}
{1, 1, 1, 1, 1, 0, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 1, 0, 0}, //2
{1, 1, 1, 1, 0, 1, 0, 0}, //3
{0, 1, 1, 0, 0, 1, 1, 0}, //4
{1, 0, 1, 1, 0, 1, 1, 0}, //5
{1, 0, 1, 1, 1, 1, 1, 0}, //6
{1, 1, 1, 0, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1, 0}, //8
{1, 1, 1, 1, 0, 1, 1, 0} //9
};
// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
// 7세그먼트 각각 LED에 연결된 핀을 OUTPUT으로 설정합니다.
for (int i = 0 ; i < segmentLEDsNum ; i++) {
pinMode(segmentLEDs[i], OUTPUT);
}
}
// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
// 0부터 9까지 숫자를 순서대로 표시합니다.
for (int i = 0 ; i < 10 ; i++) {
// 각 숫자에 대한 각각 LED의 로직레벨을 설정합니다.
for (int j = 0 ; j < segmentLEDsNum ; j++) {
digitalWrite(segmentLEDs[j], digitForNum[i][j]);
}
// 1초 동안 대기합니다.
delay(1000);
}
delay(1000);
}














































LCD I2c의 경우에는 주소를 맞춰주지 않으면 작동을 하지 않기에 주소를 찾는 작업을 해줘야 한다. 주소가 보통은 0X27과 0X3F라고 나와있지만 이번 교재를 만들며 사용했던 LCD는 주소가 0X20이었기에 이를 알아차리는 데 시간이 걸렸고, LCD의 종류 또한 참고자료에 있던 것과 달랐기에 이를 수정하는 데 시간이 걸렸다.
7 segment 파트의 회로를 제작하는 과정에서는 7-segment의 LED가 a, b, c, d, e, f, g 중 어디에 해당하는지 확인해야 한다. 이 부품 역시 참고 자료에 나와있는 7-segment의 LED 배열과 달라서 하나하나 LED의 위치를 확인해야 했기에 시간이 걸렸다.
위의 두 과정을 거치며 아두이노가 제대로 동작하지 않을 때는 부품의 타입과 부품에 따른 기본 설정이 다르게 되어있지는 않은지를 확인해야 한다는 것을 알게되었다.