Error en la funcion map? o es otra cosa? solucionado

Bueno ya estamos de nuevo pidiendo consejo.... de por donde pueden ir los tiros. No se si sera problema del arduino en si (es un nano de 5€) o que pero me falla esta parte de código cuando quiere:

if (conf == true){
Serial.println(contador);
tiempoencendido1 = analogRead(potencendido);
tiempoencendido1= map(tiempoencendido1,0,1024,100,2000); 
       digitalWrite(7,LOW);
       digitalWrite(8,HIGH);
       delay(1);
       contador++;
--------Añadí esto y es mas estable pero aun así salta cuando quiere-------
      if (contador>tiempoencendido1){
       contador==tiempoencendido1;} 
------------------------------------------------------------------------------------
         if(contador == tiempoencendido1){
           digitalWrite(7,HIGH);
           digitalWrite(8,LOW);
            contador = 0;
            delay(2000);
         } 
}

El resto de código que falta no interviene en nada pues se rige por conf == false, por lo que pasa del codigo.....

El problema es que se supone que mapea un valor y ese valor se queda fijo durante x veces y al repetir el proceso durante 15 (por ejemplo o pueden ser 12 o 20......)veces el mapeo cambia y se hace infinito y se cuelga esa parte de código porque el programa sigue funcionando pero pasa de la condicional if (contador>tiempoencendido1).... También lo he probado solo sin nada mas (configuración básica para un programa) y pasa lo mismo cuando quiere el mapeo pasa al infinito y mas allá.

Recuerda usar tags para postear códigos aunque sean de 1 línea.

En tu código escribes esto

digitalWrite(0,HIGH);
            digitalWrite(1,LOW);

Estas escribiendo sobre RX y TX o sea sobre el Serial generando interferencias.

Hola surbyte eso ha sido fallo mio al poner el código en el post... realmente puede ser cualquier pin el 7 y 8 o 4 y 12..... ahora lo corrijo, mientras tanto estoy haciendo pruebas con la función millis por si lo puedo hacer de otra forma y ver si hace lo mismo.....

Tu programa tiene partes que ne lo personal no son aconsejables y te explico porque

porque no promedias las lecturas asi se estabiliza en serio en lugar de poner delays que no hacen mucho.
Y menos el de 2 segundos al final

Tomas 10 o 20 lecturas, las sumas y al final las promedias, ese valor es el que lo pasas por el map
Y con ese valor comparas y tomas acciones.

Creo que el error pasa por tiempoencendido1, al ser una lectura analógica tiene ruido y la condición if(contador == tiempoencendido1) es posible que no se cumpla en la mayoría de los ciclos del loop, deberías reemplazar por la condición if(contador >= tiempoencendido1)

saludos.

Hola.... bueno tras un rato mirando las cosas... ya lo tengo o por lo menos eso creo lo he tenido un rato funcionando y parece que chuta bien. Antes no duraba tanto sin colgarse.

interval = analogRead(potencendido);
interval= map(intervalo,0,1024,100,1000); 
interva2 = analogRead(potapagado);
interva2= map(intervalo2,0,1024,100,1000); 

  unsigned long millisactual = millis();

  if (y == 1){
  if(millisactual - millisanterior > intervalo) {
    millisanterior = millisactual;    
        digitalWrite(7,HIGH);
        digitalWrite(8,LOW);
      y = 0;
      x=1;
  }
  }
  if (x == 1){
    if(millisactual - millisanterior > intervalo2) {
    millisanterior = millisactual;   
            digitalWrite(7,LOW);
            digitalWrite(8,HIGH);

      x=0;
      y=1;
  }
  }

No se si esta forma sera mas limpia pero gano el no utilizar el delay por lo que aun influye menos en el programa principal no?