부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

8x8 LED Matrix-랜덤 출력하기

2014-08-07 10:35:11

개요

8x8 LED matrix를 이용하여 랜덤하게 각 LED Pixel마다 색을 뿌려주는 소스를 실행해보고 회로를 구성해보자.
8x8 LED matrix는 다양한 색상을 각 픽셀마다 뿌려줌으로 다양한 색상패턴이나 짧은 글귀나 간단한 그림을 표현할 수 있는 매력적인 키트이다.

LED dot matrix는 알다시피 다양한 크기로 소, 대형 전광판에 많이 쓰이고




특정 미술작품이나, 대형 화면에도 쓰이기도 한다.
LED dot matrix는 대부분 컴퓨터 프로그램을 통해 만들어지고 제어하는데 이제는 LED dot matrix 아두이노 키트가 존재하고
다양한 크기로 개발 중이기 때문에 아두이노를 통해 제어하고 꾸미기가 이제는 얼마든지 가능하다.




LED dot matrix의 가장 큰 장점은 화면에 다양한 모양을 사용자의 입맛에 꾸밀 수 있다는 점이 장점이다.
마치 캔버스에 작품을 만드는 것처럼 패턴이나 도형에는 제한이 없기 때문에 무궁무진한 나만의 LED matrix를 만들 수 있다.

 

 

 

 

부품 목록

 

NO 부 품 명 수 량 상 세 정 보
1 아두이노 1  오렌지 보드
2 브레드보드 1  
3 8x8 LED matrix 1  adafruit 구입
4 케이블    

 

 

부품명 아두이노 브레드보드 8x8 LED matrix 케이블
부품사진

 


8x8 LED matrix
adafruit사이트에서 구매가 가능하다. 다양한 종류가 있지만 adafruit에서 구매한 matrix를 기준으로 사용한다.



8x8Matrix는 4개의 핀으로 구성되어 있다. 자세히보면 순서대로 +, -, D, C라고 적혀져 있는데 UNO 기준으로 저 순서대로 5v, GND, Analog4번핀, Analog5번핀에 연결해 주면 된다.

 

 

 

 

 

하드웨어 making

 

전자 회로도


 

 

브레드보드


 

 

 

소프트웨어 coding

/*
www.adafruit.com
*/

#include 
#include 
#include 

Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); 

void setup() {
  matrix.begin(0x70);
}

void loop() {
  uint16_t color = random(4); //0-3까지의 숫자 중 랜덤으로 하나를 색상으로 지정한다.
  int x = random(8); //0부터 7까지의 값 중 하나를 랜덤하게 x값으로 받는다
  int y = random(8); //0부터 7까지의 값 중 하나를 랜덤하게 y값으로 받는다
  matrix.drawPixel(x,y,color); //matrix에 랜덤으로 구한 x값, y값에 랜덤으로 지정된 색을 입힌다. 
  matrix.writeDisplay(); //LED디스플레이에 색을 출력한다.
  delay(2);
}
 


8x8 LED matrix를 사용하기 위해서는 일단 외부라이브러리 2개가 필요한데 
받아야할 라이브러리 2개는 Adafruit-LED-Backpack-Library와 Adafruit-GFX-Library로 링크를 통해 내려받을 수 있다.
문자사이의 -는 _으로 바꾸던가 아니면 빼서 공백을 없애고 라이브러리에 추가하면 된다.

소스에서는 외부라이브러리를 가지고 matrix라는 객체를 생성한다.
그 객체에 4가지의 랜덤한 색깔(예상으로는 빨강, 노랑, 초록, 무색으로 추정된다)을 x좌표 y좌표 또한 0부터 7까지의 숫자를 무작위로 받아서 drawPixel이라는 함수를 통해 특정 좌표에 4가지 색깔 중 하나를 뿌려주게 된다.

외부 라이브러리를 사용하기 때문에 자세한 소스 분석은 라이브러리의 분석이 필요하므로 분석이 필요하지 않은 사용자는 붙여넣기를 통해 사용하면 된다. 
이 밖에도 라이브러리 안에 많은 예제소스가 있기 때문에 더 많은 정보를 원하는 사용자는 예제를 사용하면 된다.

※참고
아두이노 1.0.5버전을 사용하면 컴파일시에 에러가 뜰 수 있는데 그때에는 아두이노 기본 라이브러리인 robot_control이라는 라이브러리를 삭제해주면 에러없이 업로드 할 수 있다.
(robot_control라이브러리와 충돌을 일으키는듯하다)

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

8x8 LED matrix, 아두이노, 오렌지보드

아두이노 2014-11-25 21:25:56

