/*Código de mood lamp 
 *Proyecto #1 de Manufactura Digital
 */

// Incluir librería
#include <DHT.h>

// Definir el pin digital donde se conecta el sensor
#define DHTPIN 2
// Definir tipo de sensor
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

//Función del botón 
const int btn_pin= 8;
String btn_estado= "Auto";

//Variables
int analogPinR = A0;
int analogPinG = A1;
int analogPinB = A2;
int potR;
int potG;
int potB;
float colR;
float colG;
float colB;

//Variables de sensor de sonido
int Analog_Pin = A3; 
#include <Adafruit_NeoPixel.h>

#define PIN 7
#define NUMPIXELS 60 
int espera = 50;


/*Incluyendo Librería*/
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

/*Inicialización del programa*/
void setup(){
  pinMode(btn_pin,INPUT_PULLUP);
  pixels.begin();
  pixels.show();
  pinMode(Analog_Pin, INPUT);
  dht.begin();

}

/*Ciclo principal del programa*/
void loop(){ 
  if (digitalRead(btn_pin)==HIGH && btn_estado== "Auto"){
     pixels.clear();
  
  potR = analogRead(analogPinR);//Se lee el valor análogo que arroja el potenciómetro
  colR = potR/1023.0*255.0;//Linealiza el valor obtenido a una escala 0-255
  
  potG = analogRead(analogPinG);//Se lee el valor análogo que arroja el potenciómetro
  colG = potG/1023.0*255.0;//Linealiza el valor obtenido a una escala 0-255
  
  potB = analogRead(analogPinB);//Se lee el valor análogo que arroja el potenciómetro
  colB = potB/1023.0*255.0;//Linealiza el valor obtenido a una escala 0-255

btn_estado="Manual"; // Modo Manual 
    }
  else if (digitalRead(btn_pin)==HIGH && btn_estado== "Manual"){
    btn_estado="Auto";
    float Analog;
    Analog = analogRead (Analog_Pin);
    colR = Analog/1023.0*255.0;//Linealiza el valor obtenido a una escala 0-255
       
  // Leer la humedad relativa
  float h = dht.readHumidity();
  colB = h/100.0*255.0;//Linealiza el valor obtenido a una escala 0-255
  // Leer la temperatura en grados centígrados (por defecto)
  float t = dht.readTemperature();
  colG = 255.0-t;//Linealiza el valor obtenido a una escala 0-255

 }
for(int i=0;i<NUMPIXELS;i++){
  pixels.setPixelColor(i,pixels.Color(colR,colG,colB));
  pixels.show();
  delay(espera);}  

}
    
