標(biāo)題: arduino uno+dht11+ws2812程序調(diào)試問題請(qǐng)教 [打印本頁(yè)]

作者: 青山大叔    時(shí)間: 2022-2-25 15:33
標(biāo)題: arduino uno+dht11+ws2812程序調(diào)試問題請(qǐng)教
我需要帶寫一個(gè)用溫度控制ws2812燈帶顏色的程序。
主要功能:
1.根據(jù)不同的現(xiàn)場(chǎng)溫度顯示漸變(比如從末端綠到頂端紅)。同時(shí)可以講溫度數(shù)值上傳至云端。
程序效果:
比如60個(gè)燈珠,第一個(gè)開始根據(jù)溫度慢慢點(diǎn)亮燈珠數(shù)量,類似溫度計(jì)。

程序我寫了一部分,上傳出現(xiàn)問題,是我的程序有問題還是其他問題
程序部分:
#include <FastLED.h>
#include "DHT.h"  


#define DHTPIN 4  //溫濕度傳感器接4號(hào)引腳
#define DHTTYPE DHT11  //DHT11
DHT dht(DHTPIN,DHTTYPE);
#define NUM_LEDS 30  //lED燈珠數(shù)量
#define LED_DT 12  //Arduino輸出控制信號(hào)引腳
#define LED_TYPE WS2812  //LED燈帶型號(hào)
#define COLOR_ORDER GRB  //RGB燈珠中紅色、綠色、藍(lán)色LED的排列序號(hào)
#define light 20  //設(shè)置亮度步長(zhǎng)


uint8_t colorR,colorG,clorB,colorW;  //RGB,亮度
uint8_t openState =1;  //等效模式,默認(rèn)關(guān)燈

CRGB leds[NUM_LEDS];  //建立光帶leds

//RGB方法定義顏色
CRGB myRGBColor(255,255,255);  //myRGBcolor (rValue,gValue,bValue)
                                //rValue:紅色數(shù)值0-255
                                //gValue:綠色數(shù)值0-255
                                //bValue:藍(lán)色數(shù)值0-255
//HSV方法定義顏色
CHSV myHSVcolor(80,255,200);  //HSV方法定義顏色  myHSVcolor(色調(diào),飽和度,明亮度)


//自定義色盤
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();  
}

錯(cuò)誤信息:

Arduino:1.8.13 (Windows 10), 開發(fā)板:"Arduino Uno"

項(xiàng)目使用了 5198 字節(jié),占用了 (16%) 程序存儲(chǔ)空間。最大為 32256 字節(jié)。

全局變量使用了471字節(jié),(22%)的動(dòng)態(tài)內(nèi)存,余留1577字節(jié)局部變量。最大為2048字節(jié)。

上傳項(xiàng)目出錯(cuò)



在文件 -> 首選項(xiàng)開啟
“編譯過(guò)程中顯示詳細(xì)輸出”選項(xiàng)
這份報(bào)告會(huì)包含更多信息。

那位大俠幫忙看下程序是否有錯(cuò)誤,方便的話幫我指正優(yōu)化一下,感謝無(wú)私您的無(wú)私奉獻(xiàn)!



作者: devcang    時(shí)間: 2022-2-25 17:10
已經(jīng)編譯完成了,串口是否正確呢

按說(shuō)明,看看具體的問題

在文件 -> 首選項(xiàng)開啟
“編譯過(guò)程中顯示詳細(xì)輸出”選項(xiàng)
這份報(bào)告會(huì)包含更多信息。
作者: hhdsdy    時(shí)間: 2022-2-25 18:38
編譯沒有問題,上傳出錯(cuò)就說(shuō)明不是程序引起的
作者: 田賀    時(shí)間: 2022-2-25 18:39
樓上說(shuō)的對(duì),開啟“編譯過(guò)程中顯示詳細(xì)輸出”選項(xiàng)來(lái)定位錯(cuò)誤。
幾種可能的原因:串口配置有問題,板子配置有問題,芯片掉bootloader
作者: yzwzfyz    時(shí)間: 2022-2-26 10:39
1、現(xiàn)畫出真值表,建議用EXCEL列個(gè)表,清清楚楚表達(dá)出條件與目的。
2、畫出流程圖(邏輯圖)
3、在紙上,用大腦現(xiàn)走通流程圖
4、再依流程圖、真值表寫程序。
這是標(biāo)準(zhǔn)方案,如果不會(huì)就學(xué)會(huì)它。
當(dāng)然將以上1234混在腦子里,一鍋燴也可以。不過(guò),習(xí)慣不好,更復(fù)雜時(shí)一鍋燴得了嗎?未會(huì)再利用時(shí)能記得住、找得著嗎?
作者: 2450059503    時(shí)間: 2022-4-1 01:20
arduino上傳的時(shí)候可能會(huì)出錯(cuò),注意關(guān)閉多余的串口監(jiān)視器,不要占用端口。
注意有些引腳連接器件后會(huì)出現(xiàn)上傳出錯(cuò)問題,拔掉再上傳就好了。

給你個(gè)fastled例程  白黃綠來(lái)回閃
#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);
        
      
}
作者: 2450059503    時(shí)間: 2022-4-1 01:20
arduino上傳的時(shí)候可能會(huì)出錯(cuò),注意關(guān)閉多余的串口監(jiān)視器,不要占用端口。
注意有些引腳連接器件后會(huì)出現(xiàn)上傳出錯(cuò)問題,拔掉再上傳就好了。

給你個(gè)fastled例程  白黃綠來(lái)回閃
#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);
        
      
}
作者: haihoang    時(shí)間: 2022-4-1 12:01
請(qǐng)檢查板子和電腦之間的連接
作者: 青山大叔    時(shí)間: 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();  
  // 初始化時(shí)關(guān)閉所有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();  
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1