아래 코드는 ‘ㄱ’, ‘ㄴ’, ‘ㄷ’이 빈칸으로 설정되어 있는 코드입니다. 여러분들이 아래 링크에서 변환해서 직접 코드를 완성해보기 바랍니다.
https://www.riyas.org/2013/12/online-led-matrix-font-generator-with.html

주의할 점은 도트매트릭스의 정방향과 실제 사용하는 방향이 다르니 그 점을 고려하여 패턴을 만들어야합니다.

#include "LedControl.h" LedControl lc = LedControl(12,11,10,3); //DIN을 12번핀, CLK를 11번핀, int button =13; //버튼을 13번핀에 연결 byte font_char[][8]= { { B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 }, // ㄱ { B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 }, // ㄴ { B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 }, // ㄷ { B00000000, B01111010, B01001010, B01001010, B01001010, B01001010, B01001110, B00000000 }, // ㄹ { B00000000, B01111110, B01000010, B01000010, B01000010, B01000010, B01111110, B00000000 }, // ㅁ { B00000000, B01111110, B01001000, B01001000, B01001000, B01001000, B01111110, B00000000 }, // ㅂ { B00000000, B01000000, B00100000, B00010000, B00011110, B00100000, B01000000, B00000000 }, // ㅅ { B00000000, B00111100, B01000010, B01000010, B01000010, B01000010, B00111100, B00000000 }, // ㅇ { B00000000, B01000010, B00100010, B00010010, B00011010, B00100110, B01000010, B00000000 }, // ㅈ { B00000000, B01000100, B00100100, B00010110, B00011110, B00100100, B01000100, B00000000 }, // ㅊ { B00000000, B00010010, B00010010, B00010010, B00010010, B00010010, B01111110, B00000000 }, // ㅋ { B00000000, B01111110, B01001010, B01001010, B01001010, B01001010, B01001010, B00000000 }, // ㅌ { B00000000, B01000010, B01111110, B01000010, B01000010, B01111110, B01000010, B00000000 }, // ㅍ { B00000000, B00110100, B01001100, B01001110, B01001110, B01001100, B00110100, B00000000 }, // ㅎ { B00000000, B00000000, B10010010, B10010010, B10010010, B01101100, B00000000, B00000000 }, // 1 { B00000000, B10000100, B11000010, B10100010, B10010010, B10001100, B00000000, B00000000 }, // 2 { B00000000, B10000100, B10000010, B11111110, B10000000, B10000000, B00000000, B00000000 }, // 3 }; void setup() { for(int num = 0; num < 3; num++){ lc.shutdown(num,false); //num번 장치의 대기모드를 해제, 초기화 lc.setIntensity(num,1); //num번 장치의 밝기조절(0~15) lc.clearDisplay(num); //num번 장치의 LED를 다 끄기 } randomSeed(analogRead(0)); pinMode(button,INPUT); //버튼 } void display_char(int num, int col){ //num번 장치에 col번째 행 글자 모 for (int i = 0; i < 8; i++) { lc.setRow(num, i, font_char[col][i]); //num번째 장치의 i번째 줄 } } void loop() { if (digitalRead(button) == HIGH){ //버튼이 눌러지면 lc.clearDisplay(0); //0번 장치의 LED 끄기 lc.clearDisplay(1); //1번 장치의 LED 끄기 lc.clearDisplay(2); //2번 장치의 LED 끄기 display_char(1,14); //1번 모듈에 '3'을 출력 delay(500); display_char(1,15); //1번 모듈에 '2'을 출력 delay(500); display_char(1,16); //1번 모듈에 '1'을 출력 delay(500); int rand=random(14); //random(max), 0부터 (max-1) 사이의 난수 int rand2=random(14); int rand3=random(14); if(rand%2==0) { //변수 rand가 짝수이면 자음 3개 게임 display_char(0,rand); //0번 모듈에 rand번 char를 출력 display_char(1,rand2); //1번 모듈에 rand2번 char를 출력 display_char(2,rand3); //2번 모듈에 rand3번 char를 출력 // delay(10000); } else { //변수 rand가 홀수이면 자음 2개 게임 lc.clearDisplay(0); //0번 장치의 LED 끄기 lc.clearDisplay(1); //1번 장치의 LED 끄기 lc.clearDisplay(2); //2번 장치의 LED 끄기 display_char(0,rand); //0번 모듈에 0번 char를 출력 display_char(1,rand2); //1번 모듈에 0번 char를 출력 } } }
전체코드 보기
전체 코드
#include "LedControl.h" LedControl lc = LedControl(12,11,10,3); //DIN을 12번핀, CLK를 11번핀, int button =13; //버튼을 13번핀에 연결 byte font_char[][8]= { { B00000000, B00000010, B00000010, B00000010, B00000010, B00000010, B01111110, B00000000 }, { B00000000, B01111110, B01000000, B01000000, B01000000, B01000000, B01000000, B00000000 }, { B00000000, B01111110, B01000010, B01000010, B01000010, B01000010, B01000010, B00000000 }, { B00000000, B01111010, B01001010, B01001010, B01001010, B01001010, B01001110, B00000000 }, { B00000000, B01111110, B01000010, B01000010, B01000010, B01000010, B01111110, B00000000 }, { B00000000, B01111110, B01001000, B01001000, B01001000, B01001000, B01111110, B00000000 }, { B00000000, B01000000, B00100000, B00010000, B00011110, B00100000, B01000000, B00000000 }, { B00000000, B00111100, B01000010, B01000010, B01000010, B01000010, B00111100, B00000000 }, { B00000000, B01000010, B00100010, B00010010, B00011010, B00100110, B01000010, B00000000 }, { B00000000, B01000100, B00100100, B00010110, B00011110, B00100100, B01000100, B00000000 }, { B00000000, B00010010, B00010010, B00010010, B00010010, B00010010, B01111110, B00000000 }, { B00000000, B01111110, B01001010, B01001010, B01001010, B01001010, B01001010, B00000000 }, { B00000000, B01000010, B01111110, B01000010, B01000010, B01111110, B01000010, B00000000 }, { B00000000, B00110100, B01001100, B01001110, B01001110, B01001100, B00110100, B00000000 }, { B00000000, B00000000, B10010010, B10010010, B10010010, B01101100, B00000000, B00000000 }, { B00000000, B10000100, B11000010, B10100010, B10010010, B10001100, B00000000, B00000000 }, { B00000000, B10000100, B10000010, B11111110, B10000000, B10000000, B00000000, B00000000 }, }; void setup() { for(int num = 0; num < 3; num++){ lc.shutdown(num,false); //num번 장치의 대기모드를 해제, 초기화 lc.setIntensity(num,1); //num번 장치의 밝기조절(0~15) lc.clearDisplay(num); //num번 장치의 LED를 다 끄기 } randomSeed(analogRead(0)); pinMode(button,INPUT); //버튼 } void display_char(int num, int col){ //num번 장치에 col번째 행 글자 모 for (int i = 0; i < 8; i++) { lc.setRow(num, i, font_char[col][i]); //num번째 장치의 i번째 줄 } } void loop() { if (digitalRead(button) == HIGH){ //버튼이 눌러지면 lc.clearDisplay(0); //0번 장치의 LED 끄기 lc.clearDisplay(1); //1번 장치의 LED 끄기 lc.clearDisplay(2); //2번 장치의 LED 끄기 display_char(1,14); //1번 모듈에 '3'을 출력 delay(500); display_char(1,15); //1번 모듈에 '2'을 출력 delay(500); display_char(1,16); //1번 모듈에 '1'을 출력 delay(500); int rand=random(14); //random(max), 0부터 (max-1) 사이의 난수 int rand2=random(14); int rand3=random(14); if(rand%2==0) { //변수 rand가 짝수이면 자음 3개 게임 display_char(0,rand); //0번 모듈에 rand번 char를 출력 display_char(1,rand2); //1번 모듈에 rand2번 char를 출력 display_char(2,rand3); //2번 모듈에 rand3번 char를 출력 // delay(10000); } else { //변수 rand가 홀수이면 자음 2개 게임 lc.clearDisplay(0); //0번 장치의 LED 끄기 lc.clearDisplay(1); //1번 장치의 LED 끄기 lc.clearDisplay(2); //2번 장치의 LED 끄기 display_char(0,rand); //0번 모듈에 0번 char를 출력 display_char(1,rand2); //1번 모듈에 0번 char를 출력 } } }
답글 남기기