Helevtiny84 Tutorials

Hier findet Ihr Beispiele/Tutorials welche den Helvetiny84 in der Anwendung zeigen.

Achtung bei der Anwendung immer folgendes beachten:

Da der Attiny84 am USB Port vom Computer hängt sind die Pins BP0 (D10) und BP1 (D9) nur mit Einschränkungen zu verwenden. In der 5 Volt Version hängt an beiden Pins je eine 3.6 Volt Zehner Diode. Zudem ist am BP0 (D10) ein Widerstand mit VCC verbunden. Die anderen Pins sind somit die Erste Wahl und sollten vorwiegend genutzt werden.

Natürlich funktionieren auch die Beispiele von seinem kleinen Bruder dem Helvetiny85.

Analog-In mit Blink

Der analoge Eingang wird gelesen um damit die Geschwindigkeit der Led zu steuern. Die Led mit Vorwiderstand ist auf Pin PA1 (D1) angeschlossen. Der Potentiometer ist zwischen VCC und GND angeschlossen. Der Mittlere Kontakt (Abnehmer) ist auf PA0 (A0) angeschlossen.

int sensorPin = A0;
int sensorValue = 0;
int ledPin = 1;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  digitalWrite(ledPin, HIGH);
  delay(sensorValue);
  digitalWrite(ledPin, LOW);
  delay(sensorValue);
}

Led Pixel

Ein Led Pixel ist eine ganz tolle Sache. Damit kann man mit wenig Bauteilen viele Effekte erstellen. Mit dem Helvetiny84 ist es einfach möglich LedPixel anzusteuern. In unserem Beispiel haben wir einen Led Pixel angeschlossen. VCC und GND an die dafür vorgesehen Anschlüsse und D-IN an PB1 (D8). Achtungt mit dieser verwendeten Adafruit NeoPixel Library funktionieren die LED Pixel nur an D8. Das ist weil diese Library nur PB* Pins unterstützt. Beim Helvetiny84 ist D8 der einzige PB* Pin welcher noch frei ist. Alternativ kann diese Library verwendet werden damit auch via D0 bis D7 ein Led Pixel angeschlossen werden kann. (https://github.com/SpenceKonde/Adafruit_NeoPixel_PortA)

Um das ganze etwas interessanter zu machen, verwenden wir hier auch noch ein Potentiometer. Damit kann die Farbe vom Led Pixel gesteuert werden. Das Potentiometer wird wie im Beispiel vorher an PA0 (A0) angeschlossen.

Wir verwenden die Adafruit Neopixel Library. Die kann in der Arduino IDE sehr einfach über den Library Manager installiert werden.

/*
 LedPixel Programm Example Helvetiny84
*/

#include <Adafruit_NeoPixel.h>

#define PIN 8 // on Helvetiny84 PB2 / D8

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ400);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit...if you must, connect GND first.

int Brightness = 20;
int Speed = 50;
int sensorPin = A0;
int sensorValue = 0; 

void setup() {
  delay(500);
  strip.begin();
  strip.show();
}

void loop() {
  
  sensorValue = analogRead(sensorPin);
  int a = map(sensorValue,0,1023,0,255);
  strip.setPixelColor(0, Wheel((a)));
  strip.setBrightness(Brightness);
  strip.show();
  delay(Speed);
  
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

Serielle Verbindung

Um vom Helvetiny84 Daten auf den Computer oder an andere Chips zu übergeben nutzen wir in dem Beispiel die Serielle Schnittstelle. Der Chip bietet keine integrierte Möglichkeit. Deshalb greifen wir auf die Bibliothek SoftwareSerial.h zurück. In dem Beispiel verbinden wir den Helvetiny84 mit einem USB2SERIAL Adapter (FTDI) Chip.

Achtung RX vom Helvetiny84 wird mit TX vom FTDI Chip, und umgekehrt verbunden.

Zuerst laden wir mit der Arduino IDE das unten aufgeführte Programm auf den Helvetiny84 Chip. Danach verbinden wir die Arduino IDE mit USB Port vom FTDI Chip. Jetzt meldet sich der Helvetiny84 über die serielle Schnittstelle und wir können Ihm auch Daten senden.

Wichtig ist dass wir die gleiche Baud Rate im Programm und in der Arduino IDE verwenden. Hier in dem Beispiel: 9600 bps.

/*
  Example: Software serial Helvetiny84

  Pin D2 PA2 RX => TX on Computer
  Pin D3 PA3 TX => RX on Computer

  The Example can send and receive Data from a Serial Interface
  
 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, my name is Helvetiny84!");
  mySerial.println("Give me some input:");
}

void loop() { // run over and over
  if (mySerial.available()) {
    char test = mySerial.read();
    mySerial.print("Thanks. You typed: ");
    mySerial.println(test);    
  }
}