找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1774|回复: 8
收起左侧

arduino uno+dht11+ws2812程序调试问题请教

[复制链接]
ID:1006671 发表于 2022-2-25 15:33 | 显示全部楼层 |阅读模式
我需要带写一个用温度控制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字节。

上传项目出错



在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。

那位大侠帮忙看下程序是否有错误,方便的话帮我指正优化一下,感谢无私您的无私奉献!


回复

使用道具 举报

ID:277550 发表于 2022-2-25 17:10 | 显示全部楼层
已经编译完成了,串口是否正确呢

按说明,看看具体的问题

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
回复

使用道具 举报

ID:88256 发表于 2022-2-25 18:38 | 显示全部楼层
编译没有问题,上传出错就说明不是程序引起的
回复

使用道具 举报

ID:290373 发表于 2022-2-25 18:39 | 显示全部楼层
楼上说的对,开启“编译过程中显示详细输出”选项来定位错误。
几种可能的原因:串口配置有问题,板子配置有问题,芯片掉bootloader
回复

使用道具 举报

ID:123289 发表于 2022-2-26 10:39 | 显示全部楼层
1、现画出真值表,建议用EXCEL列个表,清清楚楚表达出条件与目的。
2、画出流程图(逻辑图)
3、在纸上,用大脑现走通流程图
4、再依流程图、真值表写程序。
这是标准方案,如果不会就学会它。
当然将以上1234混在脑子里,一锅烩也可以。不过,习惯不好,更复杂时一锅烩得了吗?未会再利用时能记得住、找得着吗?
回复

使用道具 举报

ID:239041 发表于 2022-4-1 01:20 | 显示全部楼层
arduino上传的时候可能会出错,注意关闭多余的串口监视器,不要占用端口。
注意有些引脚连接器件后会出现上传出错问题,拔掉再上传就好了。

给你个fastled例程  白黄绿来回闪
#include "FastLED.h"
#define NUM_LEDS 8
int lednum = 8;
CRGB leds[NUM_LEDS];
void setup() { FastLED.addLeds<NEOPIXEL, D6>(leds, NUM_LEDS); }
void loop() {
        delay(1000);
        for(int i=0;i<lednum;i++){
          leds[i] = CRGB::White; FastLED.show();
          }
      
        delay(5000);
        for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Black; FastLED.show();
          }
        delay(100);
         for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Yellow; FastLED.show();
          }
        
        delay(5000);
         for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Green; FastLED.show();
          }
      
        delay(5000);
        
      
}
回复

使用道具 举报

ID:239041 发表于 2022-4-1 01:20 | 显示全部楼层
arduino上传的时候可能会出错,注意关闭多余的串口监视器,不要占用端口。
注意有些引脚连接器件后会出现上传出错问题,拔掉再上传就好了。

给你个fastled例程  白黄绿来回闪
#include "FastLED.h"
#define NUM_LEDS 8
int lednum = 8;
CRGB leds[NUM_LEDS];
void setup() { FastLED.addLeds<NEOPIXEL, D6>(leds, NUM_LEDS); }
void loop() {
        delay(1000);
        for(int i=0;i<lednum;i++){
          leds[i] = CRGB::White; FastLED.show();
          }
      
        delay(5000);
        for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Black; FastLED.show();
          }
        delay(100);
         for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Yellow; FastLED.show();
          }
        
        delay(5000);
         for(int i=0;i<lednum;i++){
          leds[i] = CRGB::Green; FastLED.show();
          }
      
        delay(5000);
        
      
}
回复

使用道具 举报

ID:1014831 发表于 2022-4-1 12:01 | 显示全部楼层
请检查板子和电脑之间的连接
回复

使用道具 举报

ID:1006671 发表于 2022-4-22 10:05 | 显示全部楼层
#include <Adafruit_NeoPixel.h>  
#include "DHT.h"  

#define WS2811_PIN 5  
#define DHTPIN 4   
#define MAX_LED 30  
#define DHTTYPE DHT11   // DHT 11  
DHT dht(DHTPIN, DHTTYPE);  
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, WS2811_PIN, NEO_RGB + NEO_KHZ800 );  
uint8 RGB[][3] = {  

  { 0xFF, 0x00, 0x00 },  

  { 0x00, 0xFF, 0xFF },  

  { 0x00, 0x00, 0xFF },  

  { 0x00, 0x00, 0xA0 },  

  { 0xFF, 0x00, 0x80 },  

  { 0x80, 0x00, 0x80 },  

  { 0xFF, 0xFF, 0x00 },  

  { 0x00, 0xFF, 0x00 },  

  { 0xFF, 0x00, 0xFF },  

  { 0xFF, 0xFF, 0xFF },  

  { 0xC0, 0xC0, 0xC0 },  

  { 0x00, 0x00, 0x00 },  

  { 0xFF, 0x80, 0x40 },  

  { 0x80, 0x40, 0x00 },  

  { 0x80, 0x00, 0x00 },  

  { 0x80, 0x80, 0x00 },  

  { 0x40, 0x80, 0x80 }  

};  

void setup() {  

  Serial.begin (9600);  
  strip.begin();  
  // 初始化时关闭所有LED  
  strip.show();  
  Serial.println(F("DHTxx test!"));  

  dht.begin();  
}  

void loop() {  
  delay(500);  
  uint8 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();  
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表