任何颜色都由三种颜色组成:红色,绿色和蓝色,使用简单的RGB LED即可生成任何颜色。但是RGB LED的局限性在于它内部具有三个独立的LED,并且需要任何微控制器的三个引脚才能操作一个RGB LED。因此,不可能通过一个微控制器连接数百个LED。
为了克服这个问题,Adafruit创建了NeoPixel LED灯带。它仅需三个引脚即可驱动多个RGB NeoPixel LED。两个引脚用于电源和接地,一个引脚用于数据输入(DI)。数据输入引脚用于通过颜色,亮度等来寻址和控制条中的不同LED。但是,它需要一个微控制器来运行NeoPixels。 Arduino在NeoPixel中非常常用,因此今天我们将学习将NeoPixel LED与Arduino接口。您可以在AdaFruit上了解有关NeoPixels的更多信息。
在此项目中,我们正在使用Arduino和TFT LCD触摸屏控制NeoPixel LED。我们在2.4英寸TFT LCD上创建了7个不同颜色的触摸按钮,当您在LCD上点击某种颜色的按钮时,NeoPixel LED灯条将以与该按钮相同的颜色点亮。在这里,我们使用了30个LED的NeoPixel数字RGB LED灯带。
NeoPixel RGB LED可以用任何颜色照明,因此我们可以在LCD上添加更多按钮,以便在点击这些按钮时以更多颜色发光。其他漂亮的效果和图案也可以使用编码添加。您可以使用NEO Pixel LED建立一个完整的Arduino控制的装饰系统,并可以通过附近的LCD控制该系统。
所需组件:
- Arduino Mega或任何其他Arduino模型
- 带SPFD5408控制器的2.4英寸TFT LCD屏蔽
- NeoPixel RGB LED灯条
- 连接线
- USB电缆或12 V 1A适配器
电路连接:
要将NeoPixels Strip连接到Arduino Mega,只需将Arduino 5V引脚连接到NeoPixel的5V引脚,将Mega的GND连接到NeoPixel的GND,然后将NeoPixel DI引脚(数据输入)连接到Arduino Mega的数字引脚36。小心地将TFT LCD触摸屏安装在Arduino上,以使MEGA的GND位于LCD的GND下方,并且Arduino的5V引脚连接到LCD的5V引脚。
将其连接到Arduino时,请注意不要互换NeoPixel LED灯条的GND和5V引脚,否则会损坏NeoPixel LED灯条。还要注意,这里我们使用了Arduino Mega,但您也可以使用任何其他Arduino模型。
与Arduino的NeoPixel RGB LED灯带连接:
Arduino引脚 |
NeoPixel Strip的别针 |
5伏 |
5伏 |
地线 |
地线 |
数字引脚号 36 |
DI(数据输入) |
工作说明:
NeoPixel LED与Arduino的工作非常简单。只需在要点亮NeoPixel LED灯条的LCD上点按任何颜色的触摸按钮。LED将根据该颜色点亮。编写代码的方式使您可以无休止地重复执行此任务,而不必重置Arduino Mega。您可以在本文末尾查看代码和演示视频。
当在LCD上点击任意按钮时,数据将发送到Arduino,然后Arduino进一步将指令发送到NeoPixel Strip相应地点亮。例如,当我们点击LCD上的绿色按钮时,NeoPixel LED灯条会发出绿色,而当我们按下红色按钮时,LED灯条会发出红色。
编程说明:
为了将TFT LCD与Arduino接口,我们使用了一些库。所有的库都放在一个rar文件中,可以从此链接下载。单击“克隆或下载”和“下载ZIP”文件,然后添加到您的Arduino库文件夹。TFT LCD的正常运行需要该库。
#包括
您应该通过使用库中提供的示例代码刻录Arduino来测试TFT LCD,并检查代码是否正常工作。首先检查图形测试,然后进行校准测试,最后进行油漆测试。如果发现所有功能都可以正常工作,则从本教程中给出的代码开始。
同样,为了使NeoPixel RGB LED灯带正常工作,您将需要一个其他的库,可以从这里下载。
#包括
如前所述,MEGA的数字引脚36连接到NeoPixel LED灯带的DI引脚,如下代码所示。同样,代码条中的LED数量为30,如代码所示:
#define PIN 36 #define NUM_LEDS 30
LCD按钮的显示颜色由某些代码表示。您可以根据液晶显示屏更改这些代码。
#定义黑色0x0000#定义黄色0x001F#定义绿色0xF800#定义红色0x07E0#定义青色0x07FF#定义矩阵0xF81F#定义蓝色0xFFE0#定义白色0xFFFF
代码中定义了按钮的一些参数,例如大小和位置:
uint16_t width = 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发出颜色,例如:
EmitCyan(); 无效EmitWhite(); 无效EmitGreen(); EmitYellow(); 无效EmitPink(); 无效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 interval_x = 5………………..
void showCalibration() 函数用于在LCD上绘制按钮。
void showCalibration(){tft.setCursor(40,0); for(uint8_t i = 0; i <8; i ++){button.drawButton(); }}
此外,下面给出了使NeoPixel LED灯带发光所需颜色的完整Arduino代码。代码有点长,但很简单,您可以轻松理解代码。