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)
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ónExplicación:
Importar librerías (
serial,time).Crear la comunicación serial con el puerto de Arduino.
Esperar 2 segundos para estabilizar la conexión.
Escribir en el puerto con
.write()enviando un byte (ej:b'9').Pausar brevemente antes de cerrar (evita cortar la transmisión).
Código en Arduino (recibe y ejecuta)
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:
Configurar el LED en el pin 13 como salida.
Iniciar comunicación serial a 9600 baudios.
Leer datos entrantes con
Serial.available()ySerial.read().Convertir el carácter a número (ej:
'9'→9).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
Sube el código a tu Arduino.
Ejecuta el script de Python (ajustando el puerto COM).
¡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
Publicar un comentario