Python con Arduino + Interfaz
Controlar LED con Tkinter y Arduino
✅ Objetivo: Crear una interfaz gráfica con Tkinter para controlar un LED conectado al Arduino.
1️⃣ Materiales Necesarios
- Placa Arduino UNO (o compatible)
- Cable USB para conectar el Arduino
- Python 3 instalado
- Tkinter (ya viene con Python por defecto)
- PySerial instalado (
pip install pyserial
)
2️⃣ Código en Arduino (IDE de Arduino)
Antes de crear la interfaz gráfica en Python, debemos programar el Arduino para recibir comandos Seriales.
📌 Código para Arduino:
void setup() {
Serial.begin(9600); // Iniciar comunicación serial
pinMode(13, OUTPUT); // Configurar LED en el pin 13 como salida
}
void loop() {
if (Serial.available()) { // Si hay datos en el puerto serie
char comando = Serial.read(); // Leer el comando recibido
if (comando == '1') {
digitalWrite(13, HIGH); // Encender LED
}
else if (comando == '0') {
digitalWrite(13, LOW); // Apagar LED
}
}
}
✅ Sube este código al Arduino con el Arduino IDE.
3️⃣ Crear la Interfaz Gráfica con Tkinter en Python
Ahora vamos a crear la interfaz gráfica en Python usando Tkinter.
1️⃣ Crear un archivo Python y llamarlo control_led_tkinter.py
.
2️⃣ Copiar este código:
import serial
import time
import tkinter as tk
from tkinter import messagebox
# Intenta conectar con el Arduino en el puerto correcto
try:
arduino = serial.Serial('COM3', 9600) # Cambia 'COM3' si es necesario
time.sleep(2) # Esperar que la conexión se establezca
except:
messagebox.showerror("Error", "No se pudo conectar con Arduino. Verifica el puerto COM.")
exit()
# Función para encender el LED
def encender_led():
arduino.write(b'1') # Enviar '1' al Arduino
label_estado.config(text="LED ENCENDIDO", fg="green")
# Función para apagar el LED
def apagar_led():
arduino.write(b'0') # Enviar '0' al Arduino
label_estado.config(text="LED APAGADO", fg="red")
# Crear la ventana de Tkinter
ventana = tk.Tk()
ventana.title("Control de LED con Tkinter")
ventana.geometry("300x200") # Tamaño de la ventana
# Etiqueta de estado
label_estado = tk.Label(ventana, text="Estado: Desconocido", font=("Arial", 12))
label_estado.pack(pady=10)
# Botón para encender el LED
btn_encender = tk.Button(ventana, text="Encender LED", command=encender_led, bg="green", fg="white", font=("Arial", 12))
btn_encender.pack(pady=5)
# Botón para apagar el LED
btn_apagar = tk.Button(ventana, text="Apagar LED", command=apagar_led, bg="red", fg="white", font=("Arial", 12))
btn_apagar.pack(pady=5)
# Botón para salir
btn_salir = tk.Button(ventana, text="Salir", command=ventana.quit, font=("Arial", 12))
btn_salir.pack(pady=10)
# Iniciar el bucle de Tkinter
ventana.mainloop()
4️⃣ Explicación del Código
🔹 1. Conectar con Arduino
try:
arduino = serial.Serial('COM3', 9600) # Cambia 'COM3' si es necesario
time.sleep(2) # Esperar que la conexión se establezca
except:
messagebox.showerror("Error", "No se pudo conectar con Arduino. Verifica el puerto COM.")
exit()
✔️ Intenta conectar con Arduino en el puerto COM3
.
✔️ Si no encuentra el Arduino, muestra un mensaje de error y cierra el programa.
🔹 2. Funciones para Encender y Apagar el LED
def encender_led():
arduino.write(b'1') # Enviar '1' al Arduino
label_estado.config(text="LED ENCENDIDO", fg="green")
def apagar_led():
arduino.write(b'0') # Enviar '0' al Arduino
label_estado.config(text="LED APAGADO", fg="red")
✔️ arduino.write(b'1')
→ Envía '1' al Arduino para encender el LED.
✔️ arduino.write(b'0')
→ Envía '0' al Arduino para apagar el LED.
✔️ label_estado.config(...)
→ Cambia el texto de la interfaz según el estado del LED.
🔹 3. Interfaz Gráfica con Tkinter
ventana = tk.Tk()
ventana.title("Control de LED con Tkinter")
ventana.geometry("300x200") # Tamaño de la ventana
✔️ Crea una ventana de Tkinter con el título "Control de LED con Tkinter"
.
🔹 4. Botones para Encender y Apagar
btn_encender = tk.Button(ventana, text="Encender LED", command=encender_led, bg="green", fg="white", font=("Arial", 12))
btn_encender.pack(pady=5)
btn_apagar = tk.Button(ventana, text="Apagar LED", command=apagar_led, bg="red", fg="white", font=("Arial", 12))
btn_apagar.pack(pady=5)
✔️ Botón "Encender LED"
→ Llama a la función encender_led()
.
✔️ Botón "Apagar LED"
→ Llama a la función apagar_led()
.
🔹 5. Iniciar la Interfaz
ventana.mainloop()
✔️ Ejecuta la interfaz gráfica hasta que el usuario la cierre.
5️⃣ Ejecución del Programa
Para ejecutar el programa, abre CMD en la carpeta donde guardaste control_led_tkinter.py
y escribe:
python control_led_tkinter.py
Si todo está correcto, se abrirá una ventana con los botones para encender y apagar el LED.
6️⃣ Resultado Final
Cuando presionas los botones:
"Encender LED"
→ Arduino recibe '1' y enciende el LED."Apagar LED"
→ Arduino recibe '0' y apaga el LED.- La interfaz cambia el texto a
"LED ENCENDIDO"
o"LED APAGADO"
.
7️⃣ Mejoras Opcionales 🚀
📌 Agregar más LEDs y botones para controlarlos individualmente.
📌 Mostrar el estado del LED leyendo la respuesta del Arduino.
📌 Usar imágenes en los botones en lugar de texto.
🔹 Conclusión
Este método es mucho más interactivo que escribir en la consola. Ahora puedes controlar el Arduino con botones en una interfaz gráfica creada con Tkinter. 🎛️✨
Si tienes dudas o quieres mejorar el código, dime y te ayudo. 🚀😊
Comments
Post a Comment