我想做一个电子桌牌,功能如下:1,用一台电脑可以控制多个桌牌,2单片机之间属于一主一从,主机可以控制从机,3,桌牌具有统计票数的功能,我应该怎么实现?(使用stm32f103c8t6系统板)
3条回答 默认 最新
关注【相关推荐】
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7484509
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:STM32学习(10)-定时器描述,三种计数方式,定时器的工作框图,定时器时钟来源,定时器相关寄存器和函数,通用定时器实现定时的步骤
- 除此之外, 这篇博客: 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)中的 2,如何写程序使小车前进后退和转弯呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
设计思路就是设置4个IO口的高低电平
我的IO口与电机驱动是这样连接的:A1–IN1;A2–IN2;A3–IN3;A4–IN4;
再看下面这个代码,我简单的写了一个前进和一个左转函数void car_go(void); void car_left(void); int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIO的外设时钟 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//选择要用的GPIO引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚模式为推免输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置引脚速度为50MHZ GPIO_Init(GPIOA,&GPIO_InitStructure);//调用库函数,初始化GPIO car_go();//前进 } void car_go(void) //前进 { GPIO_SetBits(GPIOA,GPIO_Pin_1); //控制左边轮胎 GPIO_ResetBits(GPIOA,GPIO_Pin_2); GPIO_SetBits(GPIOA,GPIO_Pin_3); //控制右边轮胎 GPIO_ResetBits(GPIOA,GPIO_Pin_4); } void car_left(void) //左转 { GPIO_SetBits(GPIOA,GPIO_Pin_1); //控制左边轮胎 GPIO_ResetBits(GPIOA,GPIO_Pin_2); GPIO_ResetBits(GPIOA,GPIO_Pin_3); //控制右边轮胎 GPIO_SetBits(GPIOA,GPIO_Pin_4); }由于主函数里调用的是car_go函数,这个代码编译下载后车子就会向前走,如果你的轮子转反了的话,简单的方法就是把电机的正负极换个位置接就行了。
好了,这篇文章已经很长了,今天就先码到这里,整个完整过程会分为上中下三篇,剩下两篇过两天慢慢码完再发。
下面是我所制作的小车成品图,因为模块都是独立的,所以线比较多。

下面是我写的已经测试完成了的工程,主函数里有两个循环,分别是循迹和避障循环,他们是单独工作的,引用掉一个再打开另一个就行。
https://download.csdn.net/download/weixin_43924857/11650617
当然循迹和避障的策略都是我自己为了完成任务写的,比较简单,能够实现循迹避障功能,到后面你已经会操作各个模块后,自己写个更好的循迹避障策略是完全没有问题的,或者是用我的工程,里面的各模块函数也都写好了,直接调用就行。下面是中篇地址:
基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----中篇(第456点)工程文件已经放到百度网盘:
链接:https://pan.baidu.com/s/1VSRC418Tz8uLCF8cjrIY1g
提取码:7m9y
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报