+1 Daumen
116 Aufrufe

Aufgabe:

Lege zwei 1,5V Batterien in den Batteriehalter ein. DIe Batterien sind jetzt in Reiihe geschaltet. Stecke das schwarze Kabel in GND und das rote Kabel in A0. Verändere dein Programm so. dass der angezeigte Wert dem Spannungswert (in mV) entspricht. Überprüfe mit einem Voltmeter, ob dein Arduino-Wert mit dem Messwert des Voltmeters vergleichbar ist.

Im Anhang findet ihr die Schaltung im Folgenden den Ansatz für das Code.

2.JPG

 2.JPG

Code:

int sensor=A0;
int messwert;
void setup(){
  Serial.begin(9600);
}
void loop(){
  messwert=analogRead(sensor);
  Serial.println(messwert);
  messwert==Serial.println("3000mV")
  delay(1000);
}

von

1 Antwort

+2 Daumen
 
Beste Antwort

Hi!

Der Arduino Reference kannst du entnehmen, dass das analogRead Signal Werte zwischen 0 und 1023 liefert.

Dabei stellt 1023 fast 5V dar.

Es gibt zwei Möglichkeiten: entweder, du nutzt die map-Methode, um den Wert in mV umzurechnen oder du multiplizierst den Wert mit 0,0049, was genau einer Einheit entspricht.

Also:

void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.println(analogRead(A0)*0.0049 + " mV");
delay(1000);
}
Oder

void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.println(map(0, 1023, 0, 4.9, analogRead(A0)) + " mV");
delay(1000);
}

Beste Grüße

Felix

von

Hi, vielen Dank für die Rückmeldung.

Aber mit der ersten Methode kommt folgende Fehlermeldung:

In function 'void loop()':
6:44: error: invalid operands of types 'double' and 'const char [4]' to binary 'operator+'

und mit der  zweiten Methode zeigt sich nichts auf dem Seriellen Monitor.


Ich freue mich auf die zukommende Antwort.

Klassiker..

Ähm, ja.

Schreib vor das analogRead"" +

und setze die Rechnung analogRead * 0,0049 in Klammern.
Andernfalls die Rechnung erst in einer Variablen speichern und diese dann ausgeben.

Dann funktioniert die Map Methode wohl nicht mit Fließkommazahlen...

Ich habe foldendes Code dargestellt:

int messwert;
void setup(){
    Serial.begin(9600);
}

void loop(){
  messwert=(analogRead(A0)*0.0049);
    Serial.println(messwert+"mV");
    delay(1000);
}

Hierbei kommen keine Fehlermeldungen, aber es lässt sich nichts auch am Seriellen Monitor zeigen.

@Andreaskreuz. Das ist vermutlich blöd. Hat sich das Problem denn gelöst? Sind deine Fragen vom 13.6. immer noch offen und aktuell?

@Lu, was ist vermutlich blöd? Die Fragen sind nicht mehr offen, aber Ich weiß nicht, wie Ich diese lösche.

"aber es lässt sich nichts auch am Seriellen Monitor zeigen." scheint etwas blöd zu sein. Wie hast du das hinbekommen?

Richtig löschen kann ich (als Redakteur) deine Fragen auch nicht. Ich könnte sie aber zu Kommentaren zu dieser Frage umwandeln, falls du denkst, dass die künftig niemanden mehr separat interessieren.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community