一、digispark与arduino的区别和一些局限性:
digispark与arduino IDE兼容,但是它不具有arduino基本板子的所有功能,所以如果在使用的时候会有一些出错的情况,这里要注意。
下面是一些故障可能出现的原因:
(1)digispark由atmel attiny 85 mcu驱动,与arduino的atmega328有很多区别,所以某些库可能可能无法在板子上正常运行。
(2)digispark的闪存很小,大约只有6KB的闪存用于存储代码。
(3)板子上的P3和P4两个引脚用于USB通信和编程,如果不使用USB通信的则可以在电路中使用这个两个引脚,如果使用,则一定要在下载的时候拔下这些引脚上的电路。
二、Digispark 引脚的使用:
需要注意的是,在使用引脚作为不同的功能使用时,在程序中写的引脚是不同的,下面是具体的说明:
(1)DigitalWrite (数字写入)功能:
void setup(){
//P5在高电平时为3 V,而不是5 V,但所有引脚都可以进行数字输出
pinMode(0,OUTPUT); // 括号里写0是P0,1是P1,2是P2,依此类推直到P5,与下面的模 拟输入不同,对于数字输出,引脚号匹配。
}
void loop(){
digitalWrite(0,HIGH); //将引脚设为高电平(5 V)
delay(1000);
digitalWrite(0,LOW); //将引脚设为低电平(GND)
delay(1000);
}
(2)DigitalRead (数字读取)功能:
int value=0;
void setup(){
//digispark所有的引脚都可以作为数字输入。
pinMode(0,INPUT); // 括号里写0是P0,1是P1,2是P2,依此类推直到P5,与数字 写入使用方法相同。
}
void loop(){
value = digitalRead(0);
}
(3)AnalogRead (模拟读取)功能:
int sensorValue = 0;
void setup(){
//在使用模拟读取的功能时,PinMode语句里写板子上对应的序号,而analogRead里需要写对应的数字,这个在下面的loop里有说明。
pinMode(2,INPUT); //设置P2为输入引脚
pinMode(3,INPUT); //设置P3为输入引脚
pinMode(4,INPUT); //设置P4为输入引脚
pinMode(5,INPUT); //设置P5为输入引脚
}
void loop(){
sensorValue = AnalogRead(1); //读取P2
//此为P2,P2为模拟输入1,因此在使用模拟读取时,将其称为1。
sensorValue = AnalogRead(3); //读取P3
//此为P3,P3为模拟输入3,因此在使用模拟读取时,将其称为3。
sensorValue = AnalogRead(2); //读取P4
//此为P4,P4为模拟输入2,因此在使用模拟读取时,将其称为2。
sensorValue = AnalogRead(0); //读取P5
//此为P5,P5为模拟输入0,因此在使用模拟读取时,将其称为0。
}
(4)AnalogWrite (模拟写入)功能:
void setup(){
// digispark只有P0,P1和P4具有硬件PWM(analogWrite)的功能。
pinMode(0,OUTPUT); // 0是P0,1是P1,4是P4,这里与模拟输入不同,
//对于模拟量(PWM)输出,引脚号与端口号匹配。
}
void loop(){
AnalogWrite(0,255); //PWM输出为(100%)
delay(1000);
AnalogWrite(0,128); //PWM输出为(50%)
delay(1000);
AnalogWrite(0,0); //PWM输出为(0%)
delay(1000);
}
https://www.crunchlearn.com/courses/udemy-hacking-windows-10-and-windows-7-using-digispark/