系列文章目录
一、orangepi实现定时器
二、orangepi控制舵机
`
前言
上文已经实现定时器,本文将基于定时器实现舵机的控制。
在终端口输入角度对应的数字实现舵机角度的转动。
整体代码如下图:
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
#include <wiringPi.h>
#define SG90Pin 5
static int i=0;
int jd=0;
void signal_handler(int signum)
{
if(i<=jd){
digitalWrite(SG90Pin,HIGH);
}else{
digitalWrite(SG90Pin,LOW);
}
if(i==40){
i=0;
}
i++;
}
int main(int argc,char **argv)
{
struct itimerval itv;
wiringPiSetup();
pinMode(SG90Pin,OUTPUT);
itv.it_value.tv_sec=0; //设置启动定时器时间
itv.it_value.tv_usec=500;
itv.it_interval.tv_sec=0;//设置定时时间
itv.it_interval.tv_usec=500;
if(setitimer(ITIMER_REAL,&itv,NULL)==-1){ //设置定时方式
perror("error");
exit(-1);
}
signal(SIGALRM,signal_handler);//信号处理
while(1){
printf("input jd: 1-0 2-45 3-90 4-135 \n");
scanf("%d",&jd);
}
return 0;
}
wiringPiSetup();初始化io口
pinMode(SG90Pin,OUTPUT);设置io口模式
digitalWrite(SG90Pin,HIGH);向io口输入高电平