树树34
树树34
关注数: 9
粉丝数: 53
发帖数: 795
关注贴吧数: 31
用32单片机做稚晖君机器人的控制 做一个机器人玩,持续更新
做一个低配版本的稚晖君机器人 电器控制我自己做
稚晖君的机器人 低配版本 自己做机器人的电控部分
arduino的历史 2005年的冬天,意大利米兰互动设计学院的师生们设计出一款控制主板,相对于之前的同类产品,该主板具有简单易用、功能强大、费用便宜等特点,于是他们给这个控制主板起名叫“Arduino”,意大利语“强大”的意思。Arduino推出后,在该学院的学生作品中广泛使用,有人用它控制和处理传感器,有人用它来做电力开关,也有人用它制作机器人。后来Arduino的创造者们决定公开Arduino的硬件设计图和软件程序代码,于是越来越多的人加入Arduino的改进工作中来,甚至一些大公司(比如Intel公司)也发布了他们版本的Arduino产品。除了Arduino主板,人们还设计了各种功能的Arduino外接板,有的可以实现WiFi功能,有的可以实现蓝牙功能等等。 从2005年到现在,短短十几年时间,Arduino已经在电子控制领域已经风靡全球。在当今物联网的风口下,以及提倡个性功能的创客的风气下,Arduino必将更受欢迎。 本人接触Arduino时间也不是很长,本栏目也可以理解为学习分享贴,一来把自己学的东西记录下来;二来吸引同好者互相学习,共同进步;三来想吸收小白(文科生、艺术从事者)进来,使Arduino的队伍越来越强大。
利用arduino控制舵机 arduino控制舵机直接使用DAC功能就行了,可以十分方便的实现舵机角度的控制,同时也可以实现例如机器人的行走之类的操作。
arduino控制OLED显示文字 首先要利用文字取模软件获取文字的点阵字符集 然后按照一定的规则实现点阵的点亮,就可以实现文字的显示 同时也可以考虑显示一些图片之类的
arduino对OLED的控制可以实现如下控制 我们这里采用的是ssd1306芯片控制的4针oled模块 我们介绍一下其中运用的u8glib库 drawStr 显示字符串 print 输出 drawPixe 点 drawLine 线 drawHLine 水平线 drawVLine 垂直线 drawTriangle 三角(实心) drawFrame 矩形框 drawRFrame 圆角矩形框 drawBox 矩形(实心) drawRBox 圆角矩形(实心) drawCircle 圆 drawDisc 圆形(实心) drawEllipse 圆弧 drawFilledEllipse 扇形(实心) getHeight 获得显示器高度 getWidth 获得显示器宽度 getStrWidth 获得字符串宽度 setFont 设置字体 setPrintPos 设置输出位置 setColorIndex 设置显示与否 setRot90 /180 /270 显示内容旋转
arduino端口控制方案 端口寄存器允许在Arduino板上更低级和更快地操纵微控制器的i / o引脚。Arduino板上使用的芯片(ATmega8和ATmega168)有三个端口: B(数字引脚8到13) C(模拟输入引脚) D(数字引脚0到7) 每个端口由三个寄存器控制,这三个寄存器也是arduino语言中定义的变量。DDR寄存器确定引脚是INPUT还是OUTPUT。PORT寄存器控制引脚是高电平还是低电平,PIN寄存器通过pinMode()读取设置为输入的INPUT引脚的状态。ATmega8 和 ATmega168 芯片的地图显示了端口。较新的Atmega328p芯片完全遵循Atmega168的引脚排列。 DDR和PORT寄存器可以写入和读取。PIN寄存器对应于输入状态,只能读取。 PORTD映射到Arduino数字引脚0到7 DDRD - 端口D数据方向寄存器 - 读/写 PORTD - 端口D数据寄存器 - 读/写 PIND - 端口D输入引脚寄存器 - 只读 PORTB映射到Arduino数字引脚8到13两个高位(6和7)映射到晶体引脚,不可用 DDRB - 端口B数据方向寄存器 - 读/写 PORTB - 端口B数据寄存器 - 读/写 PINB - 端口B输入引脚寄存器 - 只读 PORTC映射到Arduino模拟引脚0到5.引脚6和7只能在Arduino Mini上访问 DDRC - 端口C数据方向寄存器 - 读/写 PORTC - 端口C数据寄存器 - 读/写 PINC - 端口C输入引脚寄存器 - 只读 这些寄存器的每一位对应一个引脚; 例如,DDRB,PORTB和PINB的低位指的是引脚PB0(数字引脚8)。有关Arduino引脚编号到端口和位的完整映射,请参见芯片图:ATmega8,ATmega168。(注意,端口的某些位可用于除i / o之外的其他位;请注意不要更改与它们对应的寄存器位的值。) 例子 参考上面的引脚图,PortD寄存器控制Arduino数字引脚0到7。 但是,您应该注意,引脚0和1用于串行通信以编程和调试Arduino,因此通常应避免更改这些引脚,除非需要串行输入或输出功能。请注意,这可能会干扰程序下载或调试。
做一个小机器人 准备用图片里的东西,做个一个小机器人,大家有什么建议啊。一起集思广益
准备用一些元器件做个桌面机器人
做一个桌面机器人 准备用这一对堆东西做个桌面机器人
单片机学习吧吧主竞选:NO.0001号候选人
单片机位数 单片机的位数越高,功能越复杂,越不容易学好
单片机与外部设备通信 可以通过串口,SPI,IIC,USB等和设备通信,挺方便
单片机外设 有很多单片机外设可以用IO口模拟,方便功能扩展
如何学习单片机 可以先设置晶振,再研究外设,再弄代码
单片机基本知识 学习单片机最主要的是研究单片机外设,学明白外设,才能搞懂单片机
stm32吧吧主竞选:NO.0001号候选人
单片机与云端通信 单片机可以很容易的通过MQTT协议和云端进行通信,数据只要满足MQTT协议就行了
单片机的引脚中断 STM32 的每个 IO口都可以作为中断输入,要把 IO口作为外部中断输入, 有以下几个步骤: 1) 初始化 IO 口为输入。 这一步设置你要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设 置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触 发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一 定程度防止外部干扰带来的影响。 2) 开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。 STM32 的 IO 口与中断线的对应关系需要配置外部中断配置寄存器 EXTICR,这样我们要 先开启复用时钟,然后配置 IO 口与中断线的对应关系。才能把外部中断与中断线连接起来。 3) 开启与该 IO 口相对的线上中断/事件,设置触发条件。 这一步,我们要配置中断产生的条件, STM32 可以配置成上升沿触发,下降沿触发,或者 任意电平变化触发,但是不能配置成高电平触发和低电平触发。这里根据自己的实际情况来配 置,同时要开启中断线上的中断。这里需要注意的是:如果使用外部中断,并设置该中断的 EMR 位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。而不设置 EMR,软件仿真就可以 进入中断服务函数,并且硬件上也是可以的。建议不要配置 EMR 位。 4) 配置中断分组(NVIC),并使能中断。 这一步,我们就是配置中断的分组,以及使能,对 STM32 的中断来说,只有配置了 NVIC 的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。
STM32的bootloader 这个单片机是单核的芯片,可以通过USB或者串口来实现单片机的boot操作,大家可以尝试一下。
STM32单片机----物联网介绍 通过STM32的串口与WIFI芯片ESP8266通信,可以实现物联网功能,最主要的是要能够实现HTTP协议或者MQTT协议,目前不同的物联网端口,身份验证的方式不统一。很多密码要进行哈希运算,对初学者来说十分值得学习。大家一起加油吧。
STM32 RTC时钟介绍,刚学的,发出来大家一起看看 STM32的RTC外设,实质是一个掉电后还继续运行的定时器,从定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断).但是从掉电还能继续运行来看,它是STM32中唯一一个具有这个功能功能的外设.(RTC外设的复杂之处不在于它的定时,而在于它掉电还可以继续运行的特性) 所谓掉电,是指电源Vpp断开的情况下,为了RTC外设掉电可以继续运行,必须给STM32芯片通过VBAT引脚街上锂电池.当主电源VDD有效时,由VDD给RTC外设供电.当VDD掉电后,由VBAT给RTC外设供电.无论由什么电源供电,RTC中的数据始终都保存在属于RTC的备份域中,如果主电源和VBA都掉电,那么备份域中保存的所有数据都将丢失.(备份域除了RTC模块的寄存器,还有42个16位的寄存器可以在VDD掉电的情况下保存用户程序的数序,系统复位或电源复位时,这些数据也不会被复位). 从RTC的定时器特性来说,它是一个32位的计数器,只能向上计数.他使用的时钟源有三种,分别为: 1,高速外部时钟的128分频:HSE/128; 2,低速内部时钟LSI; 3,低速外部时钟LSE; 使用HSE分频时钟或者LSI的时候,在主电源VDD掉电的情况下,这两个时钟来源都会受到影响,因此没法保证RTC正常工作.所以RTC一般都时钟低速外部时钟LSE,频率为实时时钟模块中常用的32.768KHz,因为32768 = 2^15,分频容易实现,所以被广泛应用到RTC模块.(在主电源VDD有效的情况下(待机),RTC还可以配置闹钟事件使STM32退出待机模式).
单片机 定时器及其应用 单片机内部有两个16位的定时/计数器,即定时器T0和定时器T1,单片机的定时功能其实就是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的应用涉及到中断方面的知识,可以先了解中断的概念再来看定时器 如,一个16位的定时器,它所能计数的范围是0~65535,如果单片机采用的是12M的晶振,那么定时器单次最长的时间为65535*((1/12)*12),因为一个一个机器周期等于12个振荡周期,那么定时器加一所用的时间是1/12M*12是1us,也就是一个12MHz晶振的51单片机单次最长时间约为65ms. 定时器的控制 89c51的定时器由两个寄存器控制,分别是工作模式寄存器TMOD和控制寄存器TCON 工作模式寄存器TMOD是用于控制定时器0/1的工作模式,通过对TMOD进行赋值,则可以改变定时器的工作模式
【STM32】通用定时器的PWM输出 最近一直在研究STM32的PWM输出,PWM的计数模式总结如下,期望能够和吧友共同看一下。 PWM的计数模式 向上计数模式 下面是一个PWM模式1的例子。当TIMx_CNT<TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为’1’。如果比较值为0,则OCxREF保持为’0’。 向下计数模式 在PWM模式1,当TIMx_CNT>TIMx_CCRx时参考信号OCxREF为低,否则为高。如果TIMx_CCRx中的比较值大于TIMx_ARR中的自动重装载值,则OCxREF保持为’1’。该模式下不能产生0%的PWM波形。 中央对齐模式 当TIMx_CR1寄存器中的CMS位不为’00’时,为中央对齐模式(所有其他的配置对OCxREF/OCx信号都有相同的作用)。根据不同的CMS位设置,比较标志可以在计数器向上计数时被置’1’、在计数器向下计数时被置’1’、或在计数器向上和向下计数时被置’1’。TIMx_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。
具体方案流程 云端收到数据,数据传输到单片机,单片机从RAM放入FLASH
升级方案如下 通过云端批量发数据给单片机,单片机收到数据以后挨个字节写入单片机
物联网升级方案,大家看看是否可行 通过云端发数据给单片机,单片机进行升级
物联网可以做bootloader吗 老师要我通过物联网做单片机升级,大家有没有合适方案
有没有做家教的,想学STM32 求大师带我学习
有没有人可以做物联网设计 实在不会了,求带做
我的方案如下 通过单片机串口访问物联网,然后串口发数据
ESP8266可以做物联网通信吗 有人说用ESP32?
老师让做物联网 大家都是怎么做物联网设计的啊?
我要自己做个bootloader 自己做bootloader,谁也别拦着我!!!
考考大家,程序能放在RAM运行吗? 程序能放在RAM运行吗?大师,大神,学霸,快来发表意见啊!!!
单片机设计答疑解惑 专业答疑解惑,讨论设计方案,不看大段代码!!!
单片机底层研究 浏览了很多帖子,发现贴吧很多人都是在使用单片机,例如用单片机做个设备、做个设计之类的,很少有人真正研究单片机底层的东西。最近想找一款单片机,好好研究单片机的底层,刚开始想用STM32这款比较火的单片机,发现太复杂,嘿嘿,能力有限,对于我来说有点起点高了。无意间发现了51单片机,觉得可以拿来做基础的学习,期望能从小白的角度来学习这款单片机,各位大佬多多批评指正哦!!!
基于串口的bootloader 我想做一个基于串口的bootloader,大家一起讨论啊,我会一直更新自己的研究过程
单片机的启动过程 单片机的启动过程,有没有人研究过啊?
单片机bootloader 贴吧都是研究APP的,有没有研究bootloader的啊?
单片机分层设计 单片机的分层设计,对于单片机项目常常会遇到降成本要求,代码搞完以后,要换低成本单片机,如何实现底层驱动与上层代码的分离?
实时时钟校准 对RTC的校准,大家是怎么做的啊?休眠的时候需要校准吗?
单片机低功耗 最近在做STM32的低功耗功能,大家一起讨论一下啊!
单片机休眠 看了很多贴吧的帖子,大部分都是关于单片机程序应用的,有人研究过单片机程序底层的东西吗?比如,单片机的休眠与唤醒?
1
下一页