Hi,

I have created the following code

But the problem is

TEMPERATURE IS SHOWING ( 00.C) ALL THE TIME

please help me

regards

julee11





code



#include <DS3232RTC.h>

#include <Time.h>

#include <DHT.h>

#include <Wire.h>

#include "FastLED.h"

#define NUM_LEDS 29// Number of LED controles (remember I have 3 leds / controler

#define COLOR_ORDER BRG // Define color order for your strip

#define DATA_PIN 6 // Data pin for led comunication

#define DHTPIN 7

#define DHTTYPE DHT11



DHT dht(DHTPIN, DHTTYPE);

CRGB leds[NUM_LEDS]; // Define LEDs strip

byte digits[12][7] = {{0,1,1,1,1,1,1}, // Digit 0

{0,1,0,0,0,0,1}, // Digit 1

{1,1,1,0,1,1,0}, // Digit 2

{1,1,1,0,0,1,1}, // Digit 3

{1,1,0,1,0,0,1}, // Digit 4

{1,0,1,1,0,1,1}, // Digit 5

{1,0,1,1,1,1,1}, // Digit 6

{0,1,1,0,0,0,1}, // Digit 7

{1,1,1,1,1,1,1}, // Digit 8

{1,1,1,1,0,1,1}, // Digit 9

{1,1,1,1,0,0,0}, // Digit *0

{0,0,1,1,1,1,0}}; // Digit C I 2D Array for numbers on 7 segment



bool TempShow = true;

bool Dot = true; //Dot state

bool DST = true; //DST state



int last_digit = 0;

//long ledColor = CRGB::DarkOrchid; // Color used (in hex)

long ledColor = CRGB::MediumVioletRed;

long ColorTable[16] = {

CRGB::Amethyst,

CRGB::Aqua,

CRGB::Blue,

CRGB::Chartreuse,

CRGB::DarkGreen,

CRGB::DarkMagenta,

CRGB::DarkOrange,

CRGB::DeepPink,

CRGB::Fuchsia,

CRGB::Gold,

CRGB::GreenYellow,

CRGB::LightCoral,

CRGB::Tomato,

CRGB::Salmon,

CRGB::Red,

CRGB::Orchid

};

void setup() {

// Serial.begin(9600);

// Wire.begin();

LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type

LEDS.setBrightness(255); // Set initial brightness

pinMode(2, INPUT_PULLUP); // Define DST adjust button pin

pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin

pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin



}

// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155

int GetTime(){

tmElements_t Now;

RTC.read(Now);

//time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object

int hour=Now.Hour;

int minutes=Now.Minute;

int second =Now.Second;

if (second % 2==0) {Dot = false;}

else {Dot = true;};

return (hour*100+minutes);

};



// Check Light sensor and set brightness accordingly

void BrightnessCheck(){

const byte sensorPin = 3; // light sensor pin

const byte brightnessLow = 5; // Low brightness value

const byte brightnessHigh =225 ; // High brightness value

int sensorValue = digitalRead(sensorPin); // Read sensor

if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}

else {LEDS.setBrightness(brightnessLow);}

};

