Attiny85 mit mehreren Buttons funktioniert nicht

Ich habe diesen Attiny85

An den Anschlüssen P3, P4 und P5 habe ich ein Button ohne Pullup Widerstand angeschlossen.
von dieser Seite habe ich mir die Infos über den Anschluss von Buttons geholt.
Ich habe die Buttons einfach zwischen GND und dem jeweiligen Pin geschaltet.

Zunächst habe ich das mit einem Button getestet, dass hat auch funktioniert.
Dann habe ich Button2 und Button3 angeschlossen und Programmiert und das hat nicht funktioniert.
Ich habe viel herum probiert. Dann habe ich an Button2 ein 10K Widerstand zu Vcc angeschlossen. Dann hat Button2 funktioniert ohne das ich was im Code geändert habe.
Button 3 bekomme ich aber absolut gar nicht zum funktionieren.

Ich verstehe die Logik nicht. Warum muss ich für Button2 ein externen PullUp nutzen aber für Button1 nicht? Undd warum geht Button3 gar nicht?

Hier der Code, ist nur zum testen:
Button 3 ist hier nicht enthalten aber der war genau so programmiert. Angeschlossen ist Button3 an P5 und die LED sollte dann 3 mal blinken. Aber wie gesagt, dass hat nicht funktioniert.

const int led = 1;
const int button1 = 3;
const int button2 = 4;
int button1_state;
int button2_state;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(button1, INPUT_PULLUP);
  pinMode(button2, INPUT_PULLUP);
}

void loop() {
  button1_state = digitalRead(button1);
  button2_state = digitalRead(button2);

  if (button1_state == LOW) {
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
  }
  
  if (button2_state == LOW) {
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
    delay(500);
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
  }
}

Mit diesem Code funktioniert Button1 und Button2. Wobei ich bei Button2 ein externen 10k Pullup anschliessen muss.

Warum muss ich bei Button2 ein externen PullUp anschliessen und warum funktioniert Button3 weder mit noch ohne externen PullUp?

Dann sieh dir mal das Schaltbild zum Digispark an.
Da kannst du nicht einfach die Pins frei nutzen, sondern musst zuvor schauen, ob das so geht.

Edit:
Z.B. geht der PB5 nicht, da dieser normalerweise Reset ist.
Es sei denn, der ist beim Digispark umprogrammiert. Das musst du im Datenblatt nachshauen.

Und in jedem Fall ist es besser, wenn du dich an Tutorials für den Digispark orientierst und nicht am ATtiny85-Solo.

https://create.arduino.cc/projecthub/alaspuresujay/use-an-attiny85-with-arduino-ide-07740c

Das hab ich auf die schnelle gefunden sieht so aus als sei der Reset deaktiviert zu mindestens teil weise wie link 2 erläutert. Ich würde ehr nen nackten 85er nehmen. ist wohl einfacher mit ISP Programmer. Da weiste dann auch welcher Pin zu nutzen ist.

Danke für eure Antworten.
Ist wohl tatsächlich besser einfach den 8pin Chip zu nehmen.

modi0:
Danke für eure Antworten.
Ist wohl tatsächlich besser einfach den 8pin Chip zu nehmen.

Ganz bestimmt, auch weil man dann selbst entscheiden kann, wie man ihn programmiert.

https://www.elektronik-labor.de/Arduino/Fuses.html
Falls eine ISP schnittstelle vorhanden könnte man es ändern. wie hier im Link beschrieben.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.