Tiny85哒哒哒
今天在盒子里面看见一个小玩意,一看是个开发板.好像是3块钱买的.一直也没有用过,看看怎么玩.看了半天主控发现是atmel家的玩意儿.
在一个项目中,该项目需要在不同位置读取多个传感器数据。这些仅需几个PWM引脚,因此使用多个Arduino Uno既昂贵又不必要。因此,我决定使用ATtiny85微控制器代替Arduino Uno开发板。当您不需要太多的PWM引脚时,ATtiny85是一种廉价而强大的替代产品。由于ATtiny85只是一个微控制器,我们需要Arduino Uno对其进行编程。
引脚图
将Arduino Uno配置为ISP(系统内编程)
要对ATtiny85进行编程,我们需要首先将Arduino Uno设置为ISP模式。将您的Arduino Uno连接到PC。打开Arduino IDE并打开ArduinoISP示例文件(文件->示例-> ArduinoISP)并上传。
向Arduino IDE添加ATtiny85支持
默认情况下,Arduino IDE不支持ATtiny85,因此我们应该在Arduino IDE中添加ATtiny板。打开文件->首选项,并在附加板管理器中的URL中提供以下URL :
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json 。
额,分辨率感人.所以爱不会消失对吧!
你别高兴....还是不可以用
是他是他就是他
支持的函数
https://github.com/damellis/attiny
地址给你放这里了
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <avr/pgmspace.h>
// ATMEL ATTINY45 / ARDUINO
//
// +-\/-+
// Ain0 (D 5) PB5 1| |8 Vcc
// Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1
// Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1
// GND 4| |5 PB0 (D 0) pwm0
// +----+
static const uint8_t A0 = 6;
static const uint8_t A1 = 7;
static const uint8_t A2 = 8;
static const uint8_t A3 = 9;
#define digitalPinToPCICR(p) ( ((p) >= 0 && (p) <= 4) ? (&GIMSK) : ((uint8_t *)0) )
#define digitalPinToPCICRbit(p) ( PCIE )
#define digitalPinToPCMSK(p) ( ((p) <= 4) ? (&PCMSK) : ((uint8_t *)0) )
#define digitalPinToPCMSKbit(p) ( (p) )
#define analogPinToChannel(p) ( (p) < 6 ? (p) : (p) - 6 )
#define TCCR1A GTCCR
#ifdef ARDUINO_MAIN
void initVariant()
{
GTCCR |= (1 << PWM1B);
}
// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing) tiny45 only port B
const uint16_t PROGMEM port_to_mode_PGM[] = {
NOT_A_PORT,
NOT_A_PORT,
(uint16_t) &DDRB,
};
const uint16_t PROGMEM port_to_output_PGM[] = {
NOT_A_PORT,
NOT_A_PORT,
(uint16_t) &PORTB,
};
const uint16_t PROGMEM port_to_input_PGM[] = {
NOT_A_PIN,
NOT_A_PIN,
(uint16_t) &PINB,
};
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
PB, /* 0 */
PB,
PB,
PB,
PB,
PB, // 5
PB, // A0
PB,
PB,
PB, // A4
};
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
_BV(0), /* 0, port B */
_BV(1),
_BV(2),
_BV(3), /* 3 port B */
_BV(4),
_BV(5),
_BV(5),
_BV(2),
_BV(4),
_BV(3),
};
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
TIMER0A, /* OC0A */
TIMER0B,
NOT_ON_TIMER,
NOT_ON_TIMER,
TIMER1B,
NOT_ON_TIMER,
NOT_ON_TIMER,
NOT_ON_TIMER,
NOT_ON_TIMER,
NOT_ON_TIMER,
};
#endif
#endif
头文件,我研究了一下.应该就是这样写
将ATtiny85与Arduino Uno连接
现在,上述所有事情都准备就绪,我们将开始对attiny85进行编程。使用以下面包板将arduino uno连接到attiny85。
Arduino Uno – ATtiny85
5V – Vcc
Gnd – Gnd
针13 –针2
针脚12 –针脚1
针脚11 –针脚0
引脚10 –重置
宝贝儿看图.别瞎鸡儿连
在arduino的RESET和GND之间添加一个10uF电容器。这是为了避免在将程序上传到attiny85时将arduino自动重置。如果使用电解电容器,请确保阳极进入uno的GND。
将程序上传到ATtiny85
现在回到Arduino IDE。在工具->董事会下选择ATtiny。然后在工具->处理器下选择ATtiny85。然后在工具->时钟下选择8 MHz(内部)。
选择
选择->ok
引脚排列:所有引脚都可用作数字I / O
引脚0→I2C SDA,PWM(B型LED)
引脚1→PWM(A型LED)
引脚2→I2C SCK,模拟输入
引脚3→模拟输入(当使用USB时也用于USB +)
引脚4→PWM,模拟(也用于USB-当使用USB时)
引脚5→模拟输入
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
上面是一个驱动的下载地址
内部,安装一下
这要记住
Digisparks不会创建串行端口。digispark arduino软件通过原始的低速USB协议和HID协议的组合直接与digispark通信,以节省空间并更符合USB规范。串行端口列表-不使用任何端口。只需确保在Programmer菜单中选择了Digispark并且在Board菜单中选择了Digispark(tiny core),就应该启动并运行。使用Digispark Arduino软件时,在串行端口列表中选择什么都没有关系-没有使用。只要确保在Programmer菜单中选择了Digispark,并在Board菜单中选择了Digispark(微型内核),就可以正常运行了。
void setup() {
// initialize digital pin 13 as an output.
pinMode(0, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
c
错误,我们继续研究
这个毛病
这个看起来是个好的趋势
. 修改系统配置以增强供电效果。
① 请按 Win按钮 + R。
② 请在弹出的输入框里面,输入“devmgmt.msc” 。
③ 找到“通用串行总线控制器”,点开后找到“USB Root Hub”。
④ 右键点击“USB Root Hub”,在菜单中选择“属性”。
⑤ 在“电源管理”中,把“允许计算机关闭此设备以节约电源”的选择取消;然后点击“确定”后,重启电脑即可。
⑥ 按“确定”后,重启电脑即可。
如果以上的方法还是不可行,建议再尝试下面的解决方案。
https://sourceforge.net/projects/libusb-win32/
c
用管理员执行一下
这就成功了
这个驱动就折腾到这里,,,,比较难搞.我的Ardunio还是烧不进去