Control de servo y cámara con control PS4 en Raspberry Pi

A continuación se presentará como realizar el Control de servo y cámara con control PS4 en Raspberry Pi, uniendo el código del blog 1 (Control de servo con Raspberry Pi) y blog 2 (Como conectar control de PS4 con Raspberry Pi), además; se agregará una cámara lo cual va a ser controlada con el movimiento de los servos.

Materiales:

  • Los utilizados en los blogs 1 y 2
  • 1 cámara para Raspberry Pi, en nuestro caso se utilizó la rev 1.3 de 5MP

Pasos a seguir:

1. Tener habilitado el uso de la cámara en la raspberry.

   1.1. En la terminal ejecutar el siguiente código "sudo raspi-config"

   1.2.  Seleccionar "Interface Options"

Figura 1. Raspi-Config.

   1.3.  Luego seleccionar la opción I1 y habilitarla.

Figura 2. Opciones de "Interface options"

2.Progama en python

from pyPS4Controller.controller import Controller

import picamera

from gpiozero import AngularServo

from time import sleep 

from gpiozero.pins.pigpio import PiGPIOFactory

factory = PiGPIOFactory()

servo180 = AngularServo(12, min_pulse_width=0.5/1000, max_pulse_width=2.3/1000, pin_factory=factory)

servo360 = AngularServo(13, min_pulse_width=0.5/1000, max_pulse_width=2.5/1000, pin_factory=factory)

servo360.angle = 42

servo180.angle = 0

angulo = 0

picamera.PiCamera ().start_preview()

class MyController(Controller):

    def __init__(self, **kwargs):

        Controller.__init__(self, **kwargs)

    def on_down_arrow_press(self):

        global angulo

        if angulo < 90:

            angulo = angulo + 10

            servo180.angle = angulo 

    def on_up_arrow_press(self):

        global angulo

        if angulo > -90:

            angulo = angulo - 10

            servo180.angle = angulo

    def on_right_arrow_press(self):

        servo360.angle = 90

        sleep(0.2)

        servo360.angle = 42

    def on_left_arrow_press(self):

        servo360.angle = -90

        sleep(0.2)

        servo360.angle = 42

controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False)

# you can start listening before controller is paired, as long as you pair it within the timeout window

controller.listen(timeout=60)


Diagrama de conexiones:

Figura 3. Diagrama de conexiones.

Video:



Referencias:

  • https://picamera.readthedocs.io/en/release-1.13/recipes1.html

Comentarios

Entradas populares