利用树莓派控制步进电机——Python语言

步进电机的优点在于它能够被精确定位,正向或反向一次性转动“一步”,并且也能够连续转动。

#!/usr/bin/env python
#########################################################
#	File name: stepMotor.py
#	   Author: Jason Dai
#	     Date: 2015/01/26
#########################################################
import RPi.GPIO as GPIO
import time

IN1 = 11    # pin11
IN2 = 12
IN3 = 13
IN4 = 15

def setStep(w1, w2, w3, w4):
	GPIO.output(IN1, w1)
	GPIO.output(IN2, w2)
	GPIO.output(IN3, w3)
	GPIO.output(IN4, w4)

def stop():
	setStep(0, 0, 0, 0)

def forward(delay, steps):
	for i in range(0, steps):
		setStep(1, 0, 0, 0)
		time.sleep(delay)
		setStep(0, 1, 0, 0)
		time.sleep(delay)
		setStep(0, 0, 1, 0)
		time.sleep(delay)
		setStep(0, 0, 0, 1)
		time.sleep(delay)

def backward(delay, steps):
	for i in range(0, steps):
		setStep(0, 0, 0, 1)
		time.sleep(delay)
		setStep(0, 0, 1, 0)
		time.sleep(delay)
		setStep(0, 1, 0, 0)
		time.sleep(delay)
		setStep(1, 0, 0, 0)
		time.sleep(delay)

def setup():
	GPIO.setwarnings(False)
	GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
	GPIO.setup(IN1, GPIO.OUT)      # Set pin's mode is output
	GPIO.setup(IN2, GPIO.OUT)
	GPIO.setup(IN3, GPIO.OUT)
	GPIO.setup(IN4, GPIO.OUT)

def loop():
	while True:
		print "backward..."
		backward(0.003, 512)  # 512 steps --- 360 angle

		print "stop..."
		stop()                 # stop
		time.sleep(3)          # sleep 3s

		print "forward..."
		forward(0.005, 512)

		print "stop..."
		stop()
		time.sleep(3)

def destroy():
	GPIO.cleanup()             # Release resource

if __name__ == '__main__':     # Program start from here
	setup()
	try:
		loop()
	except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
		destroy()

运行程序:

python stepMotor.py
时间: 2024-10-01 23:01:00

利用树莓派控制步进电机——Python语言的相关文章

利用树莓派控制步进电机——C语言

电路连接方式请看另一篇博文:[利用树莓派控制步进电机--pythony语言] /****************************************************** * File name: stepMotor.c * Author: Jason Dai * Date: 2015/01/26 ******************************************************/ #include <wiringPi.h> #include <

python语言的流程控制

流程控制 1.python语句的分类2.流程控制相关的分类3.顺序结构4.分支结构5.循环结构6.其他流程控制语句 1.python语句的分类 1.单行代码 一行的python代码 2.代码块/组:以冒号作为开始,用缩进划分相同作用域,这样的结构称之为代码块,是一个整体.作用域是指作用范围.作用区域,使用了相同的缩进,即有相同的作用域.缩进:一个table距离或者四个空格.注意:代码块/组中严格区分空格和table,不能混合使用,必须只使用一种方式缩进! 2.流程控制的分类流程控制:对计算机执行

Python语言学习笔记

获得人生中的成功需要的专注与坚持不懈多过天才与机会.  ——C.W. Wendte Python将很快成为你最喜欢的编程语言! Qt库?  PyQt  Perl-Qt 简单易学,功能强大,高效率的高层数据结构,简单而有效地实现面向对象编程. Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发. 注重的是如何解决问题而不是编程语言的语法和结构. wxPython,Twisted,Boa Constru

广东海洋大学 电子1151 孔yanfei python语言程序设计 第三周

四.流程控制 在这块,Python与其它大多数语言有个非常不同的地方,Python语言使用缩进块来表示程序逻辑(其它大多数语言使用大括号等).例如: if age < 21: print("你不能买酒.") print("不过你能买口香糖.") print("这句话处于if语句块的外面.") 这个代码相当于c语言的: if (age < 21) { print("你不能买酒.") print("不过你能买

Python语言及操作系统等《转》

转自:https://github.com/taizilongxu/interview_python Python语言特性 1 Python的函数参数传递 2 Python中的元类(metaclass) 3 @staticmethod和@classmethod 4 类变量和实例变量 5 Python自省 6 字典推导式 7 Python中单下划线和双下划线 8 字符串格式化:%和.format 9 迭代器和生成器 10 *args and **kwargs 11 面向切面编程AOP和装饰器 12

Python语言特性

Python语言特性 1 Python的函数参数传递 看两个例子: Python 1 2 3 4 5 a = 1 def fun(a): a = 2 fun(a) print a  # 1 Python 1 2 3 4 5 a = [] def fun(a): a.append(1) fun(a) print a  # [1] 所有的变量都可以理解是内存中一个对象的"引用",或者,也可以看似c中void*的感觉. 这里记住的是类型是属于对象的,而不是变量.而对象有两种,"可更

极客大讲堂:手把手教你用树莓派控制红绿灯

涉及硬件:树莓派以及相关套件.LED红绿灯 涉及知识:电路实验板.CanaKit 当准备好以上,我们就可以开始啦.使用树莓派进行LED原型控制. 首先要明白的是,接入所有的电线.电阻器以及工具包附带的指示灯需要谨慎操作,毕竟如果你设置操作不当将有可能损坏你的硬件. 为了简化与树莓派和LED的接触,也为了方便编写控制代码,我决定编写一个叫做Pi交通灯的小玩意,这是用树莓派控制LED的第一步. 有了这个“红绿灯”之后,你要做的就只是把这个小装置直接插到树莓派的GPIO接口上.你不需要担心连接到线路板

树莓派学习笔记——Python SQLite插入温度记录

0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法,由于网上资料众多,重复部分不再复述只做到具体情况具体分析. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔记--定时向yeelink上传树莓派CPU温度] [树莓派学习笔记--SQLite操作简述] 1 创建数据库和空表

selenium2自动化测试实战--基于Python语言

自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 集成测试是在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试.重点是检查模块之间的接口是否正确. 1.1.3 系统测试 系统测试是针对整个产品系统进行的测试,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求. 1.1.4 验收测试 验收测试是部署软