[PYTHON] Essayez de déplacer 3 servos avec Raspeye

introduction

J'ai écrit un programme pour contrôler 3 servos avec Python de Raspeye pour un petit kit de développement de robot appelé Bezelie, mais je pense qu'il peut être appliqué à des applications autres que Bezelie. Nous le publierons ici.

Personne cible

――Je voulais exécuter 3 servos ou plus en utilisant Python avec Raspeye.

Fonctionnalité

--Raspai contrôle 3 servos RC.

Préparation

code

bezelie.py



# -*- coding: utf-8 -*-
# Bezelie Python Module for Raspberry Pi
import RPi.GPIO as GPIO
from time import sleep
import smbus
import math

bus = smbus.SMBus(1)
address_pca9685 = 0x40 # If you connect other I2C devices, you might change thi$

# Constants
dutyMax = 490     #
dutyMin = 110     #
dutyCenter = 300  #
steps = 1         #

# Global Valiables
headNow = backNow = stageNow = dutyCenter

# Definitions
def initPCA9685():
  bus.write_byte_data(address_pca9685, 0x00, 0x00)
  freq = 0.9*50
  prescaleval = 25000000.0    # 25MHz
  prescaleval /= 4096.0       # 12-bit
  prescaleval /= float(freq)
  prescaleval -= 1.0
  prescale = int(math.floor(prescaleval + 0.5))
  oldmode = bus.read_byte_data(address_pca9685, 0x00)
  newmode = (oldmode & 0x7F) | 0x10
  bus.write_byte_data(address_pca9685, 0x00, newmode)
  bus.write_byte_data(address_pca9685, 0xFE, prescale)
  bus.write_byte_data(address_pca9685, 0x00, oldmode)
  sleep(0.005)
  bus.write_byte_data(address_pca9685, 0x00, oldmode | 0xa1)

def setPCA9685Duty(channel, on, off):
  channelpos = 0x6 + 4*channel
  try:
    bus.write_i2c_block_data(address_pca9685, channelpos, [on&0xFF, on>>8, off&$
  except IOError:
    pass

def moveServo (id, degree, adj, max, min, speed, now):
  dst = (dutyMin-dutyMax)*(degree+adj+90)/180 + dutyMax
  if speed == 0:
    setPCA9685Duty(id, 0, dst)
    sleep(0.001 * math.fabs(dst-now))
    now = dst
  if dst > max: dst = max
  if dst < min: dst = min
  while (now != dst):
    if now < dst:
      now += steps
      if now > dst: now = dst
    else:
      now -= steps
      if now < dst: now = dst
    setPCA9685Duty(id, 0, now)
    sleep(0.004 * steps *(speed))
  return (now)

def moveHead (degree, speed=1):
  adj = 0       # Head servo adjustment
  max = 490     # Downward limit
  min = 110     # Upward limit
  global headNow
  headNow = moveServo (2, degree, adj, max, min, speed, headNow)

def moveBack (degree, speed=1):
  adj = 0       # Back servo adjustment
  max = 490     # AntiClockwise limit
  min = 110     # Clockwise limit
  global backNow
  backNow = moveServo (1, degree, adj, max, min, speed, backNow)

def moveStage (degree, speed=1):
  adj = 0      # Stage servo adjustment
  max = 490    # AntiClockWise limit
  min = 110    # Clocwise limit
  global stageNow
  stageNow = moveServo (0, degree, adj, max, min, speed,stageNow)

Commentaire

-Pour plus de commodité, les trois servos sont nommés Head, Back et Stage, et moveHead (), moveBack () et moveStage () sont les commandes pour déplacer chacun. -Entrez un angle dans la plage de plus ou moins 90 degrés dans le degré d'argument. 0 est la position centrale. Si vous entrez une valeur positive, elle tournera dans le sens des aiguilles d'une montre. -Si l'argument vitesse est omis, il sera 1, et plus la valeur est élevée, plus le mouvement est lent. Si vous entrez 0, il fonctionnera à la vitesse la plus rapide, mais si vous n'entrez pas time.sleep () d'une longueur appropriée après l'exécution, le processus s'accumulera et le comportement sera étrange. -Le Servo SG90 peut tourner à 180 degrés, mais en raison de la structure du robot, etc., vous voudrez peut-être limiter l'angle de rotation. Dans un tel cas, ajustez max et min pour chaque servo. -Si vous souhaitez affiner la position de centrage du servo, essayez de changer la valeur de adj.

échantillon

Merci

En créant le programme, j'ai fait référence au livre de Takashi Kanamaru «Travail électronique appris avec Raspberry Pi» et à la bibliothèque d'Adafruit. Je voudrais te remercier.

Recommended Posts

Essayez de déplacer 3 servos avec Raspeye
Essayez L Chika avec raspberrypi
Essayez de pêcher le Wakasagi avec Raspberry Pi
GPGPU avec Raspberry Pi
DigitalSignage avec Raspberry Pi
Plantes Mutter avec Raspberry Pi
Visualisons la pièce avec tarte aux râpes, partie 1
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Utilisez vl53l0x avec RaspberryPi (python)
Commande de servomoteur avec Raspberry Pi
Communication série avec Raspberry Pi + PySerial
Configuration du système d'exploitation avec Raspberry Pi Imager
Essayez d'utiliser ArUco avec Raspberry Pi
Construire un serveur VPN avec Raspberry Pie
Utiliser une webcam avec Raspberry Pi
Mesurer la force du signal SIM avec Raspberry Pi
Surveillance des animaux avec Rekognition et Raspberry pi
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Programmation normale avec la programmation Node-RED avec Raspberry Pi 3
Capteur humain amélioré fabriqué avec Raspberry Pi
Exécuter le servomoteur SG-90 avec Raspberry Pi
Travailler avec des capteurs dans Mathematica sur Raspberry Pi
Utiliser le capteur de mouvement PIR avec Raspberry Pi
Faire une minuterie de lavage-séchage avec Raspberry Pi
Modèle Infer Custom Vision avec Raspeye
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Créez un compteur de voiture avec Raspberry Pi
Enregistrement de la valeur d'Inkbird IBS-TH1 avec Raspberry Pi
Travailler avec le GPS en Python pour Raspberry Pi 3
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye
Essayez d'exécuter deepdream
Discord bot raspberry pi zéro avec python [Note]
Programmation média avec Raspeye (préparation audio)
Essayez d'utiliser le code QR avec Raspberry Pi
Profitez du travail électronique avec GPIO de Raspberry Pi
MQTT Radicon Car avec Arduino et Raspberry
Allumez / éteignez votre PC avec Raspberry Pi
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Observez le groupe de météores Futago avec RaspberryPi4
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Application d'analyse des investissements boursiers avec tarte aux framboises
Enregistrement de la valeur d'Inkbird IBS-TH1 mini avec Raspberry Pi
Connectez-vous à MySQL avec Python sur Raspberry Pi
Suivi GPS avec Raspeye 4B + BU-353S4 (Python)
Mesurer la température du processeur de Raspeye avec Python
Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Essayez de gratter avec Python.
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
Exécutez la matrice LED de manière interactive avec Raspberry Pi 3B + sur Slackbot
Utilisez le capteur d'éclairement numérique TSL2561 avec Raspberry Pi
Qu'est-ce que Raspberry Pi?
Utilisation de la voiture 4RM FT-MC-004 d'Akizuki Denshi avec Raspberry Pi