Arduino: Kann man einen Aanalogen Pin als Digitalpin konfigurieren?

Gast #6417338
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?
Gast #6417364
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.
Gast #6417370
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.
Gast #6417372
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.
Gast #6417375
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.
Gast #6417383
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.
Gast #6417386
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. ;)
Gast #6417389
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).
Gast #6417474
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.
Gast #6417489
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.
#6417502
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!
#6417622
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
Gast #6417669
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!
Gast #6417711
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?
#6417725
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!
Gast #6417737
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?
Beitrag #6417792 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren