L9V Python Comunicación Serial Arduino

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

LENGUAJES DE PROGRAMACIÓN

II Ciclo

Laboratorio 9: Python-Comunicación Serial-Arduino NOTA

Alumnos: Tapia Leiva Ivan Ronaldo

1. Objetivos
● Comprender el uso del módulo Pyserial

● Identificar los conceptos de backend y frontend

● Implementar aplicaciones con comunicación serial

Ejercicio 1: En el VS Code, usando el PlatformIO IDE, prender y apagar un led en el simulador (PICSimLab)
mediante el monitor serial.
Primero abrimos el monitor serial, si no aparece el símbolo del enchufe presionamos F1 y escribimos
PlatformIO: Upload
Lab. N° 9 Python-Comunicación Serial-Arduino

Para el ejercicio 1 tendremos que tener nuestro picsimlab y poner nuestro LEDS, al ejecutar
ponemos la letra A para prender el led, la letra B para apagar.

Ejercicio 2: Solo para este ejercicio, en grupo de 2 descargar el programa realizado en el PlatformIO IDE a un
Arduino real y tomar las capturas como evidencias.

Docente: Armando Sarco Montiel Pág. 1


Lab. N° 9 Python-Comunicación Serial-Arduino

cadena = 'Esto es una cadena'


print(cadena.encode())

b 'Esto es una cadena'

cadena = b'Esto es una cadena'


print(cadena.decode())

Esto es una cadena

Estos ejercicios es mejor tener un Arduino para tener una mejor experiencia

Docente: Armando Sarco Montiel Pág. 2


Lab. N° 9 Python-Comunicación Serial-Arduino
Conexión Python con el Arduino (PICSimLab)
Ejercicio 3: Crear un programa para prender y apagar un led desde el Python. Copiar el programa de abajo,
compilar, analizar y comentar lo que sucede.
import serial as sr
uno = sr.Serial("COM4", 9600) #instanciamos la comunicación serial
while True:
dato = input("Ingrese letra: ")
dato = dato.lower()
if dato == "a":
uno.write(b"a")
elif dato == "b":
uno.write(b"b")
elif dato == "x":
uno.write(b"b")
uno.close() #cerramos la comunicación serial y la dejamos libre
break
else:
print("Letra incorrecta")
print("Programa finalizado")
uno.close()

Conexión Digital Python con el Arduino (PICSimLab) usando el Tkinter


Ejercicio 4: Crear un programa utilizando el Tkinter, para prender y apagar un led desde el Python. Copiar el
programa de abajo, compilar, analizar y comentar lo que sucede.

Docente: Armando Sarco Montiel Pág. 3


Lab. N° 9 Python-Comunicación Serial-Arduino

from tkinter import*


from tkinter import messagebox
import serial as sr
uno = sr.Serial("COM4", 9600) #instanciamos la comunicación serial
root = Tk()#Instanciamos pantalla principal
root.title('Comunicación Serial') #Título de la ventana
root.geometry('200x150') #Configuramos el Ancho x Altura de la ventana
root.config(bg="gray95") #Fondo de la ventana
root.iconbitmap("icono.ico") #Llamamos al archivo de tipo ico
#Función con parámetros
def led(x):
if x==1: #Activa led
uno.write(b"a")
label_0['text'] = "ON"; label_0["bg"]="white"; label_0["fg"]="Black"
c.itemconfig(id, fill="white")
elif x==2: #Apaga led
uno.write(b"b")
label_0['text'] = "OFF"; label_0["bg"]="gray35"; label_0["fg"]="White"
c.itemconfig(id, fill="gray35")
#Función para cerrar la comunicación serial
def al_cerrar():
if messagebox.askokcancel("Salir", "¿Quieres salir?"):
uno.close()
root.destroy()
#Creamos los frames, etiquetas, entradas y botones
fm1 = Frame(root,padx=5,pady=5) #Frame
c = Canvas(fm1,width=80,height=80)
id=c.create_oval(2,2,80,80,outline="gray0",fill="gray32")
label_0 = Label(fm1,width=4,height=1,text="...",font="calibri 16
bold",bd=0,highlightthickness=0)
fm2=Frame(root) #Frame 2
boton_1=Button(fm2,text="ON",fg="white",bg="gray35",font="calibri 18
bold",command=lambda:led(1))
boton_2=Button(fm2,text="OFF",fg="white",bg="gray35",font="calibri 18
bold",command=lambda:led(2))
#Posicionamiento
fm1.pack() #Posicionamiento relativo (pack)
c.grid(row=0, column=0) #Posicionamiento grilla (grid)
label_0.grid(row=0, column=0) #Posicionamiento grilla (grid)
fm2.pack() #Posicionamiento relativo (pack)
boton_1.grid(row=0, column=0, padx=15) #Posicionamiento grilla (grid)
boton_2.grid(row=0, column=1, padx=15) #Posicionamiento grilla (grid)
root.protocol("WM_DELETE_WINDOW", al_cerrar)
root.mainloop() #Bucle que actualiza continuamente la ventana

Docente: Armando Sarco Montiel Pág. 4


Lab. N° 9 Python-Comunicación Serial-Arduino

En este problema lo hice en cmd “Python”, pero se desarrollo con normalidad

Ejercicio 5: Crear un programa utilizando el monitor serial y el PlatformIO IDE, para controlar la velocidad del
ventilador desde el Python. Copiar el programa de abajo, compilar, analizar y comentar lo que sucede.

//Programa en el main.cpp del platformio


#include <Arduino.h>
void setup(){
Serial.begin(9600);
}
void loop(){
if(Serial.available()>0){
int v = Serial.parseInt(); //Recibimos datos de python y lo parseamos a
entero
analogWrite(3,v);
Serial.print("velocidad:");
Serial.print("\t");
Serial.print(v);
}
}

#Programa en el python
import serial
arduino = serial.Serial("COM4", 9600) #instanciamos la comunicación serial
while True:
dato = input("Ingrese velocidad del motor (0-255): ")
if(dato.isdigit()):
if(int(dato)>=0 and int(dato)<=255):
arduino.write(dato.encode())
print(f"La velocidad del motor es: {dato}")
else:
print ("Rango de velocidad incorrecto")

Docente: Armando Sarco Montiel Pág. 5


Lab. N° 9 Python-Comunicación Serial-Arduino
elif dato == "x":
arduino.write(b"0")
arduino.close()
break
else:
print("La velocidad debe ser un número")
print("Programa finalizado")

El “void setup” y “void loop”. Consiste en ingresar la velocidad del motor entre el rango de 0
y 255 y el resultado es lo que aparece en la imagen

Docente: Armando Sarco Montiel Pág. 6

También podría gustarte