Hola , Soy nuevo en mundo Arduino , e intentado de buscar informacion , pero no encuentro el post adecuado hacia este tema , si esta posteado pido disculpas de ante mano por desconocimiento , tengo una duda ya que me estoy introduciendo en el mundillo ,
Si alguien es tan amable de explicarme como mantener 2 salidas digitales abiertas a la misma vez , como ejemplo puedo poner 2 Leds , uno en el digital 4 y otro Led en el digital 9 , como puedo hacer para que cuando compile el programa hacia la placa los 2 Leds enciendan al mismo tiempo , a la par , un saludo y gracias .
Colega, una aclaración que, aunque desapercibida, es gran importancia en Arduino y otros sistemas (para el uso de cuestiones como retardos o esperas):
"al mismo tiempo" no existen en programación estructurada o secuencial. (que es una de las bases de Arduino y en general casi todos los controladores electrónicos). En otras palabras es casi imposible implementar dos procesos paralelos en un controlador electrónico debido a que estos van ejecutando línea por línea el código fuente.
Sin embargo, nosotros como mortales humanos, tenemos nuestros límites orgánicos. Y uno de esos es la visión (ya que estamos hablando de LEDs). Usted puede engañar a los ojos haciéndoles creer que todo ocurre en el mismo instante de tiempo pero no es así. Simplemente existe un retardo de unos milisegundos o menos que son imperceptibles al ojo humano.
Teniendo esto en mente, sobretodo lo de la ejecución secuencial del código, usted puede generar dos instrucciones, que no se ejecutan al mismo tiempo, pero que a la percepción humana si parecería. En el caso de los LEDs, simplemente es definir las dos salidas (4 y 9 como usted dice) y en el loop puede programar por ejemplo:
Esto hace que se encienda el LED en el pin 4, luego en el pin 9; el programa espera 1000 ms (1 seg) los apaga en el mismo orden, y repite todo el proceso. Si usted hace eso en físico, verá que los 2 LEDs se encienden "al mismo tiempo" aparentemente, pero en realidad entre cada instrucción existe un retardo de tiempo que va muy ligado a la frecuencia de operación del Arduino (8 MHz, 16 MHz, etc.) A mayor frecuencia, menor serán los tiempos de trabajo y podrá ejecutar todo mas rápido
En rigor de verdad, si se pueden encender o apagar 2 o más LEDs (o para ser exactos poner en HIGH o LOW más de un pin) simultáneamente con la condición que sean del mismo puerto.
De todos modos, ya que estás comenzando, la explicación de @yiosef es excelente, para lo otro ya habrá tiempo.
Bueno, aunque @yiosef lo explicó correctamente su respuesta esta basada en como programamos Arduino usando digitalWrite(pin, estado)
Pero si se programa el puerto directamente como dice @gatul eso es posible.
En un UNO
PORTB: pines digitales del 8 al 13.
PORTC: entradas analógicas A0 al A7.
PORTD: pines digitales del 0 al 7.
Cada puerto es controlado por 3 registros los cuales también están definidos como variables en el lenguaje del Arduino.
DDRX: configura los pines como ENTRADAS/SALIDAS sobre el puerto X (B,C o D).
Esto se hace bajo la función setup().
Por ejemplo, para configurar los pines digitales del 7,6,5,4,3,2,1,0. utilizaríamos la siguiente instrucción donde dejamos los pines RX y TX sin activar para no tener problemas con esta vía de comunicación.
DDRD = B11111100;
// PORTX: escribe/lee el estado HIGH/LOW dentro de la función LOOP() en los pines del puerto B,C o D:
PORTD = B11111111; // pines 7....0 en HIGH
PINX: lectura del estado de los pines del puerto B/C/D configurados previamente como tales con la función pinMode(pin,INPUT).