Hey I have my system all setup and it half works, except my RGB LEDs are not working correctly. they are all wired in correctly, but the LEDs ONLY light up when wired in wrong? i.e when the ground is collected to one of the RGB cathodes. It should be RG(Grnd)B.
Anyone see a fault in my coding or know what this problem may be? Apologies if my code looks like a complete hack job, its because it is!
#include <dht11.h>
//
// FILE: dht11_test1.pde
// PURPOSE: DHT11 library test sketch for Arduino
//
//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}
// fast integer version with rounding
//int Celcius2Fahrenheit(int celcius)
//{
// return (celsius * 18 + 5)/10 + 32;
//}
//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
return celsius + 273.15;
}
// dewPoint function NOAA
// reference: Algorithms - Schlatter and Baker
double dewPoint(double celsius, double humidity)
{
double RATIO = 373.15 / (273.15 + celsius); // RATIO was originally named A0, possibly confusing in Arduino context
double SUM = -7.90298 * (RATIO - 1);
SUM += 5.02808 * log10(RATIO);
SUM += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
SUM += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM - 3) * humidity;
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558 - T);
}
// delta max = 0.6544 wrt dewPoint()
// 5x faster than dewPoint()
// reference: Dew point - Wikipedia
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}
int redpin = 11;
int greenpin = 10;
int bluepin = 9;
int redpin2 = 3;
int greenpin2 = 5;
int bluepin2 = 6;
int temperature;
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN A0
void setup()
{
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
pinMode(redpin, OUTPUT);
pinMode(greenpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(redpin2, OUTPUT);
pinMode(greenpin2, OUTPUT);
pinMode(bluepin2, OUTPUT);
}
void loop()
{
temperature = (float)DHT11.temperature, 2;
if(temperature>=19){
analogWrite(redpin, 255);
analogWrite(greenpin, 255);
analogWrite(bluepin, 255);
analogWrite(redpin2, 255);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
if(temperature>=20){
analogWrite(redpin, 255);
analogWrite(greenpin, 255);
analogWrite(bluepin, 255);
analogWrite(redpin2, 255);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
if(temperature>=21){
analogWrite(redpin, 255);
analogWrite(greenpin, 255);
analogWrite(bluepin, 225);
analogWrite(redpin2, 255);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
if(temperature>=22){
analogWrite(redpin, 255);
analogWrite(greenpin, 255);
analogWrite(bluepin, 255);
analogWrite(redpin2, 255);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
if(temperature>=23){
analogWrite(redpin, 255);
analogWrite(greenpin, 255);
analogWrite(bluepin, 255);
analogWrite(redpin2, 255);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
if(temperature>=24){
analogWrite(redpin, 112.5);
analogWrite(greenpin, 255);
analogWrite(bluepin, 112.5);
analogWrite(redpin2, 112.5);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 112.5);
}
if(temperature>=25){
analogWrite(redpin, 0);
analogWrite(greenpin, 255);
analogWrite(bluepin, 255);
analogWrite(redpin2, 0);
analogWrite(greenpin2, 255);
analogWrite(bluepin2, 255);
}
Serial.println("\n");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);
delay(500);
}