Title: Programmieranleitung Arduino-IDE
Course: iMINT Akademie Unterrichtsmodul intelligente Solarzelle (iSolar) > Section: Experiment 3: Die Spannung der Solarzelle mit dem Arduino messen

Schreibe ein Programm zur Messung der Spannung mit der Arduino IDE.

Grundprogramm

Mit dem folgenden Programm lassen sich die Spannungswerte mit dem Arduino messen.

- Vollziehe das Programm zunächst nach.
- Lade das Programm anschließend auf den Arduino.

Programm

int sensorValue = 0;       // Variable 'sensorValue' den Spannungswert aus der Solarzelle
const int analogInPin = A0; // Der Pluspol der Solarzelle wird an Pin A0 angeschlossen

String ausgabe;

void setup()
{
  // Serielle Kommunikation mit dem PC - Übertragungsrate 9600 Baud (Bits/s)
  Serial.begin(9600);
}

void loop()
{
  // Lese den Spannungswert der Solarzelle
  sensorValue = analogRead(analogInPin);

  ausgabe = "solarcell = ";
  ausgabe += sensorValue;
  ausgabe += "\n";   // neue Zeile
            Serial.print(ausgabe);

  delay(1000);
}

Ausgabe ansehen

Die gemessenen Werte können zunächst am PC angezeigt werden. Öffne hierzu in der Arduino-IDE den seriellen Monitor (Tools->Serieller Monitor).

Experimentiere nun wieder mit verschiedenen Lichtquellen und verschiedenen Positionen der Solarzelle und schaue dir dabei die Ausgabe an.

Wie du siehst werden hier für die Spannung aktuell Werte zwischen 0 und 1023 angezeigt. Ein Wert von 0 entspricht dabei 0V und ein Wert von 1023 entspricht 5V. Im nächsten Schritt kannst du diese Ausgabe noch etwas verbessern.

Das Bild "Messwerte am PC" wurde von Axel Mosch im Auftrag der iMINT Akademie erstellt. Es ist lizenziert unter Creative Commons BY-SA-3.0-de.

Ausgabe verbessern

Um die gemessenen Ganzzahlwerte in Volt anzuzeigen müssen diese umgerechnet werden.

Hierzu kannst du die Methode "loop" aus dem Grundprogramm folgendermaßen anpassen:

void loop()
{
  // Einlesen, Umwandeln und Ausgeben des gemessenen Spannungswertes:
  sensorValue = map(sensorValue, 0, 1023, 0, 500);
  ausgabe = "solarcell = ";
  ausgabe += sensorValue / 100;
  ausgabe += ",";
  ausgabe += sensorValue % 100;
  ausgabe += " V \n";
  Serial.print(ausgabe);
  delay(1000);
}


Der Operator " / " ist hierbei die ganzzahlige Division und mit dem Operator " % " kann der bei der ganzzahligen Division auftretende Rest ausgegeben werden.

Erkläre die Funktionsweise der Methode "map".