void TempToArray(){

tmElements_t tm;

RTC.read(tm);

if (tm.Second != 47) {

TempShow =false;

return;

}

TempShow = true;

int t = dht.readTemperature();

//int celsius = (t / 4.0) * 100;

int celsius =(t);

Serial.print("Temp is: ");

int cursor = 29; // last led number

leds[14]=0x000000;

leds[14]=0x000000;

for(int i=0;i<=13;i++){

int digit = celsius % 10; // get last digit in time

if (i==4){

Serial.print("Digit 4 is : ");

Serial.print(digit);

Serial.print(" ");

cursor = 22;

for(int k=0; k<=13;k++){

Serial.print(digits[11][k]);

if (digits[11][k]== 1){leds[cursor]=ledColor;}

else if (digits[11][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

else if (i==3){

Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");

cursor =15;

for(int k=0; k<=13 ;k++){

Serial.print(digits[10][k]);

if (digits[10][k]== 1){leds[cursor]=ledColor;}

else if (digits[10][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

else if (i==2){

Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");

cursor =7;

for(int k=0; k<=13;k++){

Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

else if (i==1){

Serial.print("Digit is : ");Serial.print(digit);Serial.print(" ");

cursor =0;

for(int k=0; k<=13;k++){

Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

celsius /= 10;

};

};

// Convert time to array needet for display

void TimeToArray(){

int Now = GetTime(); // Get time

int cursor = 29; //116



Serial.print("Time is: ");Serial.println(Now);

if (Dot){leds[15]=ledColor;}

else {leds[15]=0x000000;

};



for(int i=1;i<=4;i++){

int digit = Now % 10; // get last digit in time

if (i==1){



//Serial.print("Digit 4 is : ");Serial.print(digit);

Serial.print(", the array is : ");

cursor =22;

for(int k=0; k<=6;k++){

//Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;



}; // fin for



Serial.println();

if (digit != last_digit)

{ fadefonction();

ledColor = ColorTable[random(16)];

}

last_digit = digit;



}// fin if



else if (i==2){

Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(", the array is : ");

cursor =15;

for(int k=0; k<=6;k++){

Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

else if (i==3){

Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(", the array is : ");

cursor =7;

for(int k=0; k<=6;k++){

Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

Serial.println();

}

else if (i==4){

Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(", the array is : ");

cursor =0;

for(int k=0; k<=6;k++){

Serial.print(digits[digit][k]);

if (digits[digit][k]== 1){leds[cursor]=ledColor;}

else if (digits[digit][k]==0){leds[cursor]=0x000000;};

cursor ++;

};

// Serial.println();

};

Now /= 10;

};

};



void DSTcheck(){

int buttonDST = digitalRead(2);

// Serial.print("DST is: ");Serial.println(DST);

if (buttonDST == LOW){

if (DST){

DST=false;

// Serial.print("Switching DST to: ");Serial.println(DST);

}

else if (!DST){

DST=true;

// Serial.print("Switching DST to: ");Serial.println(DST);

};

delay(500);

};

}

void TimeAdjust(){

int buttonH = digitalRead(5);

int buttonM = digitalRead(4);

if (buttonH == LOW || buttonM == LOW){

delay(100);

tmElements_t Now;

RTC.read(Now);

int hour=Now.Hour;

int minutes=Now.Minute;

int second =Now.Second;

if (buttonH == LOW){

if (Now.Hour== 23){Now.Hour=0;}

else {Now.Hour += 1;};

}else {

if (Now.Minute== 59){Now.Minute=0;}

else {Now.Minute += 1;};

};

RTC.write(Now); }}



void fadeall() {

for(int m = 0; m < NUM_LEDS; m++) {

leds[m].nscale8(250);}}



void fadefonction () {

static uint8_t hue = 0;

// First slide the led in one direction

for(int i = 0; i < NUM_LEDS; i++) {

// Set the i'th led to red

leds[i] = CHSV(hue++, 255, 255);

// Show the leds

FastLED.show();

// now that we've shown the leds, reset the i'th led to black

// leds[i] = CRGB::Black;

fadeall();

// Wait a little bit before we loop around and do it again

delay(10);

}



// Now go in the other direction.

for(int i = (NUM_LEDS)-1; i >= 0; i--) {

// Set the i'th led to red

leds[i] = CHSV(hue++, 255, 255);

// Show the leds

FastLED.show();

// now that we've shown the leds, reset the i'th led to black

// leds[i] = CRGB::Black;

fadeall();

// Wait a little bit before we loop around and do it again

delay(10);

}

}

void loop() // Main loop

{

int t = dht.readTemperature();

Serial.print("Temperatura: ");

Serial.print(t);

BrightnessCheck(); // Check brightness

DSTcheck(); // Check DST

TimeAdjust(); // Check to se if time is geting modified

TimeToArray(); // Get leds array with required configuration

TempToArray();

FastLED.show(); // Display leds array

if (TempShow == true) delay (7000);

}

