hola, me gustaria que me ayudaran en una interpretacion de programa el circuito debe hacer una funcion basica con condicionamientos. pero tengo problemas con algunos codigos...
es uno de mis primeros programas. de ante mano muchas gracias...
este es el programa que he creado..
// cristopher saavedra
//* Definiciones *//
int pulsador=0; //almacena el estado del botón
int estado=0; //0=led apagado, 1=led encendido
int pulsadorAnt=0; //almacena el estado anterior del boton
int lector=0;
int value=0;
int lectorAnt=0;
//* Programa *//
void setup() {
pinMode(2, OUTPUT); //declaramos el pin 2 como salida
pinMode(4, INPUT); //declaramos el pin 4 como entrada
pinMode(3, OUTPUT); // declaramos el pin 3 como salida
pinMode(5, INPUT); // declaramos el pin 5 como entrada
}
void loop() {
pulsador = digitalRead(4); //lee si el botón está pulsado
lector = digitalRead(5); //lee el estado del lector (alto-bajo)
}
pulsadorAnt=pulsador; //actualiza el estado del pulsador
if(pulsador==HIGH); // si el sensor primartio detecta debes hacer esto
estado=1-estado;
delay(40); //pausa de 40 ms
{
delay(10000);
digitalWrite(3, HIGH); //*si se ingresa una tarjeta invalida, el sistema esperara diez segunddos y la rechazara*//
delay(100);
digitalWrite(3, LOW);
}
else(pulsador==LOW);
delay(40);
{ //si no existe ingreso el sistema se mantendra off.
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(50)
}
lectorAnt=lector; // actualiza el estado del lector
if(value==HIGH) //si el estado es 1
value=1-value;
delay(40); // pausa
{
digitalWrite(3, HIGH); //activar paleta secundaria.
delay(100); // pausa
digitalWrite(2, HIGH); // activa paleta primaria
delay(100); //tiempo de espera para que pase tarjeta
digitalWrite(3,LOW); // cierra paleta secundaria
delay(100); // pausa
digitalWrite(2, LOW); //cierra paleta primaria
delay(100);} //pausa
else(value==LOW); //si el valor de lector es zero
delay(40) // pausa 40ms
{
digitalWrite(2,HIGH); //*solo activara la paleta primaria, rechazando la tarjeta no identificada*//
delay(100);
digitalWrite(2,LOW);
}
y estos son los errrores que me arroja la programacion
sketch_jun21a:28: error: 'pulsadorAnt' does not name a type
pulsadorAnt=pulsador; //actualiza el estado del pulsador
^
sketch_jun21a:30: error: expected unqualified-id before 'if'
if(pulsador==HIGH); // si el sensor primartio detecta debes hacer esto
^
sketch_jun21a:31: error: 'estado' does not name a type
estado=1-estado;
^
sketch_jun21a:32: error: expected constructor, destructor, or type conversion before '(' token
delay(40); //pausa de 40 ms
^
sketch_jun21a:35: error: expected unqualified-id before '{' token
{
^
sketch_jun21a:41: error: expected unqualified-id before 'else'
else(pulsador==LOW);
^
sketch_jun21a:42: error: expected constructor, destructor, or type conversion before '(' token
delay(40);
^
sketch_jun21a:43: error: expected unqualified-id before '{' token
{ //si no existe ingreso el sistema se mantendra off.
^
sketch_jun21a:49: error: 'lectorAnt' does not name a type
lectorAnt=lector; // actualiza el estado del lector
^
sketch_jun21a:51: error: expected unqualified-id before 'if'
if(value==HIGH) //si el estado es 1
^
sketch_jun21a:53: error: expected constructor, destructor, or type conversion before '(' token
delay(40); // pausa
^
sketch_jun21a:54: error: expected unqualified-id before '{' token
{
^
sketch_jun21a:64: error: expected unqualified-id before 'else'
else(value==LOW); //si el valor de lector es zero
^
sketch_jun21a:65: error: expected constructor, destructor, or type conversion before '(' token
delay(40) // pausa 40ms
^
exit status 1
'pulsadorAnt' does not name a type
Hola. No te puedo ayudar mucho, pero sí he encontrado un error que el mismo compilador te lo está marcando. En el void loop abres un corchete, que está bien, y haces dos asignaciones. Después de las asignaciones cierras el corchete y ahí se acabó el void loop. 
Otra apreciación que he hecho, es que los IF no acaban con punto-coma, sino que acaban con apertura de corchete, por ejemplo:
if (2=2){
ejecuta.comando();
}
Creo que revisando esas cosas no debería darte error. Revisa bien los corchetes y los punto-coma. Cada IF lleva una apertura y cierre de corchete exclusivo para él. Si seleccionas un corchete, se señala el que lo abre o lo cierra. Puedes guiarte por esa ayuda.
Como consejo para colgar un programa aquí en el foro, es recomendable usar el comando CODE. Así, si metes el código dentro de este comando, al ser largo, tu mensaje se compactará y luego, nosotros al leerlo, podemos expandirlo.
Esperemos que resuelvas los problemas!! 
gracias por tus aportes, como dije antes estoy iniciando en arduino y me toco este programa de entrada, tenioa nociones de C++ pero estan algo oxidadaas.....
realizare las modificaciones de ante mano gracias
Esta plagado de errores el código.
Tu código es un perfecto caos
Estas secciones no se que pretendes que hagan, las estaba corrigiendo pero prefiero que te expliques porque tiene cosas sin sentido.
Veamos una sección porque son tantos los errores pero peor aun es que no se entiende que queires hacer.
void loop() {
pulsador = digitalRead(4); //lee si el botón está pulsado
lector = digitalRead(5); //lee el estado del lector (alto-bajo)
}
pulsadorAnt = pulsador; //actualiza el estado del pulsador
if (pulsador == HIGH); // si el sensor primartio detecta debes hacer esto
estado = 1 - estado;
delay(40); //pausa de 40 ms
{ // <== ERROR
delay(10000);
digitalWrite(3, HIGH); //*si se ingresa una tarjeta invalida, el sistema esperara diez segunddos y la rechazara*//
delay(100);
digitalWrite(3, LOW);
}
else(pulsador == LOW); // <== ERROR
delay(40);
{ // <== ERROR
//si no existe ingreso el sistema se mantendra off.
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(50)
}
lectorAnt = lector; // actualiza el estado del lector
if (value == HIGH) // <== ERROR
//si el estado es 1
value = 1 - value;
delay(40); // pausa
{ // <== ERROR
digitalWrite(3, HIGH); //activar paleta secundaria.
delay(100); // pausa
digitalWrite(2, HIGH); // activa paleta primaria
delay(100); //tiempo de espera para que pase tarjeta
digitalWrite(3, LOW); // cierra paleta secundaria
delay(100); // pausa
digitalWrite(2, LOW); //cierra paleta primaria
delay(100);
} //pausa
Algunos estan señalados. Otros no puedo porque mezclas if () else () con partes que no tienen que ver.
bueno entonces desde la función...
mi código debe hacer lo siguiente
si mi sensor inicial (S1) se activa debe esperar 10 segundos, si durante esos 10 segundos no se cumple la acción del segundo sensor, solo debe activar una paleta (P1).
en cambio si el primer sensor toma señal y el segundo igual, debe activar ambas paletas. y luego volver a 0. esperando una nueva lectura....
es para un sistema de acceso por tarjeta... la señal de la tarjeta sera recibida de manera digital mediante un pulso entregado por una controladora externa....
gracias por la ayuda de verdad que me ha costado entender los códigos.
Hola cristopherelectronicaplicada, bueno, el código tiene muchos errores de sintaxis, sobre todo de anidamiento con los {}.
El primero mas evidente es que tienes el cierre de la función loop () en la cuarta linea despues del loop, lo que hace ya erroneo el resto del programa.
void loop() {
pulsador = digitalRead(4); // lee si el botón está pulsado
lector = digitalRead(5); // ee el estado del lector (alto-bajo)
} // <--- este debes borrarlo.
repasa todos los {} y lo solucionaras.
suerte.
cristopherelectronicaplicada:
gracias por tus aportes, como dije antes estoy iniciando en arduino y me toco este programa de entrada, tenioa nociones de C++ pero estan algo oxidadaas.....
realizare las modificaciones de ante mano gracias
No pasa nada, todos empezamos desde cero dándonos cabezazos contra el teclado. 
Aunque no he podido aún analizar el código entero, sí he visto otros fallos que creo que ya te lo ha comentado surbyte. El comando ELSE no lleva condicional, ya que la condición está en el IF que le precede:
if (2==2) { //Si dos es igual a dos...
ejecuta.comando(); //Ejecuta un comando
} else { //(ELSE) Si dos NO es igual a dos...
ejecuta.otrocomando(); //Ejecuta otro comando
} //Cierra corchete y termina el ELSE
En caso de que quieras condicionar un ELSE tendrás que hacerlo con ELSE IF:
if (2==2) { //Si dos es igual a dos...
ejecuta.comando(); //Ejecuta un comando
} else if (2==8) { //(ELSE) Si dos NO es igual a dos (IF) pero es igual a 8...
ejecuta.otrocomando(); //Ejecuta otro comando
} //Cierra corchete y termina el ELSE IF
Lo primordial ahora mismo es pulir estos fallitos en el código y luego cargarlo en la placa para saber si funciona o no. Una vez que te compile y el código esté correcto, ya podemos empezar a ver qué parte del código está mal escrita para poder seguir ayudándote. 
Es un doble post pero como ya resondieron respetaré a @fclavain y voy a unir los dos hilos, uno acá y otro en Software.
Lee las normas del foro y por favor no dupliques mas tus consultas.
Recuerda usar etiquetas de códigos.
Esfinterman:
if (2=2) { //Si dos es igual a dos...
ejecuta.comando(); //Ejecuta un comando
} else { //(ELSE) Si dos NO es igual a dos...
ejecuta.otrocomando(); //Ejecuta otro comando
} //Cierra corchete y termina el ELSE
Este es un error.
El signo = es de asignación. El de comparación es ==.