Forum: Mikrocontroller und Digitale Elektronik Arduino: Kann man einen Aanalogen Pin als Digitalpin konfigurieren?


von Chris (Gast)


Lesenswert?

Obwohl der Mega verwendet wird, fehlen mir noch ein paar Digitalpins. 
Analogpins hingegen brauche ich nicht. Daher die Frage, ob man die 
Analogpins als "reine Digitalpins" konfigurieren kann, also als Digital 
INPUT?

Als Digital OUTPUT lassen sie sich ja konfigurieren: pinMode(A0, 
OUTPUT). Ich nehme an, als Digital INTPUT lassen sie sich nicht 
konfigurieren? Ist eigentlich auch unnütz, weil man Analogeingänge "so 
wie sie ist" ja sowieso als Digitaleingang verwenden kann.

Was ich nicht weiß ist, sind die "Nebenwirkungen". z.B. was die 
Lesegeschwindigkeit des Analogeingangs betrifft. Außerdem vermute ich, 
dass Analogeingängen keine Pull-Up-Widerstand geschaltet werden können, 
diese also keine "reine Digitalpins" werden können.

Bitte klärt mich mal auf über diese Kleinigkeit. Vielleicht gibts ja 
einen Trick, wie ich die Analogpins ändern kann.

Zweite Frage: Wenn ich einen Teil der Analogeingänge verwende, kann ich 
die anderen am selben Port "schwebend" lassen, oder gibts da 
Übersprechprobleme? Also offene A-Eingänge über je eine R auf GND legen?

von Stefan F. (Gast)


Lesenswert?

Ja, geht in beide Richtungen, ohne Tricks.

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ja, geht in beide Richtungen, ohne Tricks.
wie jetzt? Mit dem pinMode Befehl?

von Stefan F. (Gast)


Lesenswert?

Chris schrieb:
> Stefan ⛄ F. schrieb:
>> Ja, geht in beide Richtungen, ohne Tricks.
> wie jetzt? Mit dem pinMode Befehl?

Ja sicher, womit sonst?

Du kannst unbenutzte Eingänge offen lassen. Allerdings neigen sie dazu, 
auf elektromagnetische Wellen zu reagieren und die Stromaufnahme unnötig 
zu erhöhen. Das wird wohl nur auffallen, wenn man auf Bruchteile von mA 
achtet.

Besser ist es, sie mit VCC oder GND zu verbinden, oder als Ausgang zu 
konfigurieren oder als Eingang mit Pull-Up. Es geht darum, dass sie 
einen eindeutigen LOW oder HIGH Pegel haben sollen.

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Chris schrieb:
>> Stefan ⛄ F. schrieb:
>>> Ja, geht in beide Richtungen, ohne Tricks.
>> wie jetzt? Mit dem pinMode Befehl?
>
> Ja sicher, womit sonst?
Danke.

Nur mal zum lernen: Wenn ein analoger Inputpins über pinMode zum 
Digitalpin wurde, mit welchem Befehl macht man ihn wieder zum Analogpin? 
Leider stehe ich noch etwas am Dunkeln, vielleicht denke ich einfach nur 
in die falsche Richtung.

von HildeK (Gast)


Lesenswert?

Sieht nach Arduino aus?
Welcher ATMega ist in deinem Board verbaut? Für den gibt es 
Datenblätter, die dir die Fragen direkt beantworten.

Die meisten IO-Pins sind konfigurierbar und sind nach dem Einschalten 
digitale Eingänge. Erst die SW bestimmt, ob ein solcher Eingang auf 
einen ADC führt. Ausnahmen gibt es: z.B. bei MEG328 (und verwandten) 
sind zwei der acht ADC-Eingänge nur für den ADC verwendbar. Alle anderen 
sind auch als digitale Pins verwendbar, als Eingang auch mit PU 
definierbar und sind vollwertige digitale IOs.

