树莓派外设开发——舵机控制

1.综述
普通舵机的角度控制需要用到PWM实现,这里用到Linux定时器产生PWM波形,关于Linux定时器,这篇文章有一个简单的介绍

Linux定时器
舵机控制原理大致如下:
在这里插入图片描述

2.代码

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
#include <wiringPi.h>
#define sg90 7

int angle = 0;
void signal_handler()
{
	static int i;
	
	

	if(i<=angle){
		digitalWrite(sg90,HIGH);
	}else{
		digitalWrite(sg90,LOW);
	}
	//当计满40个0.5ms ,即20ms为一个周期
	if(i == 40){
		i = 0;

	}
	i++;

}

void sg90_init()
{
	wiringPiSetup();
	pinMode(sg90,OUTPUT);


}

int main(int argc, char const *argv[])
{
	sg90_init();
	angle = 1;
	struct itimerval itv;
	//设值定时时间
	itv.it_interval.tv_sec = 0;
	itv.it_interval.tv_usec = 500; //0.5ms

	//设置定时开始前,启动定时器的时间
	itv.it_value.tv_sec = 1;
	itv.it_value.tv_usec = 0;

	//设定定时方式
	setitimer(ITIMER_REAL,&itv,NULL);
	//信号处理
	signal(SIGALRM,signal_handler);
	while(1){
		printf("输入角度:1-0°,2-45°,3-90°,4-135°,5-180°\n");
		scanf("%d",&angle);
	
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值