Guten Tag mitsammen, ich bastel für einen Verein eine "Mini Tastatur" mit nur drei Tasten. Hierfür wurde mir ein Adafruit Trinket (ATtiny85 @ 8MHz) überlassen. Der Microcontroller hat intern 2 Pullup - Widerstände (meines Wissens) Pin #0 und #2. Die funktionieren auch prima. Ich brauche für die dritte Taste jedoch einen weiteren. Daher habe ich 10k Ohm extern gegen 5V angeschlossen und die Taste gegen Ground angeschlossen. Funktioniert nicht. Experimentieren mit versch. niedrigeren Widerständen und 5V USB statt des 5V Pins hat auch nicht funktioniert. Selbst ein Spannungsteiler der einen Pegel von 4V an den Pin anlegt brachte mich nicht weiter. Ebenfalls ein Pulldown - Widerstand brachte mich nicht weiter. Frage 1: Gibt es einen dritten internen Pullup - Widerstand? Wenn ja, wo? Frage 2: Kann ich es riskieren ohne Widerstand an den NC Kontakt der Taste 5V anzuschließen? (A) Hiermit ist mein Pegel leider nicht ununterbrochen definiert. (B) Füge ich dem Gerät damit dauerhaft Schaden zu? Im Zweifelsfall muss ich durch das analoge Messen der Spannung am Pin damit eine boolsche Variable ansteuern. Diese Lösung würde ich nur ungerne verwenden. Vielen Dank und mit freundlichen Grüßen Robert
:
Bearbeitet durch User
Ich denke jeder Digital Pin hat einen internen Pullup ;) Du kannst pullup/pulldown auf die Digitalpins auch extern verdrahten, das macht nichts kaputt. Das angehängte Bild zeigt mit GELB, Pins die Digital benutzt werden können. Der interne Pullup hat ja 50K oder so.. das kann manchmal zviel sein.. 10k wäre ein gängiger Wert. EDIT: Wie kommste drauf das pin 0 und 2 einen Pullup haben, wegen i2c? Pullup einschalten: pinMode(Pin, INPUT_PULLUP);
:
Bearbeitet durch User
Philipp K. schrieb: > Ich denke jeder Digital Pin hat einen internen Pullup ;) Hallo, danke für deine Antwort. Sie hilft mir leider nicht. Prinzipiell hast du gemäß Datenblatt recht, dass an Port B interne Pullup - Widerstände sind. Jedoch vermute ich, dass der Hersteller einen lediglich sehr vergleichbaren Microchip eingebaut hat (oder mein Exemplar ist an ESD verrekt). Ich habe alle Pins an Port B durchprobiert außer dem sechsten der vom Hersteller nicht angeschlossen wurde. Philipp K. schrieb: > EDIT: Wie kommste drauf das pin 0 und 2 einen Pullup haben, wegen i2c? > Pullup einschalten: pinMode(Pin, INPUT_PULLUP); Auf diese Schlussfolgerung komme ich, da nur an diesen Pins der interne Pullup - Widerstand funktioniert. Sonst hätte ich keinen Bedarf gehabt diesen Beitrag im Forum zu schreiben. Wie das ganze in der IDE implementiert wird ist mir klar. Trotzdem danke^^ Kann mir bitte jemand weiterhelfen, der selber mit diesem Microcontroller oder zumindest dem Microchip arbeitet? Ich wäre ausgesprochen dankbar, wenn eine zuverlässig funktioniertende preiswerte Lösung gefunden wird. MFG
Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup programmieren.
Robert B. schrieb: > Der Microcontroller hat intern 2 Pullup - Widerstände (meines Wissens) > Pin #0 und #2. Die funktionieren auch prima. Der ATtiny85 kann für alle 6 IO-Pins den Pullup einschalten. Du mußt für 3 Tasten bloß ein Programm schreiben, was auch 3 IO-Pins abfragt.
Hallo, Harlekin schrieb: > Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand > angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup > programmieren. richtiger Hinweis. Wenn man nichts ändern will geht nur externer PullDown und Taster gegen Vcc. Beim Drücken des Tasters sollte dann die LED eben leuchten. Abfrage als Input (ohne PullUp) sollte dann gehen. Gruß aus Berlin Michael
Harlekin schrieb: > Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand > angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup > programmieren. Wunderschönen guten Tag, hat funktioniert. Ich danke vielmals für diesen Lösungsvorschlag. EDIT: Zu der Dokumentation des Beitrags ist übrigens noch hinzuzufügen, dass ich nun 3 gleiche Adafruit Trinkets zur Verfügung habe und bei allen das Verhalten gleich ist. Daher kann ich weitesgehend ausschließen, dass ein Exemplar defekt ist oder aber alle drei weisen den selben Fehler auf. Ich danke generell allen die sich an der Lösungsfindung beteiligt haben. In diesem Sinne wünsche ich ein traumhaftes Wochenende allerseits. LG
Robert B. schrieb: > hat funktioniert. Ich danke vielmals für diesen Lösungsvorschlag. Freut mich. Danke für die Rückmeldung.
EDIT: Wenn man auf den Schaltplan guckt erkennt man wo das Problem lag. Meine Vermutung lag somit falsch. Dass die technischen Details vom Hersteller veröffentlicht wurden, habe ich leider erst sehr spät nach verfassen dieses Beitrags entdeckt. https://learn.adafruit.com/introducing-trinket/downloads
Das Problem war Dein ganzer Einstiegsbeitrag.. Ich kannte das Problem zwar vorher schon, habe die Frage nur falsch interpretiert.. und das anscheinend nicht alleine.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.