Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

doc:tec:elo:uc_arduino:arduino_io:inicio [2025/07/22 15:59] – creado - editor externo 127.0.0.1doc:tec:elo:uc_arduino:arduino_io:inicio [Fecha desconocida] (actual) – editor externo (Fecha desconocida) 127.0.0.1
Línea 1: Línea 1:
 +====== Arduino: Entradas / Salidas ======
 +
 +<WRAP center round info 60%>
 +
 +  * [[https://aprendiendoarduino.wordpress.com/tag/salidas-analogicas/|Estructuras Propias de Arduino]]
 +  * [[https://programarfacil.com/blog/arduino-blog/led-rgb/|LED RGB con Arduino]]
 +  * [[https://programarfacil.com/blog/arduino-blog/pines-digitales-de-arduino/|Pines digitales de Arduino pinMode, digitalWrite y digitalRead]]
 +
 +</WRAP>
 +
 +
 +Vamos a analizar el funcionamiento de los puertos disponibles en la placa Arduino Nano.
 +
 +===== Digitales =====
 +
 +Trabajan únicamente con ''1'' y ''0'': Señales digitales binarias.
 +
 +Pueden programarse tanto como entradas como salidas, de forma independiente unas de otras.
 +
 +Por defecto, al iniciar el Arduino, están configuradas como entradas. Esto es así para protegerlas frente a eventuales cortocircuitos:
 +  * Si algún pin resulta que va a ser una entrada, entonces se le estará aplicando una tensión externa al mismo. Si ese mismo pin se configura inicialmente como salida se producirá un cortocircuito en dicha situación.
 +
 +Lo que haremos por programa es programar las que vayan a ser salidas.
 +
 +**1) Estado inicial**. Simplemente configurando los puertos digitales como salidas... ¿Cuál es el valor por defecto de las mismas, ''1'' ó ''0''?.
 +
 +<file c>
 +// Declaración de variables
 +  int persiana1_sube, persiana1_baja;
 +
 +// Inicialización de variables
 +  persiana1_sube=3;
 +  persiana1_baja=4;
 +
 +void setup() {
 +
 +  // Inicializo persiana 1: pin salida y valor 1
 +  digitalWrite(persiana1_sube, HIGH);
 +  pinMode(persiana1_sube, OUTPUT);
 +  digitalWrite(persiana1_baja, HIGH);
 +  pinMode(persiana1_baja, OUTPUT);
 +
 +  // Prueba para ver valor por defecto
 +  pinMode(5, OUTPUT);
 +}
 +
 +void loop() {
 +
 +}
 +</file>
 +
 +  * Al ejecutar este programa, se ve que los pines configurados como salidas tienen un valor ''0'' por defecto.
 +  * Si estos pines van a estar conectados a interfaces que se activen con ''0'' deberemos previamente ponerlos a ''1'' para que no lo activen al inicio del programa, tal como se muestra en el ejemplo anterior donde los relés se activan con un nivel bajo y cuando programamos como salidas del Arduino los pines que los van a controlar deberemos estar seguros de que no se activan en ese momento.
 +\\ 
 +===== Analógicas =====
 +
 +Los pines analógicos que se numeran del PC0 al PC5 en el ATMega328P y **del A0 al A5** en la placa de Arduino, son pines analógicos pero también **se pueden utilizar como pines digitales**. Se puede acceder a ellos como si fueran pines digitales de Arduino utilizando la numeración **del 14 al 19**. Siendo el 14 el pin A0, el 15 el A1 y así sucesivamente hasta el 19.
 +
 +**Importante**. Sin embargo los pines analógicos adicionales que posee el Arduino Nano **A6 y A7 no pueden funcionar en este modo de pines digitales**, siendo únicamente entradas analógicas. //Estos pines solo tienen capacidades ADC y no se pueden usar como entradas o salidas digitales//.
 +  * Así, el siguiente código funciona en un Arduino Nano, poniendo un ''0'' y un ''1'' de forma intermitente en el terminal A0 de la placa <code c salida_analogica1.ino>
 +
 +byte pin_color = A0;
 +
 +void setup(void) {
 +  pinMode(pin_color,OUTPUT);
 +} // Final setup
 +
 +void loop(void) {
 +  digitalWrite(pin_color,0); // Salida con ''0'
 +  delay(2000);
 +  digitalWrite(pin_color,1); // Salida con ''1'
 +  delay(2000);
 +} // Final loop
 +
 +</code>
 +  * Sin embargo si intentamos hacer lo mismo con el pin A6 (''byte pin_color = A6;'') **no funciona**.
 +