我需要带写一个用温度控制ws2812灯带颜色的程序。
主要功能:
1.根据不同的现场温度显示渐变(比如从末端绿到顶端红)。同时可以讲温度数值上传至云端。
程序效果:
比如60个灯珠,第一个开始根据温度慢慢点亮灯珠数量,类似温度计。
程序我写了一部分,上传出现问题,是我的程序有问题还是其他问题
程序部分:
#include <FastLED.h>
#include "DHT.h"
#define DHTPIN 4 //温湿度传感器接4号引脚
#define DHTTYPE DHT11 //DHT11
DHT dht(DHTPIN,DHTTYPE);
#define NUM_LEDS 30 //lED灯珠数量
#define LED_DT 12 //Arduino输出控制信号引脚
#define LED_TYPE WS2812 //LED灯带型号
#define COLOR_ORDER GRB //RGB灯珠中红色、绿色、蓝色LED的排列序号
#define light 20 //设置亮度步长
uint8_t colorR,colorG,clorB,colorW; //RGB,亮度
uint8_t openState =1; //等效模式,默认关灯
CRGB leds[NUM_LEDS]; //建立光带leds
//RGB方法定义颜色
CRGB myRGBColor(255,255,255); //myRGBcolor (rValue,gValue,bValue)
//rValue:红色数值0-255
//gValue:绿色数值0-255
//bValue:蓝色数值0-255
//HSV方法定义颜色
CHSV myHSVcolor(80,255,200); //HSV方法定义颜色 myHSVcolor(色调,饱和度,明亮度)
//自定义色盘
CRGBPalette16 myColorPalette = CRGBPalette16(
CRGB::Green, CRGB::Green,CRGB::Black,CRGB::Black,
//0-15 GREEN, 16-31GREEN, 32-47BLACK, 48-63BLAK,
CRGB::Purple, CRGB::Purple,CRGB::Black,CRGB::Black,
//64-79 Purple, 80-95Purple, 96-111BLACK,112-127BLAK,
CRGB::Green, CRGB::Green,CRGB::Black,CRGB::Black,
//128-143 GREEN,144-159GREEN,160-175BLACK,176-191BLAK,
CRGB::Purple, CRGB::Purple,CRGB::Black,CRGB::Black);
//192-207 GREEN,208-223GREEN,224-239BLACK,240-255BLAK,
CHSVPalette16 myHSVColorPalette =CHSVPalette16(
CHSV(0,255,200),CHSV(15,255,200),CHSV(31,255,200),CHSV(47,255,200),
CHSV(0,255,0), CHSV(15,255,0), CHSV(31,255,0), CHSV(47,255,0),
CHSV(0,255,200),CHSV(15,255,200),CHSV(31,255,200),CHSV(47,255,200),
CHSV(0,0,200), CHSV(15,0,200), CHSV(31,0,200), CHSV(47,0,200));
const TProgmemPalette16 myProgmemPalette PROGMEM ={
CRGB::Red,CRGB::Gray,CRGB::Blue,CRGB::Black,
CRGB::Red,CRGB::Gray,CRGB::Blue,CRGB::Black,
CRGB::Red,CRGB::Red,CRGB::Gray,CRGB::Gray,
CRGB::Blue,CRGB::Blue,CRGB::Black,CRGB::Black};
void setup() {
Serial.begin (9600);
LEDS.addLeds<LED_TYPE,LED_DT,COLOR_ORDER>(leds,NUM_LEDS); //初始化光带
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
delay(20);
uint8_t i;
float Hum = dht.readHumidity();//湿度
float Tem = dht.readTemperature();//温度
i = Tem/3;
//uint32_t color = strip.Color(RGB[ i][0], RGB[ i][1], RGB[ i][2]);
//for (uint16_t j = 0; j < MAX_LED; j++)
//{
//strip.setPixelColor(j, color);
//}
//strip.show();
}
错误信息:
Arduino:1.8.13 (Windows 10), 开发板:"Arduino Uno"
项目使用了 5198 字节,占用了 (16%) 程序存储空间。最大为 32256 字节。
全局变量使用了471字节,(22%)的动态内存,余留1577字节局部变量。最大为2048字节。
上传项目出错
在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
那位大侠帮忙看下程序是否有错误,方便的话帮我指正优化一下,感谢无私您的无私奉献!
|