라이브러리 파일에 에러가 있다고 뜨는데요 어떻게해결하면 좋나요 ㅠㅠ

아두이노 2014-11-25 21:26:45

In file included from sketch_nov25a.ino:1: C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:119: error: multiple types in one declaration In file included from sketch_nov25a.ino:4: C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:56: error: redefinition of 'class Adafruit_LEDBackpack' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:56: error: previous definition of 'class Adafruit_LEDBackpack' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:72: error: redefinition of 'class Adafruit_AlphaNum4' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:72: error: previous definition of 'class Adafruit_AlphaNum4' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:84: error: redefinition of 'class Adafruit_24bargraph' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:84: error: previous definition of 'class Adafruit_24bargraph' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:94: error: redefinition of 'class Adafruit_8x16matrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:94: error: previous definition of 'class Adafruit_8x16matrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:103: error: redefinition of 'class Adafruit_8x8matrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:103: error: previous definition of 'class Adafruit_8x8matrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:112: error: redefinition of 'class Adafruit_BicolorMatrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:112: error: previous definition of 'class Adafruit_BicolorMatrix' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:119: error: multiple types in one declaration C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:128: error: redefinition of 'class Adafruit_7segment' C:\Users\ucl\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\libraries\Adafruit_LEDBackpack/Adafruit_LEDBackpack.h:128: error: previous definition of 'class Adafruit_7segment'

수박쨈 2014-11-26 09:27:40

댓글을 보고 아두이노를 초기화한 상태에서 라이브러리를 다시 받아 실행해봤는데도 아무런 문제가 없었습니다. 라이브러리 자체에는 이상이 없는게 맞고 지금 에러를 보면 계속적으로 Adafruit_LEDBackpack에서 계속 redefinition(재정의)에러가 뜨게 되는데 제 생각이 맞다면 사용자분께서 Adafruit_LEDBackpack.h를 두번 include 시킨거 같습니다. 윗부분에서 #include Adafruit_LEDBackpack.h 이 부분을 두번 쓴것이 아닌지 확인 부탁드려요!

아두이노 2014-12-01 17:49:20

바쁘신데 정말 죄송합니다. 제가 이쪽분야에 왕초보라서요..ㅜㅜ답변을 보고 처음부터 다시해야겠다 싶어서요.
컴컴퓨터에있는 모든 adafruit의 파일을 삭제하고 다시 저 헤더파일 zip파일을 다운로드 받아서 아두이노 libraries 폴더에 두 파일을 넣고 폴더명 파일명에 -를 지우고 _로 쓰고 이름을 맞췃습니다. 그러고 예제로 들어가서  adafruit예제를 풀려고실행해고 오류가 나는겁니다. 제가 뭘잘못한건가용 ㅠㅠㅠㅠㅠㅠㅠ  bargraph24:59: error: 'bar' was not declared in this scope 이런식의 오류입니다. 왜그렇쵸 ㅠㅠ 헤더파일이 자동으로 추가된거라 생각하고 별도의 추가는 하지 않앗고 바로 실행햇는데 저렇게 선언되지 않앗다는 식으로 나옵니다 ㅠㅠ 도와주십시용 ㅠㅠ

수박쨈 2014-12-02 10:06:48

제가 설치한대로 설명하자면
저는 위에 링크 걸린 두 개의 압축파일을 받아 폴더 이름을 각각 Adafruit_LED_Backpack와 Adafruit_GFX로 바꿔서 라이브러리 폴더에 넣었습니다. 
컴파일 오류이름을 보니 예제를 bargraph로 실행하신거 같은데 오류는 bar가 제대로 선언되지 않았을때 생기는 오류입니다.
그 말은 라이브러리가 제대로 설치되지 않았다는 얘기인데 다시 한번 라이브러리를 제대로 설치해 보셨으면 합니다.

HANDI 2015-09-19 16:23:48

제가 가지고있는 8x8은 저렇게 안생기고 다리가 16개 있는데 따로 뭘구입해서 아래에 달라줘야 하나요?

092354 2018-05-02 18:04:56

#include 뒤에는 무엇을 넣어야 하나요 ㅠㅠ 제가 초보라서 모릅니다 ㅠㅠ

kocoafab 2019-01-07 14:19:26

@HANDI
16핀 짜리 도트매트릭스는 https://blog.naver.com/dokkosam/221266487722 이 링크를 참고해보세요. 연결이 매우 복잡해서 간단하게 나온 모듈 사용을 권장드립니다.

@092354
#include < Wire.h>
#include < Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"

이 3개 추가해주시면 됩니다.