Leer y escribir digital utilizando el Arduino Uno

Digital Read and Write Using the Arduino Uno

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

  1. Arduino Uno con cable USB
  2. LED y una resistencia de 220 ohmios (para ejemplos de salida)
  3. Presione el botón y una resistencia de 10k-ohmios (para ejemplos de entrada)
  4. Cables de placa y jersey
  5. 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: Cualquiera INPUT, INPUT_PULLUP, o OUTPUT.

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: Cualquiera HIGH (5v) o LOW (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 o LOW 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 ify 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 o INPUT_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!

Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.