Chris schrieb:
> Zweite Frage: Wenn ich einen Teil der Analogeingänge verwende, kann ich
> die anderen am selben Port "schwebend" lassen, oder gibts da
> Übersprechprobleme? Also offene A-Eingänge über je eine R auf GND legen?

Es wird ja nicht der ganze Port auf die ADC-Verwendung geschaltet, 
sondern nur der jeweilige Pin. Die anderen an dem Port verhalten sich so 
wie jeder andere digitale Pin auch und sollten auch so verwendet werden; 
also z.B. den Eingang nicht offen lassen, wenn unbenutzt. Dazu reicht 
aber der interne PU oder einfach den Pin auf Output schalten.

von Stefan F. (Gast)


Lesenswert?

Chris schrieb:
> Nur mal zum lernen: Wenn ein analoger Inputpins über pinMode zum
> Digitalpin wurde, mit welchem Befehl macht man ihn wieder zum Analogpin?

Natürlich mit pinMode.

Es gibt keine analogen Pins. Alle diese Pins sind primär ganz normale 
digitale I/O Pins*.

Es gibt nur welche, die mit dem ADC verbunden werden können, und andere 
wo das nicht geht.

*) Eine kleine Ausnahme: Die SMD Version vom ATmega328 hat einen Eingang 
ADC7, welcher auf den Arduino Uno/Nano Boards nicht verwendet wird. 
Dieser kann wirklich nur analog gelesen werden.

von HildeK (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die SMD Version vom ATmega328 hat einen Eingang
> ADC7, welcher auf den Arduino Boards nicht verwendet wird.

Es sind ADC6 und ADC7, die das betrifft, also zwei Pins.

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Chris schrieb:
>> Nur mal zum lernen: Wenn ein analoger Inputpins über pinMode zum
>> Digitalpin wurde, mit welchem Befehl macht man ihn wieder zum Analogpin?
>
> Natürlich mit pinMode.
>
> Es gibt keine analogen Pins. Es gibt nur welche, die mit dem ADC
> verbunden werden können, und andere wo das nicht geht.

Jetzt schlagt mich nicht gleich. Ich weiß, ich stehe irgendwo am 
Schlauch. Ich habe hier gelesen: 
https://www.arduino.cc/reference/de/language/functions/digital-io/pinmode/ 
Aber wie WÜRDE (...wenn man es wollte...) der Digitalpin wieder analog? 
Da steht nix ...

Das ist jetzt reine Theorie. Meine Fragen wurden beantwortet, danke 
dafür.

von Schlaumaier (Gast)


Lesenswert?

Alle Analogen Daten sind digital wenn man das will ;)

https://www.youtube.com/watch?v=zaMemluFaoM

Hier ist ein einfaches Beispiel für diese Aussage.

Der Trick ist. Man muss nur den Schwellenwert bestimmen. Wird der 
überschritten ist das Signal HIGH = 1 ansonsten Low = 0 .

In den Beispiel wird mit Hilfe des programmierten Schwellenwert erkannt 
welcher Taster gedrückt wurde.

Der einzige Vorteil eines analogen Pin ist es, das man viel feiner 
Abtasten kann wie bei Digital. Bei Audio ist das der Krieg zwischen 
Schallplatte und CD. ;)

von Stefan F. (Gast)


Lesenswert?

Chris schrieb:
> Aber wie WÜRDE (...wenn man es wollte...) der Digitalpin wieder analog?
> Da steht nix ...

Nochmal:

Alle Pins können digital gelesen werden. Und zwar immer, ganz egal ob 
sie als Eingang oder Ausgang konfiguriert sind.

Die Pins die am Arduino als A0..A6 beschriftet sind, können zusätzlich 
auch analog gelesen werden. Und zwar immer, ganz egal ob sie als Eingang 
oder Ausgang konfiguriert sind.

Nur der 7. analoge Eingang des ATmega328 (das wäre A7) kann nur analog 
gelesen werden. Er hat keine digitale Funktion.

