Digispark ATtiny85 USB Review

2016/04/09 12:53
1/6
Digispark ATtiny85 USB Review
Digispark ATtiny85 USB Review
Aufbau
Der Digispark ATtiny wird schon fast fertig geliefert, einzig die Header muss man noch ein löten. Das
ist sehr schnell gemacht und überhaupt kein Problem.
So sieht er fertig aufgebaut aus, schon sehr kompakt. Er eignet sich also sehr gut für kleine Projekte,
ATtiny typisch wie erwartet.
Boxtec Playground - http://playground.boxtec.ch/
Last update: 2016/04/09 11:40
arduino:attinyusb:digispark http://playground.boxtec.ch/doku.php/arduino/attinyusb/digispark
Programmierung
Als nächstes kümmern wir uns um die Programmierumgebung. Hier stellte bis anhin Digispark eine
angepasste Arduino IDE zur Verfügung. Neuerdings bietet aber die Arduino IDE den Board Manager,
darüber kann ganz einfach die Digisspark Sources dazu installiert werden.
Hier im Digistump Wiki ist alles genau beschrieben. Die URL für die Unterstützung im Board manager
ist folgende:
http://digistump.com/package_digistump_index.json
Jetzt gibt es in der Arduino IDE zusätzlich einige Digispark spezifischen Beispiele. Diese werden jedoch
erst sichtbar wenn auch ein Digispark Board ausgewählt wurde.
Gewöhnungsbedürftig ist dann vor allem dass in der Arduino IDE kein COM Port sichtbar ist und dass
das Board erst auf Auforderung von der IDE eingesteckt werden soll.
Also erst Programmieren, Uploaden und dann warten bis die IDE das Board verlangt und erst dann
einstecken. Hier der Dialog:
Danach blinkt die eingebaute LED wie gewünscht und jetzt können wir richtig loslegen.
http://playground.boxtec.ch/
Printed on 2016/04/09 12:53
2016/04/09 12:53
3/6
Digispark ATtiny85 USB Review
Pins
Hier die Auflistung der Pins.
All
Pin
Pin
Pin
Pin
Pin
Pin
pins can be used as Digital I/O
0 → I2C SDA, PWM (LED on Model B)
1 → PWM (LED on Model A)
2 → I2C SCK, Analog
3 → Analog In (also used for USB+ when USB is in use)
4 → PWM, Analog (also used for USB- when USB is in use)
5 → Analog In
Das Model von Boxtec ist Model A, wo die LED auf Pin 1 angeschlossen ist.
Debugging
Der normale Serial Monitor kann nicht wie Arduino üblich genutzt werden. Jedoch bietet der Digispark
einige andere Möglichkeiten. Hier die komplette Auflistung.
Ich habe mir das DigiKeyboard ausgesucht. Unter Libraries/DigisparkKeyboard/examples gibt es ein
Beispiel. Dabei kann mit Hilfe der Library und einem Befehl Text an den Computer gesendet werden.
Somit kann gleich wie beim Serial Monitor damit sehr einfach erfahren werden was das Programm
gerade macht. Sobald das Programm abläuft ein Texteditor auf dem Computer öffnen und schon
werden die Zeichen welcher der Digispark sendet dargestellt.
Beispielanwendung
Boxtec Playground - http://playground.boxtec.ch/
Last update: 2016/04/09 11:40
arduino:attinyusb:digispark http://playground.boxtec.ch/doku.php/arduino/attinyusb/digispark
I2C Digital Potentiometer
Der Attiny85 kann auch mit I2C kommunizieren. Hier als Beispiel ein digitales Potentiometer (
http://shop.boxtec.ch/digital-potentiometer-i2c-10k-mcp4531-103e-p-41307.html). Wichtig: der
Attiny85 hat für die I2C Ports keine Pullup Widerstände. Die Pullup Widerstände müssen also in jedem
Fall, auch bei sehr kurzen Leitungen eingebaut werden. Um das Ergebnis zur prüfen ist eine Led über
das Potentiometer angeschlossen. Damit kann geprüft werden ob sich der Widerstand auch wirklich
ändert.
I2C an Digispark:
●
●
Pin 5 PB0 (SDA)
Pin 7 PB2 (SCL)
Hier der Aufbau:
Und hier das Schema:
http://playground.boxtec.ch/
Printed on 2016/04/09 12:53
2016/04/09 12:53
5/6
Digispark ATtiny85 USB Review
Hier das Coding:
// I2C Digital Potentiometer on Attiny85 / Digispark
//
// Connection:
//
//
MCP4531
Helvetiny85
//
1
GND
//
2
PB2 (SCL)
//
3
PB0 (SDA)
//
4
GND
//
5,6,7 (Poti)
//
8
VCC (5V or 3.3V)
#include <TinyWireM.h>
use USI
// I2C Master lib for ATTinys which
int ledState = LOW;
int potival = 0;
unsigned long previousMillis = 0;
const long interval = 100;
void setup() {
TinyWireM.begin();
}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW){
Boxtec Playground - http://playground.boxtec.ch/
Last update: 2016/04/09 11:40
arduino:attinyusb:digispark http://playground.boxtec.ch/doku.php/arduino/attinyusb/digispark
ledState = HIGH;
potival = 0; }
else {
ledState = LOW;
potival = 127;}
// Send
TinyWireM.beginTransmission(0x2E);
TinyWireM.send(0x00);
TinyWireM.send(potival);
TinyWireM.endTransmission();
}
}
Led Pixel
From:
http://playground.boxtec.ch/ - Boxtec Playground
Permanent link:
http://playground.boxtec.ch/doku.php/arduino/attinyusb/digispark
Last update: 2016/04/09 11:40
http://playground.boxtec.ch/
Printed on 2016/04/09 12:53