0 Daumen
43 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

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.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community