Selbst wenn du einen Pin als OUTPUT konfiguriert hast, kannst du seine 
Spannung analog einlesen. Du willst ihn aber wohl eher als INPUT 
verwenden. Geht auch. Einfach so. Ohne Tricks.

Man kann einen Pin nicht als "analog" Konfigurieren. Die Eingänge A0 bis 
A6 sind immer analog lesbar. Was du konfigurieren kannst, ist die 
Signal-Richtung INPUT oder OUTPUT.

Und nein, der Mikrocontroller kann keine analogen Spannungen ausgeben. 
Das was Arduino analogWrite() nennt, sind pulsierende digitale 
Signalemit Pulsweitenmodulation (PWM).

von HildeK (Gast)


Lesenswert?

Chris schrieb:
> Aber wie WÜRDE (...wenn man es wollte...) der Digitalpin wieder analog?

Indem man ihn einfach mit analogRead(Ax) anspricht. 'x' steht für die 
Kanalnummer.

von HildeK (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Nur der 7. analoge Eingang des ATmega328 (das wäre A7) kann nur analog
> gelesen werden. Er hat keine digitale Funktion.

Nochmal: Das gilt für ADC6 und ADC7!

von Stefan F. (Gast)


Lesenswert?

HildeK schrieb:
> Das gilt für ADC6 und ADC7!

Ja

von Schlaumaier (Gast)


Lesenswert?

Und von A4+A5 würde ich auch die Finger lassen. Die brauch man für 
wichtigere Dinge ;)  i2c z.b. ;)

von Wolfgang (Gast)


Lesenswert?

Schlaumaier schrieb:
> Alle Analogen Daten sind digital wenn man das will ;)

Die Pins sind ein Stück Blech - weder digital noch analog.

Es geht um die Pins bei irgendeinem "Mega"

Bei einem ATmega328, wie er auf einem Arduino Nano sitzt, hängen sowohl 
Analog- als auch Digitalbeschaltung am Pin. Die Signale vom Pin gegen 
sowohl über den Analogmultiplexer auf den ADC geführt als auch auf den 
digitalen Port. Die Verarbeitung digital vs. analog ist unabhängig und 
grundverschieden.

Wirf einfach mal einen Blick ins Datenblatt, z.B. zuerst auf das Block 
im Kapitel Overview und spar dir deine Allgemeinplätze.

Beitrag #6417481 wurde von einem Moderator gelöscht.
von Einer K. (Gast)


Lesenswert?

HildeK schrieb:
> Chris schrieb:
>> Aber wie WÜRDE (...wenn man es wollte...) der Digitalpin wieder analog?
>
> Indem man ihn einfach mit analogRead(Ax) anspricht. 'x' steht für die
> Kanalnummer.
Das reicht nicht.
Der Pin muss voher mit pinMode zum INPUT gemacht werden.

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Was du konfigurieren kannst, ist die
> Signal-Richtung INPUT oder OUTPUT.
Stefan ⛄ F. schrieb:
> Es gibt keine analogen Pins. Alle diese Pins sind primär ganz normale
> digitale I/O Pins*.

Stefan ⛄ F. schrieb:
> Die SMD Version vom ATmega328 hat einen Eingang
> ADC7, welcher auf den Arduino Uno/Nano Boards nicht verwendet wird.
> Dieser kann wirklich nur analog gelesen werden.
Stefan ⛄ F. schrieb:
> Nur der 7. analoge Eingang des ATmega328 (das wäre A7) kann nur analog
> gelesen werden. Er hat keine digitale Funktion.

warum schreibst du so penetrant falsch?
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

In the TQFP and QFN/MLF package, ADC7:6 serve as analog inputs to the 
A/D converter. These pins are powered from the analog supply and serve 
as 10-bit ADC channels.

Die haben keine Möglichkeit digital out zu geben!

wurde schon um  25.09.2020 17:40 geschrieben

