Ist der Digispark so nutzbar wie ich es mir vorstelle?

Hallo!

Ich bin gerade auf den Digispark gestoßen und vermute es wäre eine kostengünstige Alternative für ein einen Arduino Pro Micro. Ich bin jedoch nicht sicher ob ich mein Vorhaben wirklich damit umsetzen kann weil ich die Infors leider nicht 100% ergoogeln konnte. Aus diesem Grund schreibe ich euch kurz die Funktion auf die ich umsetzen möchte und dann kann mir eventuelle Jemand sagen ob es geht oder nicht.

Ich möchte an den Digispark an einem PC betreuben und einen Taster sowie 4 Relais anschließen. Wenn der Taster gedrückt wird soll folgendes passieren:

-Tastatureingabe am PC "ESC"
-Reilais 1 an
-1 Sekunde Warten
-Reilais 1 aus
-Reilais 2 an
-1 Sekunde Warten
-Reilais 2 aus
-Reilais 3 an
-1 Sekunde Warten
-Reilais 3 aus
-Reilais 4 an
-Tastatureingabe am PC "ENTER"
-1 Sekunde Warten
-Reilais 4 aus

Der Digispark soll also gleichzeitig als Tastatur und zum ansteuern der Relais dienen. Geht das?
Außerdem würde ich geren wissen, ob die Taste entprellt werden müsste oder ob das unnötig ist?

Vielen Dank im Vorraus!

Entprellen wird nötig sein.

Und ja, der Digispark kann HID spielen.

Geht das?

Du wirst den Reset Pin mit nutzen müssen.

2 Pin Versorgung
4 Relais
2 Pin USB
Macht 8 Pin in Benutzung.

Ok danke! Zwei neue Fragen:

  1. Kann ich den Taster Software Seitig entprellen?

  2. Wieso brauche ich so viele Pins? Der Digispark hat ja eine Micro USB Buchse, kann ich dort nicht sowohl Versorgung als auch HID Funktion nutzen? So hätte ich gerechnet, dann wäre es 1 Pin für den Taster und 4 Pins für die Relais. Wenn das so nicht geht müsste mir auch definitv einer erklären wo ich den Rest der Pins abgreife, direkt am ATTiny85 chip?

Zu 2: Die Micro USB Buchse ist per Gedankenübertragung mit dem ATtiny85 verbunden und die Energie wird mittels Mikrowellen übertragen?

Die Rechnung von combie ist schon richtig :slight_smile:

agmue:
Die Rechnung von combie ist schon richtig :slight_smile:

Bis auf die Taste, dann sind 9 Pins in Benutzung.

1 Pin Taster
2 Pin Versorgung
4 Pin Relais
2 Pin USB

Und dann ist es zu Ende.
Denn der Attiny85 hat nur 8 Beine.

Wenn man sich ein bisschen streckt, dann bekommt man die 4 Relais auch per I2C geschaltet, oder ähnlich.
Dann ist auch der Reset Pin wieder frei.
Aber ob der Aufwand lohnt...?

Hi,

wie sieht es mit Binär zu Dezimal aus, o.ä., da reichen 3 Pins für 7 Relais?

Gruß André

SpaghettiCode:
Hi,

wie sieht es mit Binär zu Dezimal aus, o.ä., da reichen 3 Pins für 7 Relais?

Gruß André

Dann brauchst Du wieder ein weiteres IC. Da nimmt man besser einen größeren Microcontrolle wie den ATtiny84

Grüße Uwe

Vielen Dank für eure Hilfe! Dann holte ich mir einen Arduino Micro Pro, oder kennt ihr eine günstigere Alternative?

Ich bin es noch mal:

Der Micro Pro ist gerodert und ich habe schon einen Sketch geschrieben:

#include "Keyboard.h"
char ctrlKey = KEY_LEFT_CTRL;

  const int tasterPin = 4;          // Taster an Pin4
  const int relais1Pin = 9;         // Relais 1 an Pin 9
  const int relais2Pin = 8;         // Relais 2 an Pin 8
  const int relais3Pin = 7;         // Relais 3 an Pin 7
  const int relais4Pin = 6;         // Relais 4 an Pin 6

void setup() {
  pinMode(tasterPin, INPUT);        // Pin 4 als Eingang verwenden
  pinMode(relais1Pin, OUTPUT);      // Pin 9 als Ausgang verwenden
  pinMode(relais2Pin, OUTPUT);      // Pin 8 als Ausgang verwenden
  pinMode(relais3Pin, OUTPUT);      // Pin 7 als Ausgang verwenden
  pinMode(relais4Pin, OUTPUT);      // Pin 6 als Ausgang verwenden
  
  Keyboard.begin();                 // Keyboard Steuerung aktivieren
}

void loop() {
  int tasterStatus = digitalRead(tasterPin);    // Tastendruck an Pin 4 auslesen
 
   if (tasterStatus == HIGH){                   // Wenn die Taste gedrückt wird
    while (tasterStatus == HIGH) {delay(50);}   // solange 50ms zum entprellen warten bis die Taste losgelassen wird und danach:
   
  digitalWrite(relais1Pin, HIGH);     // Relais 1 an
  Keyboard.write(KEY_ESC);            // Eingabe "ESC" Taste am Computer
  delay(1000);                        // 1 Sekunde warten
  digitalWrite(relais1Pin, LOW);      // Relais 1 aus
  
  digitalWrite(relais2Pin, HIGH);     // Relais 2 an
  delay(1000);                        // 1 Sekunde warten
  digitalWrite(relais2Pin, LOW);      // Relais 2 aus

  digitalWrite(relais3Pin, HIGH);     // Relais 3 an
  delay(1000);                        // 1 Sekunde warten
  digitalWrite(relais3Pin, LOW);      // Relais 3 aus

  digitalWrite(relais4Pin, HIGH);     // Relais 4 an
  Keyboard.write(KEY_RETURN);         // Eingabe "ENTER" Taste am Computer
  delay(1000);                        // 1 Sekunde warten
  digitalWrite(relais4Pin, LOW);      // Relais 4 aus

  }
}

Jetzt würde ich als erstes gerne Wissen ob der Code so funktioniert wie ich es mir vorgestellt habe: Die Relais werden erst angesteuert NACHDEM die Taste losgelassen wurde.

Und dann habe ich noch eine generelle Verständnisfrage zu meinem Vorhaben:

Ich möchte das Skript zum einen über den besagten Taster starten können aber auch über ein seperates Funk Modul. Dazu müsste ich nach meinem Verständnis den Pin4 als input definieren und Low setzten. Dann kann ich Spannung anlegen und mein Script wird gestartet. Ich könnte das somit per Taster und 5V Pin des Arduino sowie meinem Funk Modul und dessen 5V ausgabe realisieren oder? Der Pin 4 des Arduino muss dann zusätzlich ledichlich noch mit einem Widerstand (ca 100k Ohm) zum GND Pin verbunden werden oder?