树莓派外设开发——舵机控制
生活随笔
收集整理的這篇文章主要介紹了
树莓派外设开发——舵机控制
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.綜述
普通舵機(jī)的角度控制需要用到PWM實(shí)現(xiàn),這里用到Linux定時(shí)器產(chǎn)生PWM波形,關(guān)于Linux定時(shí)器,這篇文章有一個(gè)簡單的介紹
Linux定時(shí)器
舵機(jī)控制原理大致如下:
2.代碼
#include <stdio.h> #include <time.h> #include <sys/time.h> #include <stdlib.h> #include <signal.h> #include <wiringPi.h> #define sg90 7int angle = 0; void signal_handler() {static int i;if(i<=angle){digitalWrite(sg90,HIGH);}else{digitalWrite(sg90,LOW);}//當(dāng)計(jì)滿40個(gè)0.5ms ,即20ms為一個(gè)周期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;//設(shè)值定時(shí)時(shí)間itv.it_interval.tv_sec = 0;itv.it_interval.tv_usec = 500; //0.5ms//設(shè)置定時(shí)開始前,啟動(dòng)定時(shí)器的時(shí)間itv.it_value.tv_sec = 1;itv.it_value.tv_usec = 0;//設(shè)定定時(shí)方式setitimer(ITIMER_REAL,&itv,NULL);//信號(hào)處理signal(SIGALRM,signal_handler);while(1){printf("輸入角度:1-0°,2-45°,3-90°,4-135°,5-180°\n");scanf("%d",&angle);}return 0; }總結(jié)
以上是生活随笔為你收集整理的树莓派外设开发——舵机控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [渝粤教育] 西南科技大学 电气控制与P
- 下一篇: EasyExcel 自定义标题样式