49. Ejemplo 1: Envió de datos de PYTHON (Prende Led) hacia el ARDUINO - Teoría

 POST: Control Hardware con Python y Arduino – Guía Básica

📌 Tres.
📌 Envío de datos a través del puerto serial.

Ahora vamos a enviar datos desde Python hacia Arduino para controlar un LED. Este ejemplo es la base para proyectos más complejos: encender motores, activar puentes H, controlar luminarias, enviar mensajes a un GSM, activar cerraduras electrónicas, y mucho más.

¿Por qué empezar con un LED?
Porque dominar este concepto te permite escalar a cualquier actuador o sistema de comunicación.


Código en Python (envía datos)

python
import serial
import time

# Configuración del puerto serial (ajusta el puerto de tu Arduino)
arduino = serial.Serial('COM3', 9600)  # En Linux/Mac: '/dev/ttyUSB0'
time.sleep(2)  # Espera a que se establezca la comunicación

# Envía un carácter (ejemplo: '9')
arduino.write(b'9')  # La 'b' indica que enviamos bytes

time.sleep(0.5)  # Pequeña pausa para asegurar el envío
arduino.close()  # Cierra la conexión

Explicación:

  1. Importar librerías (serialtime).

  2. Crear la comunicación serial con el puerto de Arduino.

  3. Esperar 2 segundos para estabilizar la conexión.

  4. Escribir en el puerto con .write() enviando un byte (ej: b'9').

  5. Pausar brevemente antes de cerrar (evita cortar la transmisión).


Código en Arduino (recibe y ejecuta)

arduino
int ledPin = 13;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {  // Si hay datos en el puerto serial
    char dato = Serial.read();   // Lee el byte recibido

    // Si el dato es un número entre '1' y '9'
    if (dato >= '1' && dato <= '9') {
      int veces = dato - '0';  // Convierte el carácter a entero

      // Enciende y apaga el LED el número de veces indicado
      for (int i = 0; i < veces; i++) {
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
      }
    }
  }
}

Explicación:

  1. Configurar el LED en el pin 13 como salida.

  2. Iniciar comunicación serial a 9600 baudios.

  3. Leer datos entrantes con Serial.available() y Serial.read().

  4. Convertir el carácter a número (ej: '9' → 9).

  5. Ejecutar un bucle que enciende/apaga el LED según el número recibido.


Notas clave

✅ Formato de envío: En Python, usamos b'9' para enviar un byte.
✅ Tiempo de espera: Incluir time.sleep() después de escribir asegura que el dato se transmita completamente antes de cerrar.
✅ Escalabilidad: Puedes adaptar este código para enviar múltiples valores (ej: "20" se envía como dos bytes y se decodifica en Arduino).


Prueba el ejemplo

  1. Sube el código a tu Arduino.

  2. Ejecuta el script de Python (ajustando el puerto COM).

  3. ¡El LED en el pin 13 parpadeará según el número enviado!

¿Interesado en controlar relays, motores o integrar GSM? ¡Comenta y compartimos más ejemplos!

🔗 Código completo disponible en GitHub: [enlace ficticio – personaliza con tu repo]

Comentarios

Entradas populares de este blog

¿Qué es el Modelo OSI?

bit -El codigo ASCII

38. Tema 1: Protocolos de comunicación.