关于树莓派控制电机--Python

一个月前开始玩树莓派3,由于树莓派是基于linux系统,用Python语言来控制。所以入门Python语言,当然最爽的就是驱动电机,根据自己的想法来控制。不得不说,Python语言控制很有优势,代码简单而且没有很多繁琐的逻辑。所以近些年他上升的快也是有道理的。一个让我印象最深的就是不需要先变量声明,跟C语言完全不一样。据了解,如果做游戏,该语言是不二之选。最后将电机的控制整理如下:

#!/usr/bin/python

#coding: utf8  

import RPi.GPIO as GPIO
import time
import sys
from array import *

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

steps = int(sys.argv[1]);
clockwise = int(sys.argv[2]);

arr = [0,1,2,3];
if clockwise!=1:
arr = [3,2,1,0];

ports = [40,38,36,35] # GPIO 21(Pin 40) GPIO 20(Pin 38) GPIO 16(Pin 36) GPIO 19(Pin 35)

for p in ports:
GPIO.setup(p,GPIO.OUT)

for x in range(0,steps):
for j in arr:
time.sleep(0.01)
for i in range(0,4):
if i == j:
GPIO.output(ports[i],True)
else:
GPIO.output(ports[i],False)

运行方法:执行 python motor.py 90 0 可以顺时针转动大约80度。
执行 python motor.py 90 1 则可逆时针转动大约80度。

说明:该程序可以用来控制小电流的步进电机,也可以用来控制无刷电机(只需要将节拍改掉即可)
也可参考下面的代码,利用L298N驱动板来控制,并实现PWM调控。树莓派的sleep是毫秒级的。

import RPi.GPIO as gpio
import time, sys
#我用的第12个引脚
pin = 12 
gpio.setmode(gpio.BOARD)
gpio.setup(pin, gpio.OUT)
#频率设置为400Hz
p = gpio.PWM(pin, 400)
p.start(0)
#占空比从10开始,逐渐加到90
dc = 10
for i in range(40):
    dc += 2
    print 'dc:', dc
    p.ChangeDutyCycle(dc)
    time.sleep(0.3);
p.stop()
gpio.cleanup()

树莓派的GPIO

http://hugozhu.myalert.info/2013/03/16/03-16-use-raspberry-pi-control-step-motor-rotate-webcam.html该链接是讲关于步进电机控制摄像头的,非常不错。

  • 3
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值