nodeMCU no realiza bucle for

Hola a todos. Estoy realizando un proyecto con nodemcu y tengo problemas para inicializar los pines de salida con el bucle for. Creo que entiendo bien la estructura y que está correctamente escrita, pero no funciona.
Esto es lo que tengo:
const int Led1OK = D0; // Salida relé 1 OK
const int Led1KO = D1; // Salida relé 1 KO
const int Led2OK = D2; // Salida relé 2 OK
const int Led2KO = D3; // Salida relé 2 KO
const int Led3OK = D4; // Salida relé 3 OK
const int Led3KO = D5; // Salida relé 3 KO
const int Led4OK = D6; // Salida relé 4 OK
const int Led4KO = D7; // Salida relé 4 KO

void setup() {
for(int i = D0; i < D8; i++){
pinMode(i, OUTPUT); //Inicializamos los pines D0 a D7 como salida
digitalWrite(i, HIGH); //Colocamos todas las salidas a HIGH
}
Serial.begin(115200);

Alguien me puede decir, qué estoy haciendo mal…
Gracias de antemano

En principio por favor lee las reglas sobre cómo insertar código.

Tu problema es que D0, D1, etc. no están definidos, por eso no te funciona el lazo (ni siguiera debería compilar).
Y de hecho, todas las constantes que definiste van a estar a 0 por lo mismo.
Usa 0; 1; etc. en su lugar (Por lo menos así se haría en arduino).

Saludos

Gracias por la respuesta. Por qué dices que los pines no están definidos..? Para definir los pines en nodemcu, la expresión que se utiliza, o que se puede utilizar es D0....D8..etc. ya que el patillaje de este, no coincide con el de Arduino.

Si elimino el bucle for e inicializo los pines de uno en uno, funciona correctamente...

Moderador
Por favor edita tu post usando etiquetas de código.

Si un forero te solicita que postees debidamente el código, no lo dejes pasar porque luego llega el moderador y te lo dice en otro tono porque has pasado por la advertencia.
Asi que te dejo las normas a continuación y por favor edita tu código para que se vea adecuadamente.
Hilo movido a Software.
Normas del foro

También escribí esta publicación en alemán y luego la traduje Google-translate. Estoy bastante seguro de que es fácil de entender en la traducción al español.

La regla más importante en programación es:

Cuando su programa hace algo diferente de lo que espera. Deje de adivinar, pero traiga los hechos y cifras muy concretos a la pantalla
Si hubiera buscado el pinout para la placa nodeMCU, lo habría encontrado usted mismo

const int Led1OK = D0;    // Salida relé 1 OK
const int Led1KO = D1;    // Salida relé 1 KO 
const int Led2OK = D2;    // Salida relé 2 OK
const int Led2KO = D3;    // Salida relé 2 KO 
const int Led3OK = D4;    // Salida relé 3 OK
const int Led3KO = D5;    // Salida relé 3 KO 
const int Led4OK = D6;    // Salida relé 4 OK
const int Led4KO = D7;    // Salida relé 4 KO 
                    

void setup() {
  Serial.begin(115200);  
  Serial.println("Setup-Start");

  Serial.print("D0 value is:");
  Serial.println(D0);
  
  Serial.print("D1 value is:");
  Serial.println(D1);
  
  Serial.print("D2 value is:");
  Serial.println(D2);
  
  Serial.print("D3 value is:");
  Serial.println(D3);
  
  Serial.print("D4 value is:");
  Serial.println(D4);
  
  Serial.print("D5 value is:");
  Serial.println(D5);
  
  Serial.print("D6 value is:");
  Serial.println(D6);
  
  Serial.print("D7 value is:");
  Serial.println(D7);

  Serial.print("D8 value is:");
  Serial.println(D8);

  for(int i = D0; i < D8; i++){
    Serial.print("i=");
    Serial.println(i);
    pinMode(i, OUTPUT);        //Inicializamos los pines D0 a D7 como salida 
    digitalWrite(i, HIGH);       //Colocamos todas las salidas a HIGH
  }

}

void loop() {
  // put your main code here, to run repeatedly:

}

www.google.de/search?q=site%3A±pinterest.*+nodemcu+pinout

const int Led1OK = D0;    // Salida relé 1 OK
const int Led1KO = D1;    // Salida relé 1 KO
const int Led2OK = D2;    // Salida relé 2 OK
const int Led2KO = D3;    // Salida relé 2 KO
const int Led3OK = D4;    // Salida relé 3 OK
const int Led3KO = D5;    // Salida relé 3 KO
const int Led4OK = D6;    // Salida relé 4 OK
const int Led4KO = D7;    // Salida relé 4 KO

void setup(){
  for(int i=D0;i<D8;i++){
  pinMode(i, OUTPUT);        //Inicializamos los pines D0 a D7 como salida
  digitalWrite(i, HIGH);     //Colocamos todas las salidas a HIGH
  }
Serial.begin(11250);
}

Hola. Lo primero de todo, mis disculpas por no haber seguido las normas del foro.
El pinout del nodemcu, lo tengo mirado y requetemirado, y sé, la correspondencia que hay entre el arduino y el nodemcu, pero no entiendo lo que intentas explicarme Stefan. Perdona mi ignorancia, pero es la primera vez que estoy programando, y a pesar de que he leído mucho y he visto muchos videos, no consigo que el código me deje las salidas en estado alto. Si inicializo los pines de uno en uno sin utilizar el bucle for, me funciona bien…
He probado tu código, y el resultado es el mismo. No funciona.

Gracias y un saludo

Yo si le entendí, si miras el código que él dejó es bastante obvia la respuesta.
¿Probaste correr ese código y ver los resultados?
¿No te resultó llamativo que imprima los valores de cada constante?

La respuesta es sencilla, la numeración de los pines no es consecutiva, tampoco ordenada, por lo tanto no podes usar los alias (D0, D1...) para controlar el lazo.

Saludos

De acuerdo, tuve un “ataque” de ceguera experta a la dificultad de principiante:

Los comandos Serial.print () y Serial.println () envían letras y valores de variables al monitor en serie.
Puede iniciar el monitor de serie presionando la combinación de teclas Shift-Ctrl-M o haciendo clic en la opción Monitor de serie en el menú “Herramientas”.

Si mam transfiere ahora el programa al ESP8266, se emite algo en el monitor en serie. Los valores numéricos reales de las constantes D0 a D8

Esto luego se muestra en el monitor de serie:

D0 value is:16
D1 value is:5
D2 value is:4
D3 value is:0
D4 value is:2
D5 value is:14
D6 value is:12
D7 value is:13
D8 value is:15

La idea básica de hacer el programa más compacto usando un bucle es buena.
En este caso no funciona porque los números no coinciden

NO hay salida en el bucle, lo que significa que el bucle NO se ejecuta en absoluto.
Esto también está perfectamente claro porque la condición para ejecutar el ciclo es

para (int i = D0; i <D8; i ++) {

donde D0 tiene el valor 16 y D8 el valor 15
i se establece en el número 16 y luego ejecuta el ciclo siempre que i sea menor que 15

I es 16 que es mayor que 15 ==> el bucle NO se ejecuta en absoluto

Esta técnica de salida de los valores numéricos de las variables con salida en serie es la técnica de resolución de problemas más importante.
Esto muestra lo que realmente está sucediendo en el programa.

Es mejor demostrar esta técnica en el primer programa.

saludos cordiales Stefan

Si. He probado el código, y el resultado es la correlación que existe entre el nombre que asigna nodemcu a los pines, D0....D8 y los gpio. Esto ya lo entiendo. Entonces, primero tendré que crear una relación ordenada y lógica, para que el programa lo entienda.

Gracias por la explicación

Me ha quedado claro Stefan. Tendré en cuenta tu explicación.
Muchas gracias y un saludo

Moderador:
Comunícate por privado por favor