산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

블루투스 8x8 LED 매트릭스 스크롤링 텍스트 - 아두이노 프로젝트

부품 및 소모품

부품명수량
아두이노 나노 R31
HC-05 블루투스 모듈1
8x8 LED 매트릭스 모듈 (MAX7219 내장)7
6.8 kΩ 저항1
2.2 kΩ 저항2

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

8x8 매트릭스에 스크롤링 텍스트를 구현하려 여러 번 시도한 끝에 Embedded Lab의 가장 완전한 가이드를 발견했습니다: Portable Bluetooth Enabled Scrolling LED Matrix Display

장치 구성: 아두이노 나노, 스마트폰에서 데이터 수신용 블루투스 모듈, MAX7219로 구동되는 8x8 LED 매트릭스 여러 개. 원작과 달리 기성 8x8 매트릭스 모듈(MAX7219 내장)을 사용해 저렴하게 구현했습니다. 당시 7개 모듈만 있어 코드를 약간 수정했습니다.

안드로이드 앱으로 스크롤 속도, LED 밝기 제어, 일시정지, 텍스트 지우기, 미리 정의된 텍스트 버튼 등 조작 가능. 완성 후 PVC 재질 박스에 블랙 월페이퍼로 마감해 넣었습니다.

필요 라이브러리

코드

메인 스케치 (아두이노)
/* 아두이노가 인식하는 명령어:
1. 표시할 문자열은 괄호로 감싸서 전송. 예: (Hello! How are you?) → 우측에서 좌측으로 스크롤 표시
2. 밝기 조절: /+ (증가), /- (감소) - 16단계
3. 스크롤 속도: /> (느리게), /< (빠르게)
4. /p: 스크롤 일시정지/재개 토글
5. /e: 버퍼 지우기 및 화면 끄기

연결:
Easy Matrix → 아두이노
VCC → +5V
DIN → MOSI (핀 11)
LOAD → pinCS (코드에서 정의)
CLK → SCK (핀 13)
GND → GND

UART 통신: 9600 보드레이트
작성자: Rajendra Bhatt (admin@embedded-lab.com)
*/

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

int pinCS = 10;
int numberOfHorizontalDisplays = 7;
int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

int scrollspeed = 100;
int spacer = 1;
int width = 5 + spacer;
boolean inChar = false, NewData = false, pause = false;
boolean dataAvailable = false;
char inputString[512];
int count = 0, BTvalue = 5;

void setup() {
  matrix.setIntensity(1);
  // 디스플레이 위치 설정 (7개 모듈)
  for (int i = 0; i < 7; i++) matrix.setPosition(i, i, 0);
  matrix.fillScreen(0);
  matrix.write();
  Serial.begin(9600);
  pinMode(2, INPUT);
  digitalWrite(2, LOW);
  attachInterrupt(0, serialInterrupt, CHANGE);
}

void loop() {
  if (dataAvailable) display_data();
}

void display_data() {
  for (int i = 0; i < width * count + matrix.width() - 1 - spacer; i++) {
    matrix.fillScreen(0);
    int letter = i / width;
    int x = (matrix.width() - 1) - i % width;
    int y = (matrix.height() - 8) / 2;
    while (x + width - spacer >= 0 && letter >= 0) {
      if (letter < count) matrix.drawChar(x, y, inputString[letter], HIGH, LOW, 1);
      letter--;
      x -= width;
    }
    matrix.write();
    if (!dataAvailable) { i = width * count + matrix.width() - 1 - spacer; matrix.fillScreen(LOW); matrix.write(); }
    if (NewData) { i = 0; matrix.fillScreen(LOW); matrix.write(); NewData = false; }
    while (pause) delay(0);
    delay(scrollspeed);
  }
}

volatile boolean inService = false;
void serialInterrupt() {
  if (inService) return;
  inService = true;
  interrupts();
  while (!Serial.available());
  while (Serial.available()) {
    char ch = Serial.read();
    if (ch == '(') {
      count = 0; inChar = true;
      while (inChar) {
        if (Serial.available()) {
          ch = Serial.read();
          if (ch == ')') { inChar = false; dataAvailable = true; }
          else { inputString[count] = ch; count++; }
          if (count > 0) NewData = true;
        }
      }
    }
    if (ch == '/') {
      inChar = true;
      while (inChar) {
        if (Serial.available()) {
          ch = Serial.read();
          if (ch == '+') { if (BTvalue < 15) { BTvalue++; matrix.setIntensity(BTvalue); } break; }
          if (ch == '-') { if (BTvalue > 0) { BTvalue--; matrix.setIntensity(BTvalue); } break; }
          if (ch == '>') { if (scrollspeed < 200) scrollspeed += 20; break; }
          if (ch == '<') { if (scrollspeed > 10) scrollspeed -= 10; break; }
          if (ch == 'e') { dataAvailable = false; break; }
          if (ch == 'p') { pause = !pause; break; }
          else break;
        }
      }
    }
  }
  inService = false;
}

회로도

회로도 이미지는 원본 프로젝트 페이지에서 확인 가능.

제조공정

  1. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  2. 아두이노 나노와 MAX7219로 만드는 24x16 LED 퐁 게임 콘솔
  3. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  4. 블루투스 텍스트 텔레포터: 아두이노 + 안드로이드 프로젝트
  5. 구글 어시스턴트와 블루투스로 음성 제어하는 홈 IoT: 아두이노 우노와 4채널 릴레이
  6. 아두이노 우노로 8×8 LED 매트릭스 마스터하기: 단계별 가이드
  7. 아두이노 우노와 이더넷 실드로 정확한 태양광 복사량 측정하기
  8. 아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드
  9. 아두이노 메가용 GSM SIM900 실드로 SMS 송수신 쉽게 구현하기
  10. 아두이노 프로 마이크로로 구현한 HID UPS: 더미 전원장치를 USB 호환 스마트 UPS로 업그레이드