Eine kleine Frage bezüglich INPUT.
Ich habe zwei Arduinos, eines um Befehle zu registrieren und das andere hat ein MP3 Shield drauf. Wenn ich nun Pin 5 mit Pin 5 verbinde und am "Befehls" Arduino den Output auf HIGH setze und sobald ein Befehl raus geht wird LOW gesendet, reicht es dann den Pin 5 am Arduino mit MP3 Shield auf INPUT zu setzen? Oder brauche ich da trotzdem INPUT_PULLUP? 5V gehen ja generell an Pin 5 raus, ausser das Signal kommt.
Ist das für die Analogen Pins gleich zu handhaben mit INPUT und INPUT_PULLUP?
stef308:
... reicht es dann den Pin 5 am Arduino mit MP3 Shield auf INPUT zu setzen?
Ja, da der Pegel immer HIGH oder LOW ist.
Dennoch würde ich es anders machen: INPUT_PULLUP und wenn der Befehls-Arduino was melden will, dann legt er die Meldeleitung auf LOW. Beispielsweise bei Kabelbruch oder noch nicht bestromten Befehls-Arduino hat der MP3-Arduino ein definiertes Signal.
Die Programmiersprache C bzw C++ hat keine "Befehle" sondern Funktionen.
Ein als Ausgang definiertes Pin hat als Pegel ca 5V wenn es HIGH gesetzt ist und ca 0V wenn es LOW gesetzt ist. Das genügt um von einem Eingang sicher HIGH bzw LOW erkannt zu werden.
Du mußt die Massen der beiden Arduinos verbinden (direkt oder indirekt über die Versorgungsspannugn zB beide über USB am gleichen PC).
Zu den Sicherheitsmaßnahmen.
wie schon gesagt ein Pullupwiderstand (auch der interne ist ausreichend) damit bei einer Unterbrechung zwischen den beiden Arduinos oder wenn der Ausgang zb während des Einschaltens oder versehentlich als Eingang definiert ist, der Eingang einen definierten Zustand hat.
einen Widerstand von 330 oder 470 Ohm zwischen Ausgang und Eingang. So schützt Du die Arduinos falls der Eingang mal aus Versehen als Ausgang definert wird.
Ok, das heisst anstatt INPUT setze ich INPUT_PULLUP. Das gilt auch für die Analogen Pins? Kann man in diesem Fall sagen, dass ein INPUT generell immer mit Pullup-Wiederstand benutzt werden sollte?
@Uwe: Ja, Funktionen stimmt
Die Massen werden über eine Versorgung gespiesen, das ist klar.
Ok, danke für den Hinweis.
Falls die Analogen Pins aber mit den digitalen Pinnummern angesprochen werden (z.B. A0 => Pin 14), dann sind sie wie die Digitalen zu beachten?
stef308:
Ok, danke für den Hinweis.
Falls die Analogen Pins aber mit den digitalen Pinnummern angesprochen werden (z.B. A0 => Pin 14), dann sind sie wie die Digitalen zu beachten?
Ganauer. Wenn Du die Pins A0 bis A5 als digitale Pins verwendest (pinMode(OUTPUT/INPUT/INPUT_PULLUP)) sind das gleichwertige Pins wie die Pins D0 bis D13. Du kannst die mit A0, 14 oder D14 ansprechen.
Meiner Meinung ist die allgemein verwendete Beschreibung für diese Pins irreführend. Besser finde ich: Alle 20 Pins (D0 bis D13, A0 bis A5) sind digitale Pins. Viele haben dazu noch Sonderfunktionen: analoge Eingänge, PWM Ausgänge, Schnittstellen, Interrupt, Counter und Timer.