HildeK schrieb:
> Es sind ADC6 und ADC7, die das betrifft, also zwei Pins.

und trotzdem ignorierst du weiter A7 und dichtest dem A6 auch digital 
out zu!

Stefan ⛄ F. schrieb:
> Die Pins die am Arduino als A0..A6 beschriftet sind, können zusätzlich
> auch analog gelesen werden. Und zwar immer, ganz egal ob sie als Eingang
> oder Ausgang konfiguriert sind.
>
> Nur der 7. analoge Eingang des ATmega328 (das wäre A7) kann nur analog
> gelesen werden. Er hat keine digitale Funktion.

Stefan ⛄ F. schrieb:
> Ja, geht in beide Richtungen, ohne Tricks.

ja und je nach Quelle ist die Erde eine Scheibe und dreht sich die Sonne 
um die Erde!

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Das reicht nicht.
> Der Pin muss voher mit pinMode zum INPUT gemacht werden.

Man kann auch Ausgänge analog einlesen. Aus diese Weise kann man z.B 
erkennen, ob ein Ausgang überlastet wird.

von Einer K. (Gast)


Lesenswert?

Hier dreht es sich um eine ATMEGA2560.
Und da sind alle Axx Pins gleichwertig.
Können sowohl digital IO, als auch Analog In.

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
> und trotzdem ignorierst du weiter A7 und dichtest dem A6 auch digital
> out zu!

Du hast etwas übersehen:

HildeK schrieb:
> Das gilt für ADC6 und ADC7!

Stefan ⛄ F. schrieb:
> Ja

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Hier dreht es sich um eine ATMEGA2560.

Wo hast du diese Erkenntnis her?

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Hier dreht es sich um eine ATMEGA2560.

ist wo geschrieben?

ich lese nur:

Chris schrieb:
> Obwohl der Mega verwendet wird

ist das der Arduino Mega?
oder nur der ATmega328?
Ist das der DIP oder der SMD?

es hat keinen Sinn zu antworten wenn jeder was anderes versteht!

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Chris schrieb:
>> Aber wie WÜRDE (...wenn man es wollte...) der Digitalpin wieder analog?
>> Da steht nix ...
>
> Nochmal:
>
> Alle Pins können digital gelesen werden. Und zwar immer, ganz egal ob
> sie als Eingang oder Ausgang konfiguriert sind.

OK. Jetzt hats endlich klick gemacht :-)
Danke allerseits.

von Chris (Gast)


Lesenswert?

Joachim B. schrieb:
> ich lese nur:
>
> Chris schrieb:
>> Obwohl der Mega verwendet wird
>
> ist das der Arduino Mega?
> oder nur der ATmega328?
> Ist das der DIP oder der SMD?

Arduino im Titel. Also der Arduino Mega.

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Man kann auch Ausgänge analog einlesen. Aus diese Weise kann man z.B
> erkennen, ob ein Ausgang überlastet wird.

Interessante Perspektive. Tolles Forum.

von Stefan F. (Gast)


Lesenswert?

Chris schrieb:
> Arduino im Titel. Also der Arduino Mega.

gebe nächstes mal bitte unmissverständlich an, um welche Produkte es 
geht. Das vermeidet Stress. Wegen solchen Unklarheiten wird allzu oft um 
den heißen Brei herum diskutiert.

von Wolfgang (Gast)


Lesenswert?

Chris schrieb:
> Arduino im Titel. Also der Arduino Mega.

Auf jedem aktuellen Arduino Nano sitzt bspw. ein ATmega328.
So klar ist dein "also" wahrlich nicht.

