学习笔记
arduino学习新的
tulesheng
这个作者很懒,什么都没留下…
展开
-
按键控制OLED菜单
本程序用到了ezbutton这个库,感觉这个比easy button要更好用一些,因为easybutton在接线的时候需要用上10K电阻。本例使用的是OLED的SPI方法。通过上下键选择,再按下确认按键后,执行对应的指令。个人觉得这个程序最值得玩味的地方就是结构体在该制作中的应用。原创 2023-02-17 04:54:57 · 1454 阅读 · 0 评论 -
在结构体中使用函数指针的例子
void menu11(void);void menu12(void);void menu21(void);typedef struct{ byte a; byte b; byte c; byte d; byte e; void (*operation)(void);}TABLE;TABLE table[3] ={ {0, 0, 1, 0, 2, menu11}, {1, 0, 1, 1, 4, menu12}, {2, 2, 3, 0, 5, me.原创 2021-02-03 14:35:31 · 532 阅读 · 1 评论 -
arduino控制JQ8900-16P语音模块
首先要感谢stm32通过 一线串口通信控制JQ8900-16P语音模块的作者我就是根据这位博主的代码改写的,但是碰到了意想不到的问题。其实代码是写对了,语音模块是单独供电,这个供电的地要和arduino的地共用。(我第一天测试的时候其实也注意到了这个需要共地,但是反复测试不行,因为没有保存代码,今天只能重新一遍,居然就好了。)另外接上一个3W的喇叭,直接用arduino的板子给语音模块供电也是可以带动的。不需要额外电源。void setup(){ pinMode(3,OUTPUT);}原创 2021-01-20 22:13:45 · 6206 阅读 · 11 评论 -
arduino之OLED菜单
学习完OLED的显示之后,不满足于写段文字,显示个图像啥的,就想做个菜单,为以后做项目做准备,在本站已经有博主提供了很好的程序代码和比较详细的讲解,比如这篇摇杆操作OLED多级菜单这个博客的源代码链接在这里unsigned char funIndex = 0;KEY_TABLE table[9] ={ {0, 0, 1, 0, 2, (*menu11)}, {1, 0, 1, 1, 4, (*menu12)}, {2, 2, 3, 0, 5, (*menu21)}, {3, 2,原创 2021-01-19 10:04:27 · 3650 阅读 · 3 评论 -
arduino模块学习网站,强烈推荐
这几天在学习OLED的只是,无意中发现了一个国外的网站,在这个网站上面写下代码,就可以马上看到动画模拟的结果请看网页在左边修改代码后,点击播放键,就可以看到结果。跟我看到的实际情况一模一样。进入主页后还能看到更多的模块。个人很喜欢,跟大家分享!...原创 2021-01-16 21:47:32 · 1277 阅读 · 2 评论 -
accelstepper库的常用指令详细解读
accelstepper库,比较流行。关于用法官网做出了说明,也有例子,但是初学者看起来依然比较费力,我在很多网站都没有找到合适的例子去帮助了解里面的基本指令,因为里面的指令有的看起来很类似。我只能自己试验去了解关于moveTo的用法:设置最大速度setMaxSpeed和加速度后setAcceleration,电机将以这个加速度开始转动,直到速度到达最大速度。这个过程中会用到加减速void setup(){ usb.start(); stepper1.setMaxSpeed(2000);原创 2021-01-11 10:48:36 · 14434 阅读 · 12 评论 -
arduino串口控制电机的正反转和开关
用到了AccelStepper和RBD_SerialManager两个头文件#include "AccelStepper.h"#include <RBD_SerialManager.h>RBD::SerialManager usb; // 电机步进方式定义#define FULLSTEP 4 //全步进参数#define HALFSTEP 8 //半步进参数 // 定义步进电机引脚 #define motor1Pin1 8 // 一号28BYJ48连原创 2021-01-10 19:23:31 · 5979 阅读 · 3 评论 -
arduino旋转编码器控制步进电机
最近的一个想法是用编码器的旋转来控制步进电机,旋转编码器的转一圈发出的脉冲和小步进电机28BYJ-48转一圈所需的脉冲不一样,不能做到手转一圈编码器,步进电机也同步转一圈。而且手转的速度,这个64减速比的小电机也跟不上。但是能实现电机转动和编码器转动的方向一致。电机转动很顺滑。实现方法是:编码器A相产生中断,就在中断里面给步进电机发一个脉冲。#include <AccelStepper.h>#define encoder0PinA 2#define encoder0PinB原创 2021-01-08 11:18:14 · 5771 阅读 · 0 评论 -
arduino旋转编码器方向变化的判断
已经有一些库来支持旋转编码器的应用,但是为了让应用更加灵活,还是建议自己写一个编码器信号采集的程序,毕竟也不复杂。A相连接开发板2脚,B相接4脚。只让A相的脉冲变化进入中断。#define encoder0PinA 2#define encoder0PinB 4volatile unsigned int encoder0Pos = 0;void setup() { pinMode(encoder0PinA, INPUT); digitalWrite(encoder0PinA, HI原创 2021-01-07 16:49:19 · 1557 阅读 · 1 评论 -
用accelstepper库控制28BYJ-48步进电机(快慢运动切换)
这个accelstepper库功能太强大了,以前用51单片机写程序真的是很复杂,现在几行代码就搞定了复杂的功能。以下代码实现的功能是,在串口指令是s就是慢速连续旋转,h就是高速旋转。相对高了,毕竟是减速步进电机。/*-----( Import needed libraries )-----*/#include <AccelStepper.h>// motor pins#define motorPin1 4 // Blue - 28BYJ-48 pin 1#defi原创 2021-01-06 17:11:53 · 1775 阅读 · 0 评论 -
arduino串口指令包含多个指令的拆分
比如我们要让通过串口给步进电机指令,这个指令包含了哪个电机,这个电机移动多少等等。我们需要一次性输入多条指令。需要把这些指令拆分才能输入给对应的子函数。下面的的代码演示如何操作。void setup(){ Serial.begin(9600); }void loop() { while (Serial.available()) { String input = Serial.readStringUntil('\n'); //检查到换行符\n就停止 input原创 2021-01-06 14:31:02 · 1211 阅读 · 1 评论 -
arduino之手机操作蓝牙模块控制LED亮度变化
代码主要体现了两个知识点:1字符串的连接,2将数字字符串转int//String comdata = "";//字符串函数int x;void setup() { pinMode(9,OUTPUT); Serial.begin(9600);//打开串口波特率9600} void loop() { if (Serial.available() > 0)//判读是否串口有数据 { //Serial.end(); String comdata = "";//缓存原创 2021-01-05 18:55:57 · 1119 阅读 · 0 评论