Pages: [1]   Go Down
Author Topic: analogRead  (Read 644 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

wie heißt es richtig:


analogRead(A0) oder analogRead(0)?

Oder ist es egal?

Gruß
OMT.
Logged

Switzerland
Offline Offline
Newbie
*
Karma: 5
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://arduino.cc/en/Reference/AnalogRead

Parameters
pin: the number of the analog input pin to read from (0 to 5 on most boards, 0 to 7 on the Mini and Nano, 0 to 15 on the Mega)

Der Parameter ist also eine ganze Zahl (Integer).
Logged

Regards
ReDiculum

Project:
LASERino

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

analogRead(A0) oder analogRead(0)?
Oder ist es egal?
Wie hat damals Wolfgang Petry in einem seiner Lieder gegrölt? Schei*egal!
OK, ich weiß nicht, ob du den Typen mit den bunten Freundschaftsbändchen noch kennst, aber die Erklärung ist wie folgt:

AO ist in "pins_arduino.h" als Konstante mit dem Wert 14 definiert.
Und im Code von analogRead() in der Datei "wiring_analog.c" wird ziemlich am Anfang kontrolliert, ob die Pin-Nummer gleich oder größer als 14 ist und dann wird 14 abzogen. Was wiederum in deinem Beispiel auch 0 ergibt. Dadurch ist die Angabe entweder als Arduino-Pinnummer oder als Nummer des Kanals möglich.


Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hätte da auch noch eine Frage :-)

Dann macht es also keinen Sinn, Pins mit "const" oder "#define" zu deklarieren?
Wo ist eigendlich der Unterschied zwischen const und #define?
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 146
Posts: 3040
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

analogRead(A0) oder analogRead(0)?

Oder ist es egal?

Das ist auf allen 8-bit Arduinos egal.

Und auf dem 32-bit Arduino Due knobeln die Macher der Software wohl noch, ob das da auch so wird, jedenfalls funktioniert da derzeitig in der Betaversion der Arduino-Version für den Due nur die Variante analogRead(0).
Logged

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wo ist eigendlich der Unterschied zwischen const und #define?
Mit

Code:
const uint8_t A0 = 14;    // Beipiel aus pins_arduino.h
wird eine (konstante) Variable angelegt, die den Wert 14 hat.

Klasse Ausdruck, oder? "Konstante Variable". D.h. sie kann nach der Initialisierung mit dem Wert 14 nicht mehr verändert werden, aber wie jede andere Variable gelesen werden.

Mit

Code:
#define A0  14

wird vom Präprozessor des C-Compilers ein Text-Ersatz durchgeführt (also im Programmcode überall A0 durch 14 ersetzt) und dann der Programmcode mit den durchgeführten Textersetzungen an die nächste Stufe des Compilers weitergegeben.



« Last Edit: February 11, 2013, 06:35:59 am by voithian » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

DANKE für die Erläuterungen!

gruß
omthomas
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3060
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Wo ist eigendlich der Unterschied zwischen const und #define?
Ein kleiner Nachtrag:
Bei const definierst du auch einen Datentyp,
const ist also von der Programm-Klarheit her eigentlich besser ( wenn du den richtigen Datentyp, statt einfach "int" verwendest ).

Wenn alles richtig läuft, macht es keinen großen Unterschied. Der Compiler legt oft für const keine "echten" Variablen in RAM an, sondern optimiert das.
Im Fehlerfall bekommst du andere Meldungen smiley-wink


 
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, jetzt wird einiges Verständlicher, auch ich danke euch :-)
Logged

Pages: [1]   Go Up
Jump to: