WEMOS D1 MINI encender led integrado

Hola buenas tardes, ¿como puedo modificar este código para poder encender el led de la placa Wemos D1 Mini, me refiero al led que tiene la placa y también es el pin D4? En que líneas debo poner;

digitalWrite(pinLed, HIGH);    // turns led off

digitalWrite(pinLed, LOW);  // turns led on

Quiero que cuando de salida el pin D2 el led se encienda y cuando no de salida el pin D2, se apague el led. He buscado esta información y no he podido dar con una solución después de modificar este código que os mando. Muchas gracias y saludos a todos.`#include <ESP8266WiFi.h>

int sparkpin= D2;  //SCR control pin, can be connected to DCDCpin to save GPIOs/wires
//int DCDCpin= D5;   //DC-DC converter enable/disable pin  0-enabled, 1-disabled. Can be connected to sparkpin, as DCDC will shut itself off when preset capacitor voltage is reached 
int advance = 0;
int rpmpin = D1;
int rpm = 1;
float rpmai = 1;
boolean rpmflag=true;
boolean rpmupdated=false;
boolean fired = true;
unsigned long pickup=0;
unsigned long elapsedt_rpm = 1;
unsigned long last_update_rpm=0;
unsigned long duration_rpmTmp=0;
unsigned long last_spark=0;
unsigned long loop_time=0;
unsigned long spark = 0;
volatile unsigned long duration_rpm=0;
volatile unsigned long last_rpm=0;


void setup()   {
  WiFi.mode( WIFI_OFF );
  WiFi.forceSleepBegin();
  delay(300);
  Serial.begin(115200);
  pinMode(rpmpin,INPUT);
  pinMode(sparkpin,OUTPUT);
//  pinMode(DCDCpin,OUTPUT); 

  attachInterrupt(digitalPinToInterrupt(rpmpin), rpm_counter, RISING); 
}


void loop() 
 {
if ((millis()-last_update_rpm) >100) {
  rpmflag=true;
}

if (rpmupdated){
  noInterrupts();
  rpmupdated=false;
  duration_rpmTmp=duration_rpm;
  pickup=last_rpm;
  interrupts();

  rpmai = 60000000/duration_rpmTmp;
  rpm = round (rpmai);

  fired = false;

// below is ignition advance degree calculation
if (rpm<1000) {advance = 10;}
if ((rpm>=1000) && (rpm<1300)) {advance = 17;}
if ((rpm>=1300) && (rpm<1500)) {advance = 30-rpm/100;}
if ((rpm>=1500) && (rpm<3000)) {advance = 15;}
if ((rpm>=3000) && (rpm<4000)) {advance = 0.013*rpm-24;}
if ((rpm>=4000) && (rpm<7000)) {advance = 28;}
if ((rpm>=7000) && (rpm<8000)) {advance = 0.002*rpm+14;}
if (rpm>=8000) {advance = 30;}

spark=duration_rpmTmp*(63-advance)/360;   // 63 (or 60?) is degrees BTDC of pickup signal for Piaggio LEADER engine

//printing for logging purposes
Serial.print(rpm);
Serial.print(",");
Serial.println(advance);

last_update_rpm=millis();
}

loop_time=micros(); 

if (((micros()-pickup)>=spark) && !fired) {    //if time for spark
//  digitalWrite(DCDCpin,HIGH);      //disable DC-DC converter
  digitalWrite(sparkpin,HIGH);     //activate SCR
  delayMicroseconds(200);          //let it spark
  digitalWrite(sparkpin,LOW);     //deactivate SCR
  last_spark=micros();
  fired = true;
}

//below if-else sets dwell time to 7-8ms
/*  
if (duration_rpmTmp>8000) {
  if ((micros()-last_spark)>(duration_rpmTmp-7000)) {
   digitalwrite(DCDCpin,LOW);  
  }
}

else
{
  digitalwirte(DCDCpin,LOW);       
}
*/

yield();  //feed the dog
}

// Interrupt function ----------------------------
ICACHE_RAM_ATTR void rpm_counter()   
{
if ((micros()-last_rpm)>5900)         //debounce signal. Take MAX RPM of engine and calculate time in micro seconds for full revolution: 
 {                                    //   60 000 000/(max_RPM+couple_hundred_for_error)  ->  60 000 000 / (10 000 + 200) = 5882 -> rounded it to 5900
  duration_rpm = micros()-last_rpm;
  last_rpm = micros();
  rpmupdated=true;
 }
}
````

**Editado por moderador**

Tu tema ha sido movido a la sección en español del foro. Utiliza el inglés en las secciones en inglés del foro.

Tu código no compila. Al inicio tienes que añadir

#include <ESP8266WiFi.h>

Dentro de setup() inicializas el pin del LED

pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN PIN D4 en Wemos D1 Mini

Luego vas donde activa y desactiva la salida D2 (sparkpin) y pones lo propio para el LED

if (((micros()-pickup)>=spark) && !fired) {    //if time for spark
//  digitalWrite(DCDCpin,HIGH);      //disable DC-DC converter
  digitalWrite(sparkpin,HIGH);     //activate SCR
  digitalWrite(LED_BUILTIN, LOW);
  delayMicroseconds(200);          //let it spark
  digitalWrite(sparkpin,LOW);     //deactivate SCR
  digitalWrite(LED_BUILTIN, HIGH);
  last_spark=micros();
  fired = true;
}

Buenas noches Cheyenne1, gracias por tu respuesta y gracias también por haber pasado mi mensaje donde corresponde. El código si compila bien, lo que pasa que lo he escrito mal, aquí en el foro, en la linea 23 define el pinMode D4, lo probaré tal como me dice y le comento resultados, muchas gracias por su respuesta. Saludos

Cheyenne1, muchas gracias, el código tal cual lo describe funciona perfectamente, yo me he atrevido ha añadir un delay (20);
Para que el led permanezca ese tiempo encendido. Seguiré mejorando este código, ya que quiero incorporar una segunda señal digital de un segundo sensor hall, pero de momento lo probaré así tal cual porque funciona perfectamente y he de probarlo. Muchísimas gracias, ya os iré informando sobre este proyecto. Saludos

No sé dónde has puesto un delay() pero es fácil que empiece a no funcionar bien tu programa, ya sea ahora o según vayas añadiendo más cosas. Te aconsejo que vayas eliminando los delay(), en general hay que utilizarlos con cuidado y cortos, y se llevan mal con las interrupciones.

El delay es de (20) el tiempo que permanece el led encendido, pero solo es solo por apreciar el led encendido, si no pongo ese delay apenas se aprecia ver el led encendido, puede ser que lo tenga que quitar y poner en el pin D4 un led. Esto del led es solo por ver cuando manda el pin D2 salida. De momento todo va bien, la prueba de fuego la haré pronto montado en el motor, espero arrancarlo. Debo también resolver el tema del transistor IGBT que se calienta mucho, he visto algo de información aquí en el foro, antes quiero leer e informarme bien antes de hacer nuevas consultas. Muchas gracias por tu respuesta, saludos

No has explicado el proyecto y no estoy seguro, ¿esto es para hacer el disparo de las bujías de un motor de gasolina? Si es así por supuesto que tendrás que quitar el delay ya que va a ser del orden del intervalo entre disparos y de hecho ni se verá el parpadeo. ¿Ahora supongo que lo ves porque estás con algún sistema de pruebas a velocidad baja?

Perdón y llevas razón, efectivamente es para un encendido para un motor de un cilindro, pero quiero modificar para dos cilindros con dos sensores hall independientes.
Pensé que el led no iba a interferir en la salida D2, y el led iba independientemente por eso puse el delay(20) para poder ver el led encendido

Si, estoy comprobando a bajas revoluciones