Palmada enciende Led 1, palmada enciende Led 2 .

Hola! Soy un poco novatillo en este asunto y estoy bloqueado con un código , me podrias echar un mano?
Tengo un Arduino UNO + modulo sonido ( micrófono ) .
El código que tengo es el siguiente :
*CUANDO DOY UNA PALMADA .........ENCIENDE LED 1SEG. ----APAGA LED 1SEG.--------ENCIENDE LED 1SEG-....

int Led=1;//define LED as interface
int buttonpin=2; //Define D0 Sensor as Interface
int val;//define numeric variables val
void setup()
{
pinMode(Led,OUTPUT);// Define LED as output interface
pinMode(buttonpin,INPUT);//Define D0 Sensor as output Interface
}
void loop()
{
val=digitalRead(buttonpin);//digital interface will be assigned a value of 3 to read val

if (val == HIGH)//When the light sensor detects a signal is interrupted, LED flashes
{
digitalWrite(Led,HIGH);
delay(1000);
digitalWrite(Led,LOW);
delay(1000);
digitalWrite(Led,HIGH);
delay(1000);
digitalWrite(Led,LOW);
delay(1000);

}
 else {
  
digitalWrite(Led,LOW);
}
}

*LO QUE NECESITO ES LO SIGUIENTE:
-ESTADO DE LOS LEDS INICIALMENTE LOW.
-Doy una palmada : Enciende LED 1 "x" segundos y se apaga .
-Doy una palmada : Enciende LED 2 "x" segundos y se apaga.
-Doy una palmada : Enciende LED 1 "x" segundos y se apaga .
-Doy una palmada : Enciende LED 2 "x" segundos y se apaga.
........
*(si no doy ninguna palmada están los leds LOW )

El uso en un futuro seria dar 1 Palmada y que un servo-motor se mueva a la izquierda y pare, luego dar 1 palmada y gire a la derecha y pare, luego dar 1 palmada y gire a la derecha y pare....... a cada palmada que haga una cosa diferente.

MUCHAS GRACIAS!

Yo veo que cada palmada incrementa un contador y ese contador controla un switch case
cada case es una situación como las descriptas

-Doy una palmada : Enciende LED 1 "x" segundos y se apaga .
-Doy una palmada : Enciende LED 2 "x" segundos y se apaga.
-Doy una palmada : Enciende LED 1 "x" segundos y se apaga .
-Doy una palmada : Enciende LED 2 "x" segundos y se apaga.

Mmmm......no se exactamente lo que quieres decir :confused: Quieres decir que el codigo que tengo es lo que necesito? Por que yo cargo el codigo y lo que hace es lo que he descrito : palmada y enciende led1 y se apaga....... Palmada y se Enciende led 1 y se apaga......

Como puedo modificarlo para que a cada palmada encienda un led diferente ?

Gracias por adelantado!!

Mira. El código que ya tienes y tu módulo ya hacen lo que dices en el post 1?

El código que tengo es el siguiente :
*CUANDO DOY UNA PALMADA .........ENCIENDE LED 1SEG. ----APAGA LED 1SEG.--------ENCIENDE LED 1SEG-....

Este es un posible código que haría lo que pides pero debes ajustar los tiempos para 2, 3 y 4.

#define XSeg   1000

const byte Led1 		= 3;	// defino Pin Led1
const byte Led2			= 4;	// defino Pin Led2
const byte buttonpin 	= 2; 	// Define D0 Sensor as Interface
byte i 					= 0;	// Contador de palmadas
bool val;
bool valAnt;	= false;		// define numeric variables val

void setup() {
	pinMode(Led1, OUTPUT);		// Define LED as output interface
	pinMode(Led2, OUTPUT);		// Define LED as output interface
	
	pinMode(buttonpin,INPUT);	// Define D0 Sensor as output Interface
}

void loop() {

	val = digitalRead(buttonpin);	// digital interface will be assigned a value of 3 to read val

	if (val == HIGH && valAnt = LOW)  { // Cuando hay un cambio de nivel incremento el contador
		i++;
	}
	valAnt = val;

	switch(i) {
		case 1: digitalWrite(Led1, HIGH);	// Ajustar tiempos
				delay(Xseg);
				digitalWrite(Led1, LOW);
				break;
		case 2: digitalWrite(Led2, HIGH);	// Ajustar tiempos
				delay(Xseg);
				digitalWrite(Led2, LOW);
				break;
		case 3: digitalWrite(Led1, HIGH);   // Ajustar tiempos
				delay(Xseg);
				digitalWrite(Led1, LOW);
				break;
		case 4: digitalWrite(Led2, HIGH);	// Ajustar tiempos
				delay(Xseg);
				digitalWrite(Led2, LOW);
				break;
		default: i = 0;
				break;
	}
}

Hola SURBYTE!! muchas gracias por el interés!!
Acabo de meter el código pero cuando lo verifico me ha dado varios Errores "creo " sin importancia, luego de haberlos subsanados el código se queda asi :

