ATTiny85 Micro Usb MCU Development Board with Servo
用Pro Micro做了个摇步器,感觉有点浪费。于是入手了个ATTiny85开发板(国外好像叫Digispark),计划把Pro Micro替换出来。
这个ATTiny85开发板非常迷你和便宜,面积比邮票还小(大约2cm*2.5cm),价格不到7rmb/个。自带Micro USB母口(插上USB就可以烧录程序),除了5v VCC、GND、VIN,还有6个针脚。采用ATTiny85芯片,集成8位CPU,主频最高20MHz,内存512B,闪存8KB等等。更详细的参数,参考以下PDF文档:
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf
总体来说这,非常适合细小的项目。但是这货历史有点久远(网上很多资料都是2013年左右),相关资料不好找。踩了一些坑后,终于成功刷入程序并运行。
首先安装 Arduino IDE,版本是1.6以上,然后根据以下文章去配置:
Connecting and Programming Your Digispark
https://digistump.com/wiki/digispark/tutorials/connecting
遇到Linux的问题,主要是需要相关的安装包,可参考这个链接:
Linux Troubleshooting
https://digistump.com/wiki/digispark/tutorials/linuxtroubleshooting
然后,关于编写舵机控制程序,尝试了几个库,最后采用了SoftRcPulseOut
并运行成功。参考以下链接:
Beginner Servo
https://digistump.com/board/index.php?topic=1157.0
Digispark (Attiny85) servo tester
http://www.circuitdb.com/?p=1203
最后再说说摇步机。摇步机的原理就是利用舵机进行单摆运动。原来使用手机摇的,现在入手了个二手小米手环2,解放了手机。接线图就不上了,简单描述如下:
ATTiny85 -> 9G舵机(SG90)
5V -> 红(正极)
GND -> 棕(负极)
P4 -> 橙(信号)
程序也很简单,舵机先复位到0度,再不断重复从0度转到120度后复位。代码如下:
#include <SoftRcPulseOut.h>
SoftRcPulseOut myservo;
int pos = 0;
#define NOW 1
void setup() {
myservo.attach(4); // P4,舵机信号
myservo.setMaximumPulse(2200);
for (int i = 0; i < 5; i++) { // 复位到0度
myservo.write(pos);
delay(100);
SoftRcPulseOut::refresh(NOW);
}
delay(3000);
SoftRcPulseOut::refresh(NOW);
}
void loop() {
for (pos = 0; pos < 120; pos += 20) {
myservo.write(pos);
delay(50);
SoftRcPulseOut::refresh(NOW);
}
for (pos = 120; pos >= 0; pos -= 20) {
myservo.write(pos);
delay(50);
SoftRcPulseOut::refresh(NOW);
}
}