const int portPin = 5;
int potValor = 0;  // guarda los datos del potenciometro
int valorTem = 0;  // guarda el valor deseado para temperatura 
int verde = 0;
int amarillo = 0;
int naranja = 0;
int rojo = 0;
int SetPoin;
int r=0,g=0,b=0;

void setup() {
  Serial.begin(115200);
  analogSetPinAttenuation(5,ADC_2_5db);// se realiza una atenuacion de 2,5db, al ADC para tomar lecturas hasta 1.3v, ya que el sensor lm35 a 100°C 
  delay(100);                         // tiene una salida de 1.2v a proximadamente.
  
}

void loop() {

   #ifdef RGB_BUILTIN

     potValor = analogRead(portPin);   //datos del potenciometro 
     valorTem = map(potValor,0,4095,0,100); // Escalamiento de temperatura de 0 a 100 grados 
     verde = map(potValor,0,1024,20,255);   // Escalamiento para color verde
     amarillo = map(potValor,1024,2048,20,255);  // Escalamiento para color amarillo
     naranja = map(potValor,2048,3072,255,80);    // Escalamiento para color naranja
     rojo = map(potValor,3072,4095,80,0);          // Escalamiento para color rojo

     Serial.print("Valor Potenciometro:  ");        //motrar valores del potenciometro 
     Serial.print(potValor);                         // y de temperatura 
     Serial.print(" Temperatura:  ");
     Serial.print(valorTem);
     Serial.print("°C");
     Serial.println();
     
     if(potValor >=0 && potValor <= 1024){     // condiconal para el color verde en el rango (0 - 1024)
        
          neopixelWrite(RGB_BUILTIN,0,verde,0); // Green
          r = 0;
          g = verde;
          b = 0;
      }
     else
      if(potValor>1024 && potValor<=2048){     // condiconal para el color amarillo en el rango (1024 - 2048)
        
          neopixelWrite(RGB_BUILTIN,amarillo,255,0); //amarillo
          r = amarillo;
          g = 255;
          b = 0;     
     }
     else
     if(potValor>2048 && potValor<=3072){      // condiconal para el color naranja en el rango 2048 - 3072)
          
            neopixelWrite(RGB_BUILTIN,255,naranja,0); //naranja
            r = 255;
            g=naranja;
            b = 0;
           
     }
      else
     if(potValor>3072 && potValor<=4095){    /// condiconal para el color rojo en el rango 3072 - 4095)          
           
             neopixelWrite(RGB_BUILTIN,255,rojo,0); //rojo
             r=255;
             g=rojo;
             b=0;
           
     }

     if(Serial.available()){        //si hay un valor ingresado en el puerto serial, toma  el dato 
           SetPoin = Serial.readStringUntil('/n').toInt(); //Persibe el dato entero que esta ingresado en el puerto serial 
           Serial.print("El valor se ajusto a ");
           Serial.println(SetPoin+1);
     }

     if(valorTem >= SetPoin)       //parpadeo del led 
     {
          neopixelWrite(RGB_BUILTIN,0,0,0); 
          delay(400);
          neopixelWrite(RGB_BUILTIN,r,g,b);
     }

    #endif 
 
   delay(100);
}