ultrasonico raspberry a arduino [关闭]

问题描述 投票:0回答:0

Como hago que el ultrasónico mande los datos al Arduino y este los lea para mover unos motores sin tener que yo poner el valor, me pide que mande a mano el texto y nose como hacer que la lectura del ultrasoco se mande directamente y sea leído , 覆盆子上的 mi código

import time
import serial
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
pulse_start = 0
comando = "0"
TRIG = 23
ECHO = 24

ser = serial.Serial("/dev/ttyACM0", baudrate=9600) #Modificar el puerto serie de ser necesario
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, False)
try:
    while True:
        GPIO.output(TRIG, False)
        print ("Waiting For Sensor To Settle")
        time.sleep(2)
        
        GPIO.output(TRIG, True)
        time.sleep(0.00001)
        GPIO.output(TRIG, False)
        
        while GPIO.input(ECHO)==0:
            pulse_start = time.time()
        
        while GPIO.input(ECHO)==1:
            pulse_end = time.time()
        
        pulse_duration = pulse_end - pulse_start
        
        distance = pulse_duration * 17150
        
        distance = round(distance, 2)
        print (distance)
        
        if (distance <=  4):
            comando = comando + "\n"
            comandoBytes = comando.encode()
            ser.write(comandoBytes)
            time.sleep(0.1)
            read = ser.write('4')
            print(read)

except KeyboardInterrupt:
    print("\nInterrupcion por teclado")
except ValueError as ve:
    print(ve)
    print("Otra interrupcion")
finally:
    ser.close()

我在 Arduino 上的代码

char a;
String inputString = "";
bool stringComplete = false;
#include <AFMotor.h>
AF_DCMotor motorda(1);
AF_DCMotor motord(2);
AF_DCMotor motori(3);
AF_DCMotor motoria(4);
void setup(){
  motorda.run(RELEASE);
  motord.run(RELEASE);
  motori.run(RELEASE);
  motoria.run(RELEASE);
  inputString.reserve(200);
  Serial.begin(9600);
}
void loop(){
  if (stringComplete){

    if(inputString.equals("off")){ 
        motorda.setSpeed(0);
        motord.setSpeed(0);
        motoria.setSpeed(0);
        motori.setSpeed(0);
        Serial.println("Apagado");
    }
    else if (inputString.equals("on")){
      avanzar();
      Serial.println("Encendido");
    }
    inputString = "";
    stringComplete = false;
    }
}
void giroder(){
  motorda.run(BACKWARD);
  motorda.setSpeed(80);
  motord.run(BACKWARD);
  motord.setSpeed(150);
  motoria.run(FORWARD);
  motoria.setSpeed(150);
  motori.run(FORWARD);
  motori.setSpeed(90);
}
void giroizq(){
  motorda.run(FORWARD);
  motorda.setSpeed(180);
  motord.run(FORWARD);
  motord.setSpeed(180);
  motoria.run(BACKWARD);
  motoria.setSpeed(180);
  motori.run(BACKWARD);
  motori.setSpeed(180);
}
void avanzar(){
  motorda.run(FORWARD);
  motorda.setSpeed(80);
  motord.run(FORWARD);
  motord.setSpeed(150);
  motori.run(FORWARD);
  motori.setSpeed(150);
  motoria.run(FORWARD);
  motoria.setSpeed(150);
}
void retroseder(){
   motorda.run(BACKWARD);
  motorda.setSpeed(180);
  motord.run(BACKWARD);
  motord.setSpeed(180);
  motori.run(BACKWARD);
  motori.setSpeed(180);
  motoria.run(BACKWARD);
  motoria.setSpeed(180);
}
void serialEvent(){
  while (Serial.available()) {
    char inChar = (char)Serial.read();
     if (inChar == '\n'){
       stringComplete = true;
     }
     else{
      inputString += inChar;
     }
  }
}

que el valor que lea el ultrasoco haga que funcionen los codigos del arduino

python-3.x arduino-uno raspberry-pi4
© www.soinside.com 2019 - 2024. All rights reserved.