Vamos a analizar el funcionamiento de los puertos disponibles en la placa Arduino Nano.
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:
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
?.
// 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() { }
0
por defecto.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.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.
0
y un 1
de forma intermitente en el terminal A0 de la placa 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
byte pin_color = A6;
) no funciona.