consulta muy basica sobre la programacion de arduino en mi caso esp8266

Buenos dias:
Dispongo de una placa nodemcu (esp8266), con un codigo logro enviar un coreo electronico al encender la placa pero para volver a enviar el correo debo apagar la placa y volverla a enchufar de esa manera enciende nuevamente la placa y envia el correo.
Yo nesecito ponerle un interruptor entre dos pines creo yo y programarlo para que la placa siempre este encendida pero al hacer contacto entre esos dos pines se envie el correo.

el codigo que tengo es este:

#include <ESP8266WiFi.h>
#include "Gsender.h"

#pragma region Globals
const char* ssid = "XXXXX";                           // WIFI network name
const char* password = "XXXXX";                       // WIFI network password
uint8_t connection_state = 0;                    // Connected to WIFI or not
uint16_t reconnect_interval = 10000;             // If not connected wait time to try again
#pragma endregion Globals

uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr)
{
  static uint16_t attempt = 0;
  Serial.print("Connecting to ");
  if(nSSID) {
      WiFi.begin(nSSID, nPassword);  
      Serial.println(nSSID);
  } else {
      WiFi.begin(ssid, password);
      Serial.println(ssid);
  }

  uint8_t i = 0;
  while(WiFi.status()!= WL_CONNECTED && i++ < 50)
  {
      delay(200);
      Serial.print(".");
  }
  ++attempt;
  Serial.println("");
  if(i == 51) {
      Serial.print("Connection: TIMEOUT on attempt: ");
      Serial.println(attempt);
      if(attempt % 2 == 0)
          Serial.println("Check if access point available or SSID and Password\r\n");
      return false;
  }
  Serial.println("Connection: ESTABLISHED");
  Serial.print("Got IP address: ");
  Serial.println(WiFi.localIP());
  return true;
}

void Awaits()
{
  uint32_t ts = millis();
  while(!connection_state)
  {
      delay(50);
      if(millis() > (ts + reconnect_interval) && !connection_state){
          connection_state = WiFiConnect();
          ts = millis();
      }
  }
}

void setup()
{
  Serial.begin(115200);
  connection_state = WiFiConnect();
  if(!connection_state)  // if not connected to WIFI
      Awaits();          // constantly trying to connect

  Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  String subject = "Puerta abierta/cerrada";
  if(gsender->Subject(subject)->Send("XXXXXX@gmail.com", "Puerta abierta/cerrada")) {
      Serial.println("Message send.");
  } else {
      Serial.print("Error sending message: ");
      Serial.println(gsender->getError());
  }
}

void loop(){}

Tengo entendido que debo ponerle un IF (condicion) que sea que al juntar un pin de entrada con otro recien ahi haga la accion de mandar el mail.

Milll gracias!!!
recompensare mucho a quien me pueda ayudar con este proyecto!!!!!

PD: Siempre deberian estar los pines haciendo contacto, la accion la debe hacer al separarlos.

Moderador: Código editado con etiquetas

Vaya la verdad que entiendo que seas nuevo en el foro pero preguntas así no se como calificarlas tal vez la palabra es "cómodas". Digo "cómoda" porque tu pregunta nos dice que no has leído nada de arduino.

Por supuesto, no has leido las normas del foro y por esa razón no te enteraste que ellas piden que lo primero que debes hacer es buscar tu problema. Con buscar setup y loop lo hubieras resuelto.

En Documentación existe un indice de temas tutoriales y luego hay unas clases de Youtube que te aconsejo veas. Resolverán tu problema.

Si no comprendes el setup y el loop lo demás se te hará muy cuesta arriba.

Por cierto te envío privado para que leas las normas y edites tu post que claramente esta mal posteado.

Buenos dias, ante que nada perdon por la ignorancia sobre esta duda con arduino.
Si bien tengo muchos proyectos hechos con arduino y algunos que me fueron muy complicados es verdad que esta duda es algo muy basico pero a veces lo mas basico y facil para otra persona es lo que mas le cuesta, en mi caso algo tan simple como mi consulta.
Antes que postear en el foro realmente busque por internet muchisimo e incluso aqui en el sitio.
Sin dudas al no saber sobre el funcionamiento de mi inquietud me dificultaba mucho encontrar material al respecto.

Se que para vos es como que un niño te pregunte cuanto es 2+2, realmente espero que me puedas ayudar y en solo unos segundos vas a poder responder una duda que llevo ya varias semanas sin tener resultados. muchas gracias!!!

No es así.
Es el capítulo 1 de un libro de arduinio. Es el primer video de como usar Arduino.

Te enseñan que hay un setup() y un loop()

El setup() se ejecuta al energizar el arduino o sea una vez y por eso tu código se ejecuta al iniciar el Arduino.

El loop() viene de ciclo, se repite permanentemente. Si pones algo en el loop se repetirá mientras tenga energia.

Asi que ahi esta tu respuesta.

Repito: En documentacion => Indices de temas tutoriales => clases de Youtube de 0 a 7 y de nuevo clases de Youtube de 8 en adelante tienes una buena introducción a todo esto.
Con bases de comprensión estas dudas simplemente no las tienes y avanzas a lo importante.

Por cierto, LEE las normas del foro, no lo repetiré de nuevo.

necesitas escribir la funcion fuera del loop y del setup.

void setup() {}

void loop() 
{
//aqui tienes que escribir la manera de solo cuando presiones el boton. 
}


void sendEmail()
{
//aqui pones el codigo para enviar el correo. 
}

Ahora bien como dice Surbyte, deberias leer un poco mas, esto es... ahm lo primero
primeriiso que se ve.

El setup se ejecuta solo una vez
el loop se ejecuta siempre.

sencillo.

-Alex.