von Chris (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> gebe nächstes mal bitte unmissverständlich an

ja, mache ich doch gerne.

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Auf jedem aktuellen Arduino Nano sitzt bspw. ein ATmega328.
> So klar ist dein "also" wahrlich nicht.

eben

Stefan ⛄ F. schrieb:
> Es gibt keine analogen Pins. Alle diese Pins sind primär ganz normale
> digitale I/O Pins*.

doch die gibt es, versuche doch mal A6 und A7 auf high zu setzen beim 
nano mit ATmega328p
https://components101.com/sites/default/files/component_pin/Arduino-Nano-Pinout.png

ich lese da analog exclusive pins

von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> ich lese da analog exclusive pins

Stefan ⛄ F. schrieb:
> Stefan ⛄ F. schrieb:
>> Ja

von Manfred (Gast)


Lesenswert?

Schlaumaier schrieb:
> Und von A4+A5 würde ich auch die Finger lassen. Die brauch man für
> wichtigere Dinge ;)  i2c z.b. ;)

Ich ärgere mich gerade über den Pro-Mini, da haben die Flitzepiepen A4 
und A5 nicht auf den Steckerleisten. Die zwei liegen neben der Reihe, 
natürlich um 1,27 mm versetzt, sodass man sie auf einer 2,54er 
Lochrasterkarte nicht direkt gesteckt bekommt.

Wenn man Uno oder Nano einsetzt und I2C nicht braucht, gibt es keine 
Restriktionen, die lassen sich ganz normal verwenden!

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
>> Es gibt keine analogen Pins. Alle diese Pins sind primär ganz normale
>> digitale I/O Pins*.
> doch die gibt es

Super Schlaumeier, dass es eine Ausnahme gibt habe ich in der Fußnote 
zum Sternchen geschrieben. Und dass es nicht nur ADC7 sondern auch ADC6 
betrifft, haben auch schon alle gesagt, die aufmerksam dabei sind, nur 
du noch nicht.

Abgesehen davon ist die Diskussion um diese beiden Pins völlig sinnlos, 
da es ja um ein anderes Board geht, wie wir inzwischen wissen. Wissen 
wir doch, oder?

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Super Schlaumeier, dass es eine Ausnahme gibt habe ich in der Fußnote
> zum Sternchen geschrieben. Und dass es nicht nur ADC7 sondern auch ADC6
> betrifft, haben auch schon alle gesagt

ja eben, nur wenn und das mit dem A6 nicht wusstest, warum schreibst du 
dann immer?

Stefan ⛄ F. schrieb:
> *) Eine kleine Ausnahme: Die SMD Version vom ATmega328 hat einen Eingang
> ADC7, welcher auf den Arduino Uno/Nano Boards nicht verwendet wird.
> Dieser kann wirklich nur analog gelesen werden.

und bevor alles klar war schriebst du:

Stefan ⛄ F. schrieb:
> Ja, geht in beide Richtungen, ohne Tricks.

nochmal was war falsch dir es noch mal zu zeigen was du geschrieben 
hast?

ohne wenn und aber?
gebe doch einfach mal zu das du nicht alles weisst und demzufolge auch 
mal die Finger stillhalten kannst!

klar kann man sich irren, aber auch dazu stehen und sich nicht 
rauswinden wollen!

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
> gebe doch einfach mal zu das du nicht alles weisst

Warum soll ich zugeben, was du behauptest? Ich habe nie behauptet, dass 
ich alles weiß.

Ich habe mich daran erinnert, dass ADC7 beim Atmega328 ein rein analoger 
Pin ist. Dass ADC6 auch betroffen ist, habe ich vergessen. Es wurde 
korrigiert, ich habe es bestätigt.

Ich habe mich geirrt. Was für eine Schande! Muss ich jetzt sterben?

Macht dich das scharf?

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Macht dich das scharf?

nö, es würde helfen wenn du nicht zu allem was schreiben würdest, vor 
allem wenn du unsicher bist:

was ist gemeint?
passt die Antwort?

Ich weiss der Narr ist sich stets sicher, nur der Weise zweifelt!
Manchmal sollte ich auch weniger schreiben, aber auch ich habe Fehler.

Beitrag #6417792 wurde von einem Moderator gelöscht.
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
Noch kein Account? Hier anmelden.