Buen día, tengo este código y no doy en como hacer la siguiente función:
Al pulsar el botón una vez, mi led se prenda por 35 segundos, y de ahi espere otra pulsada del botón para hacer la misma función, espero me ayuden de antemano gracias.
void setup() {
pinMode(2, INPUT_PULLUP);// define pin two as input for push button
pinMode(10, OUTPUT);// defind pin 10 as output
}
void loop() {
int pusshed = digitalRead(2);// read pin 2 and put the result in the "pusshed" variable
if(pusshed == LOW){
digitalWrite(10, HIGH);// if pusheed is equal LOW, turn the pin 10 HIGH (give it 5v)
}else{
digitalWrite(10, LOW);// else set pin 10 to low or zero volt
}
}
Hola. Puedes hacerlo de varias maneras. Una de ellas es usando delay(); con un valor de 35000ms, opción NO recomendada pero válida si es el único cometido de tu programa.
Puedes usar tambien millis(); para que calcule el tiempo y que tras 35000ms, apague el LED y te permita una nueva pulsación. Tendrás que usar una variable para almacenar el tiempo y luego calcularlo con el tiempo actual de tal modo que la cosa queda así con este planteamiento:
-Si activas la entrada X, almacena el tiempo actual y enciende LED
-Al tiempo almacenado, súmale 35000ms
-Cuando el tiempo llegue a esa suma, apaga LED
Lamento no poder escribirte unas líneas de código precisas, ya que estoy escribiendo desde mi teléfono en el descanso del trabajo. 
Mira el ejemplo del IDE BlinkWithoutDelay.ino y entenderás mejor lo que te sugiere @Esfinterman
Código sugerido:
void setup() {
pinMode(2, INPUT_PULLUP); //Pulsador
pinMode(10, OUTPUT); //LED
}
void loop() {
if (digitalRead(2) == LOW){
digitalWrite(10, HIGH); //Prende LED
unsigned long t = millis();
delay(10); //Necesario para eliminar "rebotes"
}
if (millis() - t > 35000){
digitalWrite(10, LOW); //Apaga LED luego de 35 seg
}
}
Aqui explican lo del rebote en pulsadores
ArduMyth:
@Kike_GL, si se recomienda el uso de millis() no tiene sentido usar delay para evitar los rebotes, porque justamente se evita el debounce con un timer también.
La funcion Delay() para pequeños valores es perfectamente permitido su uso ya que simplifica trementamente el código.
ArduMyth:
Luego esto hace lo contrario a lo que se platea. Quiere iniciar el encendido al presionar. Así de entrada el led se encenderá sin pulsar.
Falso, porque el pin 2 es normalmente HIGH gracias a:
pinMode(2, INPUT_PULLUP);
ArduMyth:
No lo he probado pero sería algo así:
#define pinBtn 2
#define pinLed 10
#define rebote 150
#define espera 35000
En general, la palabra clave const es preferida para definir constantes y debe usarse en lugar de #define. ver aqui.
Sugiero que si quieren debatir el tema, lo hagan en otro hilo porque el hilo es de @lun4tic0s y el debate delay() vs milllis() a el no le interesa (me arriesgo a suponerlo).