#define Xseg 100

const byte Led1 = 9; // defino Pin Led1
const byte Led2 = 8; // defino Pin Led2
const byte buttonpin = 2; // Define D0 Sensor as Interface
byte i = 0; // Contador de palmadas
bool val;
bool valAnt = false; // define numeric variables val

void setup() {
pinMode(Led1, OUTPUT); // Define LED as output interface
pinMode(Led2, OUTPUT); // Define LED as output interface

pinMode(buttonpin,INPUT); // Define D0 Sensor as output Interface
}

void loop() {

val = digitalRead(buttonpin); // digital interface will be assigned a value of 3 to read val

if (val == HIGH && valAnt == LOW) { // Cuando hay un cambio de nivel incremento el contador
i++;
}
valAnt = val;

switch(i) {
case 1: digitalWrite(Led1, HIGH); // Ajustar tiempos
delay(Xseg);
digitalWrite(Led1, LOW);
break;
case 2: digitalWrite(Led2, HIGH); // Ajustar tiempos
delay(Xseg);
digitalWrite(Led2, LOW);
break;
case 3: digitalWrite(Led1, HIGH); // Ajustar tiempos
delay(Xseg);
digitalWrite(Led1, LOW);
break;
case 4: digitalWrite(Led2, HIGH); // Ajustar tiempos
delay(Xseg);
digitalWrite(Led2, LOW);
break;
default: i = 0;
break;
}
}

Y ahora lo que pasa con este código es que doy una palmada y se enciende un LEd ....y asi se queda, ni se apaga ni nada, y si vuelvo a dar otra palmada no hace nada, sigue encendido el mismo led, ni se enciende el 2º led ni nada.

No quiero que hayan confusiones, alomejor lo he explicado mal y me gustaría volver a explicar lo que me gustaría que hiciese :

1- Tengo LED1 y LED2 off
2- Doy palmada y LED1 ON ( durante 1seg. ) después Off. "LED2 sigue estando Off".
3- Doy palmada y LED2 ON (durante 1seg. ) después Off. "LED1 sigue estando Off".
4 -Doy palmada y LED1 ON ( durante 1seg. ) después Off. "LED2 sigue estando Off".
5- Doy palmada y LED2 ON (durante 1seg. ) después Off. "LED1 sigue estando Off".
.........Asi indefinidamente.

Pd: creo que asi no hay confusión.

Ya veo mi error, dejame corregirlo.
Mi amigo si ves que yo te pongo un código y luce de un modo y tu lo haces y luce de otro, se debe a que no has leído las NOrmas del foro. Por favor, ve, leelas y luego edita tus códigos para que luzcan como deben.
Aca tu respuesta.

#define Xseg   1000

const byte Led1 		= 3;	// defino Pin Led1
const byte Led2			= 4;	// defino Pin Led2
const byte buttonpin 	= 2; 	// Define D0 Sensor as Interface
byte i 				= 0;	// Contador de palmadas
bool val;
bool valAnt	= false;		// define numeric variables val
bool activar    = false;

void setup() {
	pinMode(Led1, OUTPUT);		// Define LED as output interface
	pinMode(Led2, OUTPUT);		// Define LED as output interface
	
	pinMode(buttonpin,INPUT);	// Define D0 Sensor as output Interface
}

void loop() {

	val = digitalRead(buttonpin);	// digital interface will be assigned a value of 3 to read val

	if (val && !valAnt && !activar)  { // Cuando hay un cambio de nivel incremento el contador
		i++;
		activar = true;
	}
	valAnt = val;

	if (activar) {
		switch(i) {
			case 1: digitalWrite(Led1, HIGH);	// Ajustar tiempos
					delay(Xseg);
					digitalWrite(Led1, LOW);
					break;
			case 2: digitalWrite(Led2, HIGH);	// Ajustar tiempos
					delay(Xseg);
					digitalWrite(Led2, LOW);
					break;
			case 3: digitalWrite(Led1, HIGH);   // Ajustar tiempos
					delay(Xseg);
					digitalWrite(Led1, LOW);
					break;
			case 4: digitalWrite(Led2, HIGH);	// Ajustar tiempos
					delay(Xseg);
					digitalWrite(Led2, LOW);
					break;
			default: i = 0;
					break;
		}
		activar = false;
	}
}

Los errores eran dos pavadas
XSeg x Xseg y un ; donde no debía estar.

Pido disculpas por mi error :confused: , creeme cuando te digo que me leí las normas del foro, pero nos estoy acostumbrado a escribir en ellos.

Ya he probado el codigo y funciona Perfecto!
Has sido muy amable y gracias por perder un poquito de tu tiempo para ayudarme con tus conocimientos.

Seguiré formandome en este mundillo ya que tiene muchas podibilidades para mis inventillos.

Gracias de nuevo Surbyte!