码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-01-26 17:25:32      阅读:502      评论:0      收藏:0      [点我收藏+]

标签:raspberry pi   树莓派   步进电机   step motor   

电路连接方式请看另一篇博文:【利用树莓派控制步进电机——pythony语言】

/******************************************************
*   File name: stepMotor.c
*      Author: Jason Dai
*        Date: 2015/01/26
******************************************************/
#include <wiringPi.h>
#include <stdio.h>

#define IN1 0    // wiringPi GPIO0(pin11)
#define IN2 1
#define IN3 2
#define IN4 3

void setStep(int a, int b, int c, int d)
{
	digitalWrite(IN1, a);	
	digitalWrite(IN2, b);	
	digitalWrite(IN3, c);	
	digitalWrite(IN4, d);	
}

void stop()
{
	setStep(0, 0, 0, 0);	
}

void forward(int t, int steps)
{
	int i;

	for(i = 0; i < steps; i++){
		setStep(1, 0, 0, 0);
		delay(t);
		setStep(0, 1, 0, 0);	
		delay(t);
		setStep(0, 0, 1, 0);	
		delay(t);
		setStep(0, 0, 0, 1);	
		delay(t);
	}
}

void backward(int t, int steps)
{
	int i;

	for(i = 0; i < steps; i++){
		setStep(0, 0, 0, 1);
		delay(t);
		setStep(0, 0, 1, 0);	
		delay(t);
		setStep(0, 1, 0, 0);	
		delay(t);
		setStep(1, 0, 0, 0);	
		delay(t);
	}
}

int main(void) {
	if (-1 == wiringPiSetup()) {
		printf("Setup wiringPi failed!");
		return 1;
	}

	/* set mode to output */
	pinMode(IN1, OUTPUT);
	pinMode(IN2, OUTPUT);
	pinMode(IN3, OUTPUT);
	pinMode(IN4, OUTPUT);

	while (1){
		printf("forward...\n");
		forward(3, 256);	
		
		printf("stop...\n");
		stop();
		delay(2000);       // 2s
		
		printf("backward...\n");
		backward(3, 512);  // 512 steps ---- 360 angle	
	
		printf("stop...\n");
		stop();
		delay(2000);       // 2s
	}

	return 0;
}

编译:

gcc stepMotor.c -o stepMotor -lwiringPi

运行:

./stepMotor


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

标签:raspberry pi   树莓派   步进电机   step motor   

原文地址:http://blog.csdn.net/jcdjx/article/details/43152535

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!