[PYTHON] Versuchen Sie, 3 Servos mit Raspeye zu bewegen

Einführung

Ich habe ein Programm zur Steuerung von 3 Servos mit Python von Raspeye für ein kleines Roboterentwicklungskit namens Bezelie geschrieben, aber ich denke, dass es auf andere Anwendungen als Bezelie angewendet werden kann. Wir werden es hier veröffentlichen.

Zielperson

――Ich wollte 3 oder mehr Servos mit Python mit Raspeye ausführen.

Charakteristisch

--Raspai steuert 3 RC-Servos.

Vorbereitung

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)

Kommentar

Stichprobe

Vielen Dank

Bei der Erstellung des Programms bezog ich mich auf Takashi Kanamarus Buch "Elektronische Arbeit mit Raspberry Pi gelernt" und Adafruits Bibliothek. Ich möchte Ihnen gerne danken.

Recommended Posts

Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Probieren Sie L Chika mit Himbeerpi
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Mutter pflanzt mit Raspberry Pi
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Versuchen Sie es mit ArUco mit Raspberry Pi
Aufbau eines VPN-Servers mit Raspberry Pie
Verwenden einer Webkamera mit Raspberry Pi
Messen Sie die SIM-Signalstärke mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Versuchen Sie, den RSS-Feed von arXiv mit Python von Raspeye auf Twitter zu twittern
Versuchen Sie, Deepdream auszuführen
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Genießen Sie die elektronische Arbeit mit GPIO von Raspberry Pi
MQTT Radicon Car mit Arduino und Himbeere
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Aktieninvestitionsanalyse-App mit Himbeerkuchen gemacht
Protokollieren des Werts von Inkbird IBS-TH1 mini mit Raspberry Pi
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
Messen Sie die CPU-Temperatur von Raspeye mit Python
Versuchen Sie, ein Objekt mit RaspberryPi zu erkennen ~ Teil 1: Vergleich der Erkennungsgeschwindigkeit ~
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Versuchen Sie es mit Python.
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Was ist Raspberry Pi?
Mit Akizuki Denshis 4WD Auto FT-MC-004 mit Raspberry Pi