Cómo conectar el motor de corriente continua (3V) con la Raspberry Pi 3

0

Estoy construyendo un sistema de alerta de accidentes. Estoy controlando la velocidad del motor de CC en función de la distancia medida por los sensores ultrasónicos. Hasta ahora, he interconectado el sensor ultrasónico con el Pi, pero no puedo escribir código para el motor en eso. Por ejemplo. Supongamos que ckt. y el motor está en marcha. Si la distancia medida llega a menos de 15 cm, entonces el motor debe disminuir su velocidad un poco más y, si es inferior a 10 cm, el motor debe detenerse. Luego, el sensor ultrasónico debe medir la distancia nuevamente y, si se encuentra libre, el motor debe arrancar nuevamente.

Estoy haciendo las cosas de programación en python y debajo está el código que he escrito hasta ahora pero no he comprobado: NOTA: el motor solo se detiene y arranca según el código, pero quiero variaciones rápidas ... ¿cómo hacerlo?

import RPi.GPIO as GPIO              
import time       
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)                 
TRIG = 17
ECHO = 27
led = 22
m11=16
m12=12
GPIO.setup(TRIG,GPIO.OUT)               
GPIO.setup(ECHO,GPIO.IN)                   # initialize GPIO Pin as input
GPIO.setup(led,GPIO.OUT)                  
GPIO.setup(m11,GPIO.OUT)
GPIO.setup(m12,GPIO.OUT)
GPIO.output(led, 1)
time.sleep(5)
def stop():
    print "stop"
    GPIO.output(m11, 0)
    GPIO.output(m12, 0)
 def forward():
    GPIO.output(m11, 1)
    GPIO.output(m12, 0)
    print "Forward"

 forward()
count=0
while True:
 i=0
 avgDistance=0
 for i in range(5):
  GPIO.output(TRIG, False)                
  time.sleep(0.1)                                   

  GPIO.output(TRIG, True)                  
  time.sleep(0.00001)                          
  GPIO.output(TRIG, False)                 
  while GPIO.input(ECHO)==0:             #condition checking for low
       GPIO.output(led, False)             
  pulse_start = time.time()
  while GPIO.input(ECHO)==1:                 #condition checking for high
       GPIO.output(led, False) 
  pulse_end = time.time()
  pulse_duration = pulse_end - pulse_start 
  distance = pulse_duration * 17150         #17150 (34300/2) to get distance
  distance = round(distance,2)                 
  avgDistance=avgDistance+distance

 avgDistance=avgDistance/5
 print avgDistance
 flag=0

if avgDistance < 15:      #Check whether the distance is within 15 cm range
    count=count+1
    stop()
    time.sleep(2)
if (count%3 ==1) & (flag==0):
 forward()
flag=1
else
time.sleep(2)
forward()
flag=1
GPIO.cleanup()

Por favor, sugiere la codificación.

    
pregunta Rishabh Gupta

0 respuestas

Lea otras preguntas en las etiquetas