Comunicación serial Python y Arduino para velocidades de motores
Enviado por Kitzia Terrazas • 26 de Mayo de 2023 • Práctica o problema • 423 Palabras (2 Páginas) • 134 Visitas
Al realizar la simulación, al tener en 1 el pir, funciona bien, los motores van a la velocidad.
Pero al tener en 0 el pir, solo avanza un motor con las especificaciones de L y R.
Primero va con la velociad de L por un tiempo, y despues va a la velocidad de R por otro tiempo.
No se porque haga eso no le puse ningun delay para que hiciera eso.
Por comentar, creo que este no es un examen para una horaxD.
Codigo Arduino:
int m11 = 11;
int m12 = 10;
int m21 = 9;
int m22 = 6;
int pir = 2;
void setup() {
// put your setup code here, to run once:
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
pinMode(pir, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int valuePIR=digitalRead(pir);
if(valuePIR==HIGH)
{
Serial.println("ENEMIGO DETECTADO");
Serial.println("L100,R33");
delay(1000);
m(100, 33);
}
if(valuePIR==LOW)
{
Serial.println("NO HAY ENEMIGOS");
delay(1000);
if(Serial.available()>0);
{
String message=Serial.readString();//el message es la lectura serial de entrada.
int leftIndex = message.indexOf('L');
int rightIndex = message.indexOf('R');
String left=message.substring(leftIndex+1,message.length());
String right=message.substring(rightIndex+1,message.length());
int leftValue = left.toInt()*255/100;
int rightValue = right.toInt()*255/100;
analogWrite(m11, leftValue);
digitalWrite(m12, LOW);
analogWrite(m11, rightValue);
digitalWrite(m12, LOW);
}
}
}
Codigo Python:
"""
Created on Thu May 25 00:53:02 2023
@author: kitzi
"""
import serial
import time
ser = serial.Serial('COM1', 9600)
while True:
if ser.in_waiting > 0:
mensaje = ser.readline().decode().strip() # Lee el mensaje desde el puerto serial y lo decodifica
print("Mensaje recibido:", mensaje)
if mensaje == "NO HAY ENEMIGOS":
valor = input()
message = 'valor = %s\n' %valor # Lee un mensaje desde la consola
ser.write(message.encode()) # Envía el mensaje al puerto serial
...