BASIC4MCU | 질문게시판 | 아두이노 LCD와 7세그먼트 동시 사용
페이지 정보
작성자 페이즐리 작성일2022-06-14 20:24 조회1,753회 댓글4건본문
7세그먼트와 LCD를 같이 사용하면서 빈하트가 하나씩 올라갈 때마다 7세그먼트에서 1부터 9까지가고 0으로 시작하는 코딩을 작성하려고 합니다.
그런데 세그먼트 숫자를 어떻게 함수에 넣어야 동시에 두개가 같이 진행되는지 모르겠습니다.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte Heart[] = {
B00000,
B01010,
B10101,
B10001,
B10001,
B01010,
B00100,
B00000
};
#define A 4
#define B 5
#define C 12
#define D 11
#define E 10
#define F 3
#define G 2
#define DP 13
void setup()
{
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.createChar(0, Heart);
}
void loop()
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Bye everyone!");
for (int i=0; i<10; i++)
{
lcd.setCursor(i,0);
lcd.write(0);
delay(1000);
}
}
void number0() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(DP, HIGH);
}
void number1() {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(DP, HIGH);
}
void number2() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number3() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number4() {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number5() {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number6() {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number7() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(DP, HIGH);
}
void number8() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
void number9() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, HIGH);
}
댓글 4
조회수 1,753master님의 댓글
master 작성일
void loop(){
lcd.clear();
lcd.setCursor(0,1); lcd.print("Bye everyone!");
for (int i=0; i<10; i++){
lcd.setCursor(i,0); lcd.write(0);
여기에서 세그먼트에 i를 표시하세요
delay(1000);
}
}
페이즐리님의 댓글
페이즐리
답변감사합니다!
세그먼트에 i를 표시한다면 어떻게 표시해야하나요? 앞에서 int를 넣어서 함수값으로 만들어야할까요?
페이즐리님의 댓글
페이즐리
number i () 이렇게 표시하면 정상 작동을 안하네요 ㅠㅠ
master님의 댓글
master 작성일
예제소스가 그지 같아서 함수 처리하기에 불편한 겁니다.
switch(i){
case 0: number0(); break;
case 1: number1(); break;
.
.
case 9: number9(); break;
}