El Arduino Uno proporciona la capacidad de interactuar con el mundo real utilizando sus pines digitales. Puede usar estos pines para controlar dispositivos como LED, motores y relés, o leer entradas de sensores, botones e interruptores. Este tutorial explicará cómo configurar alfileres digitales, realizar operaciones de lectura y escritura, y utilizar if
Declaraciones para decisiones lógicas en sus proyectos.
Lo que necesitarás
- Arduino Uno con cable USB
- LED y una resistencia de 220 ohmios (para ejemplos de salida)
- Presione el botón y una resistencia de 10k-ohmios (para ejemplos de entrada)
- Cables de placa y jersey
- Una computadora con el Arduino IDE instalado
Paso 1: Configuración de alfileres digitales
Modos de pin digital
Arduino Uno tiene 14 pines digitales (D0-D13). Estos pines se pueden configurar como:
- Aporte: Leer señales de sensores o interruptores.
- Producción: Para controlar LED, motores u otros actuadores.
Usar el pinMode()
función para establecer el modo de un pin en el setup()
función:
pinMode(pinNumber, mode);
-
pinNumber
: El PIN que desea configurar (por ejemplo, 2, 3, etc.). -
mode
: CualquieraINPUT
,INPUT_PULLUP
, oOUTPUT
.
Paso 2: Escribir a un PIN digital
Puedes controlar dispositivos escribiendo HIGH
o LOW
a un pin de salida usando el digitalWrite()
función:
digitalWrite(pinNumber, value);
-
value
: CualquieraHIGH
(5v) oLOW
(0V).
Ejemplo: parpadeando un LED
Aquí está cómo parpadear un LED conectado al PIN 13:
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(ledPin, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
Paso 3: Leyendo de un PIN digital
Para leer el estado de un pin, use el digitalRead()
función:
int state = digitalRead(pinNumber);
-
state
: SeráHIGH
oLOW
basado en la señal de entrada.
Ejemplo: leer un botón presione
Conecte un botón Push al pin 2 con una resistencia desplegable (10k-ohm). Cuando se presiona, el botón enviará un HIGH
señal.
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(buttonPin, INPUT); // Set pin 2 as an input
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read the button state
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
} else {
digitalWrite(ledPin, LOW); // Turn off the LED otherwise
}
}
Paso 4: Usando if
Declaraciones con alfileres digitales
if
Las declaraciones le permiten crear una lógica condicional en su programa. Combine las lecturas y escrituras digitales para realizar acciones basadas en entradas.
Ejemplo: alternar un led en el botón Presione
Este boceto presenta el estado LED cada vez que se presiona el botón:
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool currentButtonState = digitalRead(buttonPin);
if (currentButtonState == HIGH && lastButtonState == LOW) {
ledState = !ledState; // Toggle the LED state
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
lastButtonState = currentButtonState; // Update the button state
delay(50); // Debounce delay
}
Paso 5: Uso avanzado con operaciones lógicas
Puedes usar múltiples if
declaraciones, else if
y operadores lógicos (&&
, ||
, etc.) para crear comportamientos más complejos.
Ejemplo: control de múltiples entradas
Controlar un LED basado en los estados de dos botones:
#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool button1State = digitalRead(button1);
bool button2State = digitalRead(button2);
if (button1State == HIGH && button2State == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
} else {
digitalWrite(ledPin, LOW); // Turn off LED otherwise
}
}
Solución de problemas
-
LED no se ilumina:
- Asegúrese de que el LED esté conectado correctamente (pierna larga al pin positivo).
- Use una resistencia de 220 ohmios para evitar daños.
-
El botón no responde:
- Verifique el cableado adecuado con una resistencia desplegable o pull-up.
- Verifique que el PinMode esté configurado en
INPUT
oINPUT_PULLUP
.
-
Problemas de desbloqueo:
- Utilice un pequeño retraso o implementa un mecanismo de desbloqueo de software para manejar el ruido de la señal de los botones mecánicos.
Conclusión
Has aprendido a realizar operaciones digitales de lectura y escritura con Arduino Uno, Configurar modos PIN y usar if
declaraciones para la lógica condicional. Estas habilidades fundamentales le permiten controlar una amplia variedad de componentes de hardware y crear proyectos interactivos y receptivos. ¡Experimente aún más combinando múltiples entradas y salidas para un comportamiento más complejo!