모든 색상은 빨간색, 녹색 및 파란색의 세 가지 색상으로 구성되며 간단한 RGB LED를 사용하여 모든 색상을 생성 할 수 있습니다. 그러나 RGB LED의 한계는 내부에 3 개의 별도 LED가 있고 하나의 RGB LED를 작동하려면 마이크로 컨트롤러의 3 개의 핀이 필요하다는 것입니다. 따라서 하나의 마이크로 컨트롤러로 수백 개의 LED를 연결할 수 없습니다.
이 문제를 극복하기 위해 Adafruit는 NeoPixel LED Strip 을 만들었습니다. 여러 개의 RGB NeoPixel LED를 구동하는 데 3 개의 핀만 필요합니다. 2 개의 핀은 전원 및 접지 용이고 1 개의 핀은 데이터 입력 (DI) 용입니다. Data IN 핀 은 스트립의 여러 LED를 색상, 밝기 등으로 주소 지정하고 제어하는 데 사용됩니다.하지만 NeoPixel을 실행하려면 마이크로 컨트롤러가 필요합니다. Arduino는 NeoPixel과 함께 매우 일반적으로 사용되므로 오늘은 NeoPixel LED를 Arduino와 인터페이스 하는 방법을 배웁니다. AdaFruit에서 NeoPixels에 대해 자세히 알아볼 수 있습니다.
이 프로젝트에서는 Arduino 및 TFT LCD 터치 스크린을 사용하여 NeoPixel LED를 제어 합니다. 2.4 인치 TFT LCD에 서로 다른 색상의 7 개의 터치 버튼을 만들었으며 LCD에서 특정 색상의 버튼을 누르면 NeoPixel LED 스트립이 해당 버튼과 같은 색상으로 켜집니다. 여기 에서는 30 개의 LED로 구성된 NeoPixel Digital RGB LED 스트립을 사용 했습니다.
NeoPixel RGB LED는 모든 색상으로 조명 할 수 있으므로 LCD에 더 많은 버튼을 추가하여 해당 버튼을 탭할 때 더 많은 색상으로 LED를 비출 수 있습니다. 코딩을 사용하여 다른 아름다운 효과와 패턴을 추가 할 수도 있습니다. NEO Pixel LED를 사용하여 전체 Arduino 제어 장식 시스템을 구축 할 수 있으며 가까이에있는 LCD로이 시스템을 제어 할 수 있습니다.
필수 구성 요소:
- Arduino Mega 또는 기타 Arduino 모델
- 2.4 인치 TFT LCD 실드 (SPFD5408 컨트롤러 포함)
- NeoPixel RGB LED 스트립
- 전선 연결
- USB 케이블 또는 12V 1A 어댑터
회로 연결:
하기 의 Arduino에 NeoPixels 스트립 연결 메가 단순히의 Arduino 5V의 NeoPixel의 5V 핀 핀 NeoPixel의 GND 메가의 GND 다음 연결 접속하지 (데이터) NeoPixel DI 핀 디지털 핀에의 Arduino 메가 아니오 36. MEGA의 GND가 LCD의 GND 아래에 있고 Arduino의 5V 핀이 LCD의 5V 핀에 연결되도록 Arduino 위에 TFT LCD Touch Shield를 조심스럽게 장착하십시오.
NeoPixel LED 스트립을 Arduino에 연결하는 동안 GND와 5V 핀을 교환하지 않도록주의하세요. 그렇지 않으면 NeoPixel LED 스트립이 손상됩니다. 또한 여기에서는 Arduino Mega를 사용했지만 다른 Arduino 모델을 사용할 수 있습니다.
Arduino에 NeoPixel RGB LED 스트립에 연결:
Arduino 핀 |
NeoPixel Strip의 핀 |
5v |
5v |
GND |
GND |
디지털 핀 번호 36 |
DI (데이터 입력) |
작동 설명:
의 근무 아두 이노와 NeoPixel LED 것은 매우 쉽습니다. NeoPixel LED 스트립을 비추고 싶은 LCD의 색상 터치 버튼을 누르기 만하면됩니다. 해당 색상에 따라 LED가 켜집니다. Arduino Mega를 재설정하지 않고도이 작업을 끝없이 반복 할 수 있도록 코드가 작성되었습니다. 이 기사의 끝에서 코드 및 데모 비디오 를 확인할 수 있습니다.
LCD에서 아무 버튼이나 누르면 데이터가 Arduino로 전송되고 Arduino는 이에 따라 NeoPixel Strip에 명령을 보냅니다. 예를 들어 NeoPixel LED 스트립은 LCD의 녹색 버튼을 누르면 녹색으로 빛나고 LED 스트립은 빨간색 버튼을 누르면 빨간색으로 빛납니다.
프로그래밍 설명:
Arduino와 TFT LCD를 인터페이스하기 위해 일부 라이브러리를 사용했습니다. 모든 라이브러리는 하나의 rar 파일로 제공되며이 링크에서 다운로드 할 수 있습니다. '복제 또는 다운로드'및 'ZIP 다운로드'파일을 클릭하고 Arduino 라이브러리 폴더에 추가합니다. 이 라이브러리는 TFT LCD가 제대로 작동하는 데 필요합니다.
#포함
당신은해야 당신의 TFT LCD를 테스트 라이브러리에 주어진 예제 코드로 아두 이노를 태워과 코드가 제대로 작동하는지 확인합니다. 먼저 그래픽 테스트를 확인한 다음 테스트를 보정하고 마지막으로 테스트를 페인트합니다. 모든 기능이 모두 잘 작동하는 경우이 튜토리얼에 제공된 코드로 시작하십시오.
또한 NeoPixel RGB LED 스트립이 제대로 작동하려면 여기에서 다운로드 할 수있는 라이브러리가 하나 더 필요합니다.
#포함
앞서 설명한 것처럼 MEGA의 Digital Pin 36은 아래 코드와 같이 NeoPixel LED Strip의 DI 핀에 연결됩니다. 또한 Strip의 LED 수는 30 개이므로 코드에 기록되어 있습니다.
#define PIN 36 #define NUM_LEDS 30
LCD 버튼의 표시 색상은 일부 코드로 표시됩니다. LCD에 따라 이러한 코드를 변경할 수 있습니다.
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define 마젠타 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
크기 및 위치와 같은 버튼의 일부 매개 변수는 코드에 정의되어 있습니다.
uint16_t 너비 = 0; uint16_t 높이 = 0; uint16_t x = 40; uint16_t y = 높이-20; uint16_t w = 75; uint16_t h = 20;
h 매개 변수는 LCD의 버튼 크기를 조정하는 데 사용됩니다. 40으로 만들면 버튼의 크기가 두 배가됩니다. y 매개 변수는 LCD의 y 좌표입니다.
터치 버튼은 코드에 표시된대로 숫자로 표시됩니다.
#define BUTTONS 9 #define BUTTON_Red 0 #define BUTTON_DarkRed 1 #define BUTTON_RED 2 #define BUTTON_DarkGreen 3 #define BUTTON_DeepRed 4 #define BUTTON_Blue 5 #define BUTTON_LightBlue 6 #define BUTTON_LightBlue1 7
다음과 같은 일부 기능은 NeoPixel에서 색상을 방출하는 데 사용됩니다.
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
주어진 색상에 대해 입력 할 디지털 RGB 값 을 찾으 려면 이 링크를 따르십시오. NeoPixel 스트립에 빛을 발할 색상을 입력하고 해당 색상의 RGB 값을 찾은 다음 위의 기능을 입력하십시오.
void initializeButtons () 함수는 버튼에 텍스트와 색상을 제공하고 LCD의 필요한 위치에 배치하는 데 사용됩니다.
void initializeButtons () {uint16_t x = 40; uint16_t y = 높이-20; uint16_t w = 75; uint16_t h = 40; uint8_t 간격 _x = 5………………..
void showCalibration () 함수는 LCD에 버튼을 그리는 데 사용됩니다.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
또한 원하는 색상으로 NeoPixel LED 스트립을 비추는 전체 Arduino 코드 가 아래에 나와 있습니다. 코드는 약간 길지만 간단하므로 코드를 쉽게 이해할 수 있습니다.