JETson 舵机控制

1舵机驱动

参考博客:Jetson nano驱动舵机(非常简单!)_Wilbur11的博客-CSDN博客

SCL接GPIO5

SDA接GPIO3

vcc接3.3v

v+接5v,v+也可以通过控制器外接电源,但外接的电源也是5v

接线图

此处TX2与nano的GPIO接口相同 

 

2 环境配置

sudo pip3 install -U \ adafruit-circuitpython-busdevice==5.1.2 \ adafruit-circuitpython-motor==3.3.5 \ adafruit-circuitpython-pca9685==3.4.1 \ adafruit-circuitpython-register==1.9.8 \ adafruit-circuitpython-servokit==1.3.8 \ Adafruit-Blinka==6.11.1 \ Adafruit-GPIO==1.0.3 \ Adafruit-MotorHAT==1.4.0 \ Adafruit-PlatformDetect==3.19.6 \ Adafruit-PureIO==1.1.9 \ Adafruit-SSD1306==1.6.2

查看设备

sudo i2cdetect -y -r 1

出现下面内容,则匹配成功 

测试代码

from adafruit_servokit import ServoKit  #引入PCA9685库

kit = ServoKit(channels=16)  #明确PCA9685的舵机控制数
kit.servo[0].angle = 90  #channel0上的舵机旋转90。
kit.servo[0].angle = 90  #channel0上的舵机旋转90。

疯狂摇头丸

import time

from adafruit_servokit import ServoKit


kit = ServoKit(channels=16)


while True:
    for i in range(0,180,1):
        kit.servo[0].angle =i
        kit.servo[1].angle =i
        time.sleep(0.01) 

    for i in range(180,0,-1):
        kit.servo[0].angle =i
        kit.servo[1].angle =i
        time.sleep(0.01)

3舵机键盘控制

import time
import cv2
from adafruit_servokit import ServoKit

kit = ServoKit(channels=16)

angl = 90
tilt = 90
step = 4
kit.servo[0].angle =angl
kit.servo[1].angle =tilt

cam = cv2.VideoCapture('rtsp://admin:JGSYS123@192.168.31.123/Streaming/Channels/2')
width = cam.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cam.get(cv2.CAP_PROP_FRAME_HEIGHT)

fnt = cv2.FONT_HERSHEY_COMPLEX
while True:
	ret, frame = cam.read()

	keyCode = cv2.waitKey(0) & 0xFF
	#水平旋转控制
	if keyCode == ord('a'):
		angl = angl - step
		if angl < 0:
			angl = 0
			frame = cv2.putText(frame, "out of range",(int(width/3), int(height/2)), fnt, 1, [0, 0, 255],2)
			kit.servo[0].angle = angl
		kit.servo[0].angle = angl
	elif keyCode == ord('d'):
		angl = angl + step
		if angl > 180:
			angl = 180
			frame = cv2.putText(frame, "out of range", (int(width/3), int(height/2)), fnt, 1, [0, 0, 255],2)
			kit.servo[0].angle = angl
		kit.servo[0].angle = angl
	# 垂直旋转控制
	elif keyCode == ord('w'):
		tilt = tilt + step
		if tilt > 180:
			tilt = 180
			frame = cv2.putText(frame, "out of range", (int(width/3), int(height/2)), fnt, 1, [0, 0, 255],2)
			kit.servo[1].angle = tilt
		kit.servo[1].angle = tilt
	elif keyCode == ord('s'):
		tilt = tilt - step
		if tilt < 0:
			tilt = 0
			frame = cv2.putText(frame, "out of range", (int(width/3), int(height/2)), fnt, 1, [0, 0, 255],2)
			kit.servo[1].angle = tilt
		kit.servo[1].angle = tilt
	
	elif keyCode == ord('q'):
		break

	# 显示视频流
	cv2.imshow('cap1', frame)


cam.release()
cv2.destroyAllWindows()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetson是一款嵌入式计算平台,通常用于开发机器人、自动驾驶和其他智能设备。如果您想要控制舵机,通常需要使用外部电路和控制芯片,例如PWM控制器。 以下是一些步骤,可以帮助您在Jetson上使用PWM控制器控制舵机: 1. 购买PWM控制器和适合您的舵机的供电电池。您可以在市场上购买一些常见的PWM控制器,例如PCA9685或者PWM驱动板。 2. 将舵机连接到PWM控制器,将PWM控制器连接到Jetson的GPIO引脚。具体的连接方式取决于您所使用的PWM控制器和舵机类型。请参考PWM控制器和舵机的说明书,以确定正确的连接方式。 3. 编写控制舵机的软件代码。您可以使用Python或其他编程语言编写代码,以便在Jetson上控制PWM控制器。例如,在Python中,您可以使用`RPi.GPIO`库来控制GPIO引脚,例如: ```python import RPi.GPIO as GPIO import time # 设置GPIO引脚 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) # 控制GPIO引脚输出PWM信号 p = GPIO.PWM(18, 50) # 设定PWM频率为50Hz p.start(0) p.ChangeDutyCycle(7.5) # 设定舵机转动角度 time.sleep(1) p.stop() # 清除GPIO引脚状态 GPIO.cleanup() ``` 上述代码中,`GPIO.setmode(GPIO.BCM)`设置GPIO引脚模式为BCM模式,`GPIO.setup(18, GPIO.OUT)`设置GPIO引脚为输出模式,`GPIO.PWM(18, 50)`初始化PWM对象,`p.start(0)`启动PWM输出,`p.ChangeDutyCycle(7.5)`调整PWM占空比,从而控制舵机转动角度,`time.sleep(1)`等待1秒钟,然后停止PWM输出。 注意,在Jetson上使用GPIO引脚控制PWM输出需要进行一些配置。您可以参考Jetson的GPIO库,例如Jetson.GPIO,以了解更多相关信息。 4. 运行代码,控制舵机转动。您可以使用终端或者其他界面运行代码。 希望这些步骤能够帮助您在Jetson控制舵机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值