/*
Ersteller: Learning Solution
Kurs: Arduino Mikrocontroller-Programmierung Grundkurs
Titel: Spannungsmessung Simulation
Beschreibung: Dieses Projekt simuliert eine simple Spannungsmessung mit Hilfe des Arduinos. Über einen einstellbaren Widerstand (Potentiometer)
wird eine Spannung zwischen 0 V und 5V eingestellt. Diese Spannung wird über den Analogen Eingang Pin A0 von Arduino Eingang eingelesen.
Der Arduino wandelt das Analoge Spannungssignal in ein Digitales Signal um! Intern wird ein AD-Wandler verwendet, der nach dem Prinzip
der Sukzessiven Approximation (SAR) arbeitet.
Die Digitale Spannung wird über ein LCD Display ausgegeben und zeigt den aktuelle eingestellten Spannungswert an
Im Folgendem werden die einzelnen Komponenten etwas näher beschrieben
*/
//-------------------------------------------------LEARNING-SOLUTION------------------------------------------------------------------------------------------------------
/*
---------------------------------------------------DAS POTENTIOMETER------------------------------------------------------------------------------------------------------
Das Potentiometer ist ein einstellbarer Widerstand mit 3 Anschlüssen. Wir verbinden einen der äußeren Anschlüssen mit 5 V und den anderen äußeren Anschluss
mit GND. Den mittleren Anschluss, der sogenannte Schleifer bzw. Mittelabgriff, verbinden wir mit A0 am Arduino. So können wir durch das drehen des Potentiometers
eine Spannung von 0 - 5V stufenlos generieren.
*/
/*
---------------------------------------------------DAS LCD-DISPLAY-------------------------------------------------------------------------------------------------------
In diesem Beispiel wurde ein LCD-Display mit einer I2C Schnittstelle ausgewählt. Diese Information ist beim Nachbau wichtig! Andere Displays würden mit diesem Quellcode
nicht funktionieren. Die I2C-Schnittstelle vereinfacht uns die Programmierung und die Verdrahtung des Displays mit dem Arduino. Dafür können wir auf vorgefertigte
Bibliotheken zurückgreifen. In diesem Beispiel wird die Bib. "LiquidCrystal_I2C.h" verwendet. Eine Bibliothek beinhaltet Funktionen, die das programmieren vereinfacht.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define poti A0 // der Befehl #define ist eine Art Synonym. Im späteren Programmcode verwenden wir nun "poti", anstatt A0. So können wir den Code später einfacher lesen
int wert=0;
double spannung=0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
wert=analogRead(A0);
Serial.print("Dies ist der Eingelesene Wert: ");
Serial.println(wert);
spannung = 5.0/1024*wert;
delay(2000);
Serial.print("Die umgerechnete Spannung ergibt :");
Serial.print(spannung);
Serial.println(" Volt");
lcd.setCursor(0, 0);//Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile.
lcd.print("aktueller Wert:");
lcd.setCursor(0, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile.
lcd.print(spannung);
lcd.setCursor(5, 1);
lcd.print("Volt");
}