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还是烧不进去
- POJ 1018 Communication System
- POJ 1017 Packets
- Codeforces 725B Food on the Plane
- Codefoces 723B Text Document Analysis
- Codefoces 723A The New Year: Meeting Friends
- ECJTUACM16 Winter vacation training #1 题解&源码
- 信息学奥赛一本通算法(C++版)基础算法:高精度计算
- 看破欧拉函数的奥秘
- 线段树入门总结
- 从零基础学三分查找
- Codeforces Beta Round #1 A,B,C
- 线性分类器-中篇
- isupper()函数
- HDU 5882 Balanced Game
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python遍历文件夹os.path与pathlib
- python中的yield和return
- python 类
- python 调用c语言详解
- Spring Boot 整合TkMybatis
- 数据可视化|二维统计直方图和三维统计分布图
- zetadiv: 计算zeta多样性
- Springboot笔记~filter
- 【Kubernetes】10分钟部署一套K8S集群(kubeadm)
- 【Kubernetes】给K8S部署一套UI界面
- Flutter图片添加水印功能,Flutter保存Widget为图片
- Qt音视频开发3-vlc录像存储
- 被我用烂的DEBUG调试技巧,专治各种搜索不到的问题!
- 如何用R绘制双y轴柱状图
- CyclicBarrier类在性能测试中应用