当前位置:网站首页>模拟摇杆控制舵机
模拟摇杆控制舵机
2022-07-04 22:17:00 【让一切都燃烧】
任务:
电位器和舵机组合应用,如果是180°舵机,电位器有效范围也是180°,如果是90°舵机,电位器有效范围为90°,电位器和舵机角度位置同步,电位器有效起点自定,终点为(起点+90°/180°)
思路
洋桃开发板上电位器是左边的全向摇杆,使用摇杆的x轴或者y轴控制舵机角度
例如摇杆在最左侧对应舵机0°,拉到最右侧舵机转到180°
舵机的角度在摇杆的起点和终点上均匀分布
摇杆本质是可调电阻,电阻分压后可以使用单片机的ADC获取位置状态
完成代码
int main (void){
//主程序
delay_ms(500); //上电时等待其他器件就绪
RCC_Configuration(); //系统时钟初始化
TOUCH_KEY_Init();//触摸按键初始化
RELAY_Init();//继电器初始化
TIM3_PWM_Init(59999,23);
ADC_Configuration(); //ADC初始化设置(模拟摇杆的ADC初始化)
JoyStick_Init(); //模拟摇杆的按键初始化
I2C_Configuration();//I2C初始化
OLED0561_Init(); //OLED初始化
OLED_DISPLAY_8x16_BUFFER(0," YoungTalk "); //显示字符串
OLED_DISPLAY_8x16_BUFFER(2," ADC TEST "); //显示字符串
OLED_DISPLAY_8x16_BUFFER(4," ADC_IN6: "); //显示字符串
OLED_DISPLAY_8x16_BUFFER(6," ADC_IN7: "); //显示字符串
while(1){
//将光敏电阻的ADC数据显示在OLED上
OLED_DISPLAY_8x16(4,10*8,ADC_DMA_IN[0]/1000+0x30);//
OLED_DISPLAY_8x16(4,11*8,ADC_DMA_IN[0]%1000/100+0x30);//
OLED_DISPLAY_8x16(4,12*8,ADC_DMA_IN[0]%100/10+0x30);//
OLED_DISPLAY_8x16(4,13*8,ADC_DMA_IN[0]%10+0x30);//
OLED_DISPLAY_8x16(6,10*8,ADC_DMA_IN[1]/1000+0x30);//
OLED_DISPLAY_8x16(6,11*8,ADC_DMA_IN[1]%1000/100+0x30);//
OLED_DISPLAY_8x16(6,12*8,ADC_DMA_IN[1]%100/10+0x30);//
OLED_DISPLAY_8x16(6,13*8,ADC_DMA_IN[1]%10+0x30);//
//方法一:分区间控制(简单但是麻烦)
// if(ADC_DMA_IN[0]<100)
// TIM_SetCompare3(TIM3,1500);
//
// if(ADC_DMA_IN[0]>=100&&ADC_DMA_IN[0]<1700)
// TIM_SetCompare3(TIM3,ADC_DMA_IN[0]+1500);
// if(ADC_DMA_IN[0]>=1700&&ADC_DMA_IN[0]<2000)
// TIM_SetCompare3(TIM3,ADC_DMA_IN[0]+2300);
//
// if( ADC_DMA_IN[0]>=2000&&ADC_DMA_IN[0]<3500)
// TIM_SetCompare3(TIM3,ADC_DMA_IN[0]+2500);
// if( ADC_DMA_IN[0]>=3500&&ADC_DMA_IN[0]<4000)
// TIM_SetCompare3(TIM3,ADC_DMA_IN[0]+3500);
//
// if( ADC_DMA_IN[0]>4000)
// TIM_SetCompare3(TIM3,7500);
// delay_ms(10);
//方法二:写公式转换(难但是方便)
TIM_SetCompare3(TIM3,ADC_DMA_IN[0]*(3.3/4096)*1820+1500);
if(GPIO_ReadInputDataBit(JoyStickPORT,JoyStick_KEY)==0){
OLED_DISPLAY_8x16(0,0,'Y');//
}else{
OLED_DISPLAY_8x16(0,0,' ');//
}
delay_ms(200); //延时
}
}
边栏推荐
- Google Earth Engine(GEE)——基于 MCD64A1 的 GlobFire 日常火灾数据集
- 业务太忙,真的是没时间搞自动化理由吗?
- It is said that software testing is very simple, but why are there so many dissuasions?
- Tiktok actual combat ~ the number of comments is updated synchronously
- 【Acwing】第58场周赛 题解
- Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
- 国产数据库乱象
- 制作条形码的手机App推荐
- LOGO特训营 第三节 首字母创意手法
- 复数在数论、几何中的用途 - 曹则贤
猜你喜欢
Embedded development: skills and tricks -- seven skills to improve the quality of embedded software code
质量体系建设之路的分分合合
将QA引入软件开发生命周期是工程师要遵循的最佳实践
醒悟的日子,我是怎么一步一步走向软件测试的道路
【Acwing】第58场周赛 题解
UML图记忆技巧
Xiangjiang Kunpeng joined the shengteng Wanli partnership program and continued to write a new chapter of cooperation with Huawei
LOGO特训营 第二节 文字与图形的搭配关系
LOGO特训营 第三节 首字母创意手法
Convolutional neural network model -- lenet network structure and code implementation
随机推荐
Interview question 01.08 Zero matrix
ACM multimedia 2022 | counterfactual measurement and elimination of social prejudice in visual language pre training model
【Acwing】第58场周赛 题解
md5工具类
Why is Dameng data called the "first share" of domestic databases?
Domestic database chaos
Prosperity is exhausted, things are right and people are wrong: where should personal webmasters go
Enabling digital economy Fuxin software attends the BRICs high level Forum on Sustainable Development
复数在数论、几何中的用途 - 曹则贤
傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
LOGO特訓營 第三節 首字母創意手法
LOGO特训营 第一节 鉴别Logo与Logo设计思路
LOGO特训营 第二节 文字与图形的搭配关系
A large number of virtual anchors in station B were collectively forced to refund: revenue evaporated, but they still owe station B; Jobs was posthumously awarded the U.S. presidential medal of freedo
Logo Camp d'entraînement section 3 techniques créatives initiales
Logo special training camp section 1 Identification logo and logo design ideas
The sandbox has reached a cooperation with digital Hollywood to accelerate the economic development of creators through human resource development
Microservices -- Opening
MySQL storage data encryption
关于栈区、堆区、全局区、文字常量区、程序代码区