====== Data-Logger by DL2FP ======
FIXME ToDo: DL2FP
Zusätzlich wird noch die PC Software gobetwino benötigt. [[http://mikmo.dk/gobetwinodownload.html]]
===== Version 1 =====
/*
Wohnmobil Board Spannungsmesser und Lichtwert mit LCD-Anzeige und seriel-out
(c) by DL2FP 2013-19-02
(( am EPC auf COM1 mit Arduino verbinden , USB links vorne am EPC,
da bei COM9 die USB nach einiger Zeit abschaltet!))
Arduino Pins !!!
___________________
mini USB !!! EPC
DC Buchse
ISP 6 POL
IOREF
Reset
+3,3 V (Power)
+5 V (Power) !!! Versorgungsspannung
GND (Power) !!! Versorgungsspannung
GND (Power)
+Vin (Power)
A0 analog in !!! sensor1 Volt
A1 analog in !!! sensor2 Licht
A2 analog in
A3 analog in
A4 analog in
A5 analog in
SCL
SDA
AREF
GND
-13 digital PWM intern LED morse Status
12 digital !!! LCD-Display
-11 digital PWM !!! LCD-Display
-10 digital PWM
-9 digital PWM !!! Lautsprecher
8 digital
7 digital
-6 digital PWM
-5 digital PWM !!! LCD-Display
4 digital !!! LCD-Display
-3 digital PWM !!! LCD-Display
2 digital !!! LCD-Display
TX->1
RX<-0
*/
// include the library codes:
#include // include LCD Display
#include // include morse code.
// initialize the LCD-Display library with the numbers of the interface pins
// LCD-Display Pin1 GND, Pin2 +5V, Pin3 Poti, Pin5 GND, 4-12, 6-11, 11-5, 12-4, 13-3, 14-2, (Display_Pin-Arduiono_Pin)
// 540 Ohm nach GND, 1k2 Ohm nach +5V, Mitte an Pin3 anstelle des Poti!
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Morse morse1(9, 30, 1); // initialize Morse and Setup speaker to pin 9
int z = (0); // varialble z, Zähler für Einschalt-Verzögerung
const int mz=(5000); // mz = Zeit zwischen 2 Messwerterfassungen.
// the setup routine runs once when you press reset:
void setup() {
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
lcd.print("MOMMENT BITTE"); // Print a message to the LCD.
Serial.begin(9600); // initialize serial communication at 9600 bits per second:
// nur für Leonardo Board, warten -- bis die serielle Scnittstelle abgefragt wird.
// while (!Serial) {
// ;
// }
}
// the loop routine runs over and over again forever:
void loop() {
// Einschaltverzögerung
while (z < 2) {
// delay = Zeit der Einschalt-Verzögerung
delay (5);
z++;
morse1.sendmsg("OK"); // Status morse LSP
}
// Meßwert einlesen und für die Anzeige umrechnen
int sensor1 = analogRead(A0); // read the input Voltage on analog pin A0:
float Anzeige1 = (sensor1/51.2); // durch 51.2 umskalieren auf 20V
char buffer1[5]; // Umwandlung int in Char für Serial.print
int sensor2 = analogRead(A1); // read the input Light on analog pin A1:
float Anzeige2 = (sensor2/10.24); // durch 10,24 um auf 100% zu skalieren.
char buffer2[5]; // Umwandlung int in Char für Serial.print
// print out the value you read Sensor1 Volt, sensor2 Licht : to seriel-Monotor
// Format für speichern in Datei c:\Programme\gobetwino\daten1.txt
Serial.print ("#S|SENSOR1|[");
Serial.print(itoa((sensor1), buffer1, 10));
Serial.print (";");
Serial.print(itoa((sensor2), buffer2, 10));
Serial.println ("]#");
delay(mz); // Zeit zwischen zwei Messwerten
// Status Ausgabe auf Lautsprecher pin 9 in morsecode
Morse morse1(9, 30, 1);
if (Anzeige1 < 10.00) morse1.sendmsg("E"); // EMPTY
if (Anzeige1 > 14.00) morse1.sendmsg("V"); // VOLL
if (Anzeige1 > 12.00 && Anzeige1 < 14.00) morse1.sendmsg("R"); // READY
if (Anzeige1 > 10.00 && Anzeige1 < 12.00) morse1.sendmsg("L"); // LOAD need
{
}
// LCD - Display Anzeige setzen
lcd.begin(16, 2); // (note: line 1 is the second row, since counting begins with 0):
lcd.print("SPANNUNG LICHT "); // Überschrift setzen Zeile 1
lcd.setCursor(0, 1); // set the cursor to column 0, line 2
lcd.print(" "); // Zeile 2 löschen
// Werte Anzeigen
lcd.setCursor(1,1);
lcd.print(Anzeige1); // Volt
lcd.setCursor(7,1);
lcd.print("V");
lcd.setCursor(10,1);
lcd.print(Anzeige2); // Licht
lcd.setCursor(15,1);
lcd.print("%");
delay(1); // Sicherheitshalber !
}
// ENDE
===== Version 2 =====
/*
(c) by DL2FP 2014-07-25 10:45:00
Datenlogger für 2 x 6 Messtellen
!! Die Pin Belgung ist am Ende des Programmes zu finden. !!
*/
// ------------- beginning of the Program Code -----------
#include // needed to display, include LCD Display 16x4
#include // a little bit HAM RADIO .... ..
#include // needed for the temrature Sensor
#include // needed for the KNOB
#include // nedded for the DATE and TIME STAMP
#define TIME_HEADER "T" // Header tag for serial time sync message
#define TIME_REQUEST 7 // ASCII bell character requests a time sync message
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
Encoder knob(2, 3); // Pins des Drehgebers , pin 2 und 3
const int Taster = 12;
int A=0;
void setup() {
lcd.begin(16, 4); // set up the LCD's number of columns and rows:
lcd.setCursor(0,0); lcd.print(" MOMMENT BITTE ");
lcd.setCursor(0,1); lcd.print(" ");
lcd.setCursor(16,0); lcd.print("SETUP LAEUFT....");
lcd.setCursor(16,1); lcd.print(" ");
Serial.begin(38400);
pinMode(13, OUTPUT);
pinMode (Taster, INPUT_PULLUP);
// initial Time
if (timeStatus() == timeNotSet) { // T1405944000 startzeit setzen
const long inittime=1405944000; unsigned long pctime=inittime; setTime(pctime);
}
int A=0;
}
// ------------------------------ Ende VOID - SETUP -------------------------------------
void loop(){
// morseout(); // Eine Meßstelle wird per morsecode überwacht falls gewünscht.
AusgabeSerial();
// Taster abfragen und die Menues durchschalten
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 50; // the debounce time; increase if the output flickers
int reading = digitalRead (Taster);
if (reading != lastButtonState) {
lastDebounceTime = millis(); // reset the debouncing timer
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state:
buttonState = reading;
}
if (A > 7) { // variable A steuert die swich case Menues.
A=A-7; // Anzahl der Menues +1
}
if ((reading == LOW) && (reading == lastButtonState)) { // Taster gedrückt
A=A+1;
delay(1000);
}
else {
delay(1000);
}
lastButtonState = reading;
// swichcase schaltet in die Menues
switch (A) {
case 1:
menue1(); // ALLE Messwerte anzeigen
delay(500);
break;
case 2: // ???
menue2();
delay(500);
break;
case 3: // ???
menue3();
delay(500);
break;
case 4: // Jahr und sekunde aendern
menue4();
delay(500);
break;
case 5: // Datum aendern
menue5();
delay(500);
break;
case 6: // Zeit aendern
menue6();
delay(500);
break;
case 7:
hauptmenue();
A=0;
delay(500);
break;
default:
hauptmenue();
delay(1000); // je nach delay werden Serial Daten geschrieben, delay=1000 entspr. ca. alle 2 Sekunden einmal.
}
}
// ------------------------------ Ende VOID - LOOP ---------------------------------------------------------
// Unterprogramme:
//------------------ void digitalClockDisplay(){ ------------------------------------------
void digitalClockSerial(){
// digital clock display of the time
printDigits(day()); Serial.print("."); printDigits(month()); Serial.print("."); Serial.print(year()); Serial.print(";");
printDigits(hour()); Serial.print(":"); printDigits(minute()); Serial.print(":"); printDigits(second()); Serial.print(";");
delay(10);
}
//------------------ void digitalClockLcdDatum(){ ------------------------------------------
void digitalClockLcdDatum(){
// digital clock display of the time
printlcdDigits(day()); lcd.print("."); printlcdDigits(month()); lcd.print("."); lcd.print(year()); lcd.print(" ");
delay(10);
}
//------------------ void digitalClockLcdZeit(){ ------------------------------------------
void digitalClockLcdZeit(){
// digital clock display of the time
printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute()); lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
delay(10);
}
//------------------ void digitalClockLcdyyyyss(){ ------------------------------------------
void digitalClockLcdyyyyss(){
// digital clock display of the time
lcd.print(year()); lcd.print(" ");
printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute()); lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
delay(10);
}
//------------- void digitalClockLcdHauptmenue(){ ------------------------------------------
void digitalClockLcdHauptmenue(){
// digital clock display of the time
printlcdDigits(day()); lcd.print("."); printlcdDigits(month()); lcd.print(" ");
printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute()); lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
delay(10);
}
//------------- void digitalClockDisplay(){ ------------------------------------------
void digitalClockDisplay(){
// digital clock display of the time
printlcdDigits(day()); lcd.print("."); printlcdDigits(month()); lcd.print("."); lcd.print(year()-2000); lcd.print("");
printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute()); lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
delay(10);
}
//------------- void printDigits(int digits){ ------------------------------------------------
void printDigits(int digits){
// utility function for digital clock displaySerial: prints preceding colon and leading 0
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
//------------- void printlcdDigits(int digits){ -----------------------------------------
void printlcdDigits(int digits){
// utility function for digital clock displayLCD: prints preceding colon and leading 0
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
//------------- void morseout() { -----------------------
void morseout() {
// Status Ausgabe auf Lautsprecher or LED Pin 13 in morsecode
// Meßwert einlesen und für die Anzeige umrechnen
int M06 = analogRead(A5); float AnzM06 = (M06*15/1024); char buffer6[5];
Morse morse(13, 20, 1);
if (AnzM06 < 10.00) morse.sendmsg("E"); // EMPTY
if (AnzM06 > 14.40) morse.sendmsg("O"); // overload
if (AnzM06 > 13.80 && AnzM06 < 14.40) morse.sendmsg("L"); // loading
if (AnzM06 > 12.00 && AnzM06 < 13.80) morse.sendmsg("R"); // READY
if (AnzM06 > 10.00 && AnzM06 < 12.00) morse.sendmsg("N"); // need LOAD
}
//------------- void AusgabeLcdMesswerte() { -----------------------------
void AusgabeLcdMesswerte() {
// Meßwert einlesen und für die Anzeige umrechnen
int M01 = analogRead(A0); float AnzM01 = (M01/10.24); char buffer1[5];
int M02 = analogRead(A1); float AnzM02 = (M02/51.20); char buffer2[5];
int M03 = analogRead(A2); float AnzM03 = (M03/51.20); char buffer3[5];
int M04 = analogRead(A3); float AnzM04 = (M04/51.20); char buffer4[5];
int M05= analogRead(A4); float AnzM05 = (M05/10.24); char buffer5[5];
int M06= analogRead(A5); float AnzM06 = ((M06*15)/1024); char buffer6[5];
int M07= analogRead(A0); float AnzM07 = (M07/10.24); char buffer7[5];
int M08= analogRead(A1); float AnzM08 = (M08/10.24); char buffer8[5];
int M09= analogRead(A2); float AnzM09 = (M09/10.24); char buffer9[5];
int M10= analogRead(A3); float AnzM10 = (M10/10.24); char buffer10[5];
int M11= analogRead(4); float AnzM11 = (M11/10.24); char buffer11[5];
int M12= analogRead(A5); float AnzM12 = ((M12*15)/1024); char buffer12[5];
// Anzeige LCD - Display 1
lcd.clear();
lcd.begin(16, 4);
lcd.setCursor(0,0); lcd.print("01 "); lcd.print(AnzM01); lcd.setCursor(9,0); lcd.print("02 "); lcd.print(AnzM02);
lcd.setCursor(0,1); lcd.print("03 "); lcd.print(AnzM03); lcd.setCursor(9,1); lcd.print("04 "); lcd.print(AnzM04);
lcd.setCursor(16,0); lcd.print("05 "); lcd.print(AnzM05); lcd.setCursor(25,0); lcd.print("06 "); lcd.print(AnzM06);
lcd.setCursor(16,1);digitalClockDisplay() ;
delay(2000);
// Anzeige LCD - Display 2
lcd.clear();
lcd.setCursor(0,0); lcd.print("07 "); lcd.print(AnzM07); lcd.setCursor(9,0); lcd.print("08 "); lcd.print(AnzM08);
lcd.setCursor(0,1); lcd.print("09 "); lcd.print(AnzM09); lcd.setCursor(9,1); lcd.print("10 "); lcd.print(AnzM10);
lcd.setCursor(16,0); lcd.print("11 "); lcd.print(AnzM11); lcd.setCursor(25,0); lcd.print("12 "); lcd.print(AnzM12);
lcd.setCursor(16,1);digitalClockDisplay();
delay(1);
}
//------------- void AusgabeSerial() { --------------------------
void AusgabeSerial() {
// Meßwert einlesen und für die Anzeige umrechnen
int M01 = analogRead(A0); float AnzM01 = (M01/10.24); char buffer1[5];
int M02 = analogRead(A1); float AnzM02 = (M02/51.20); char buffer2[5];
int M03 = analogRead(A2); float AnzM03 = (M03/51.20); char buffer3[5];
int M04 = analogRead(A3); float AnzM04 = (M04/51.20); char buffer4[5];
int M05= analogRead(A4); float AnzM05 = (M05/10.24); char buffer5[5];
int M06= analogRead(A5); float AnzM06 = ((M06*15)/1024); char buffer6[5];
int M07= analogRead(A0); float AnzM07 = (M07/10.24); char buffer7[5];
int M08= analogRead(A1); float AnzM08 = (M08/10.24); char buffer8[5];
int M09= analogRead(A2); float AnzM09 = (M09/10.24); char buffer9[5];
int M10= analogRead(A3); float AnzM10 = (M10/10.24); char buffer10[5];
int M11= analogRead(4); float AnzM11 = (M11/10.24); char buffer11[5];
int M12= analogRead(A5); float AnzM12 = ((M12*15)/1024); char buffer12[5];
digitalClockSerial(); // Date und Time STAMP
Serial.print(itoa((M01), buffer1, 10)) ; Serial.print (";");
Serial.print(itoa((M02), buffer2, 10)) ; Serial.print (";");
Serial.print(itoa((M03), buffer3, 10)) ; Serial.print (";");
Serial.print(itoa((M04), buffer4, 10)) ; Serial.print (";");
Serial.print(itoa((M05), buffer5, 10)) ; Serial.print (";");
Serial.print(itoa((M06), buffer6, 10)) ; Serial.print (";");
Serial.print(itoa((M07), buffer7, 10)) ; Serial.print (";");
Serial.print(itoa((M08), buffer8, 10)) ; Serial.print (";");
Serial.print(itoa((M09), buffer9, 10)) ; Serial.print (";");
Serial.print(itoa((M10), buffer10, 10)); Serial.print (";");
Serial.print(itoa((M11), buffer11, 10)); Serial.print (";");
Serial.print(itoa((M12), buffer12, 10)); Serial.print (";");
Serial.println ();
}
//------------- void hauptmenue{ -----------------------------------------
void hauptmenue() {
// Display-LCD-hauptmenue
lcd.setCursor(0,0); // beginning ROW 1
lcd.print ("(c)by DL2FP 2014");
lcd.setCursor(0,1); // beginning ROW 2
lcd.print (" Haupt-Menue ");
lcd.setCursor(16,0); // beginning ROW 3
lcd.println("Taster => Menues");
lcd.setCursor(16,1); // beginning ROW 4
digitalClockLcdHauptmenue();
}
//-------- void menue1 Alle Messwerte auf LCD ausgeben --------------------------
void menue1() {
// Display-LCD-menue1
AusgabeLcdMesswerte();
delay(500);
}
//------------- void menue2 ??? -----------------------------------------
void menue2() {
// Display-LCD-menue2
lcd.setCursor(0,0);
lcd.print(" Menue 2 ");
lcd.setCursor(0,1);
lcd.println("Anzeige in Volt ");
lcd.setCursor(16,0);
lcd.print("Spannungs Werte ");
lcd.setCursor(16,1);
digitalClockDisplay();
}
//------------- void menue3 ??? -----------------------------------------
void menue3() {
// Display-LCD-menue3
lcd.setCursor(0,0);
lcd.print(" Menue 3 ");
lcd.setCursor(0,1);
lcd.println(" Anzeige in AMP ");
lcd.setCursor(16,0);
lcd.print(" Strom Messwerte ");
lcd.setCursor(16,1);
digitalClockDisplay();
}
//------------- void menue4 Jahr + Sekunde aendern -----------------------------------------
void menue4() {
// Display-LCD-menue4 Jahr + Sekunde aendern
lcd.setCursor(0,0);
lcd.print ("Menue 4 yyyy+ss");
lcd.setCursor(0,1);
lcd.print ("Schnell == Jahr ");
lcd.setCursor(16,0);
lcd.println("Langsam = Second");
lcd.setCursor(16,1);
digitalClockLcdyyyyss();
long newRight;
long positionRight;
newRight = knob.read()+500;
if (newRight != positionRight) {
positionRight = newRight;
}
delay(500);
// Datum aendern
// T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
unsigned long mytime;
mytime=(now());
unsigned long change_sec; change_sec=1;
unsigned long change_yy; change_yy=31104000;
if (positionRight > 500&&positionRight<520) {
mytime=mytime+change_sec; //Tag ändern plus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 500&&positionRight>480) {
mytime=mytime-change_sec; //Tag ändern minus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight > 520) {
mytime=mytime+change_yy; //Monat ändern plus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 480) {
mytime=mytime-change_yy; //Monat ändern minus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
knob.write(0); // reset Knob
}
//------------- void menue5 Datum aendern -----------------------------------------
void menue5() {
// Display-LCD-menue5 Datum aendern
lcd.setCursor(0,0);
lcd.print("Menue 5 Datum");
lcd.setCursor(0,1);
lcd.print("Langsam == TAG ");
lcd.setCursor(16,0);
lcd.println("Schnell == Monat");
lcd.setCursor(16,1);
digitalClockLcdDatum();
long newRight;
long positionRight;
newRight = knob.read()+500;
if (newRight != positionRight) {
positionRight = newRight;
}
delay(500);
// Datum aendern
// T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
unsigned long mytime;
mytime=(now());
unsigned long change_dd; change_dd=86400;
unsigned long change_mon; change_mon=2592000;
if (positionRight > 500&&positionRight<520) {
mytime=mytime+change_dd; //Tag ändern plus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 500&&positionRight>480) {
mytime=mytime-change_dd; //Tag ändern minus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight > 520) {
mytime=mytime+change_mon; //Monat ändern plus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 480) {
mytime=mytime-change_mon; //Monat ändern minus !!!
setTime(mytime);
knob.write(0); // reset Knob
}
knob.write(0); // reset Knob
}
//------------- void menue6 Zeit aendern---------------------------------
void menue6() {
// Display-LCD-menue6 Zeit aendern
lcd.setCursor(0,0);
lcd.print ("Menue 6 ZEIT");
lcd.setCursor(0,1);
lcd.print ("Langsam = Minute");
lcd.setCursor(16,0);
lcd.println("SCHNELL = Stunde");
lcd.setCursor(16,1);
digitalClockLcdZeit();
long newRight;
long positionRight;
newRight = knob.read()+500;
if (newRight != positionRight) {
positionRight = newRight;
}
delay(500);
// Zeit aendern
// T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
unsigned long mytime;
mytime=(now());
unsigned long change_min; change_min=60;
unsigned long change_hh; change_hh=3600;
if (positionRight > 500&&positionRight<510) { // langsam rechtsrum drehen
mytime=mytime+change_min; // Minute ändern plus!!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 500&&positionRight>490) { // langsam linksrum drehen
mytime=mytime-change_min; // Minute ändern minus!!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight > 510) { // schnell rechtsrum drehen
mytime=mytime+change_hh; // Stunde ändern plus!!!
setTime(mytime);
knob.write(0); // reset Knob
}
if (positionRight < 490) { // schnell linksrum drehen
mytime=mytime-change_hh; // Stunde ändern minus!!!
setTime(mytime);
knob.write(0); // reset Knob
}
knob.write(0); // reset Knob
}
// ------------------------------ Ende VOID - Unterprogramme -------------------------------------
//END
/*
----------------------------Benötigte Hardware-------------------------
1 x PC, Laptop o.ä. zum Daten speichern und zum programmieren des Arduino
1 x Arduino Leonardo
1x LCD-Display 16x4
1x Poti 1k Ohm für LCD-Display-Contrast
1x Lautsprecher
1x LED und R 1K Ohm
1x Drehimpulsgeber mit Taster
1x LDR und 2 Wiederstaende , Werte ????
1x Temeraturfühler, z.B. DS1208 sihe http://wiki.fox11.de Temperatur Logger
sowie Vorwiederstände an den Messtellen für Spannungs-Messung, z.B. 4x 10K Ohm um 20V+ zu messen.
sowie Shunt-Widerstände bei den Strom Messungen.
*/
// ------------------------- benötigte Software ----------------------
/*
Arduino V 1.0.5-r2
RS232 Datalogger, zu finden auf http://www.eltima.com
*/
// --- PIN Belegungen -----------------------------------------------
// vom Arduino Leonardo
/*
Arduino Pins !!!
___________________
mini USB !!! EPC
DC Buchse (+5 bis +20V)
ISP 6 POL
IOREF
Reset (Hardware - Reset)
+3,3 V (Power)
+5 V (Power) !!! Versorgungsspannung
GND (Power) !!! Versorgungsspannung
GND (Power)
+Vin (Power) (+5 - +20V)
A0 analog in (MUB1), (MIB1)
A1 analog in (MUB2), (MIB2)
A2 analog in (MUS1), (MIS1)
A3 analog in (MUS2), (MIS2)
A4 analog in (MUNT), (MINT)
A5 analog in (Temp), (Light)
SCL (CAN-BUS 1)
SDA (CAN-BUS 2)
AREF (Hardware-Interrupt)
GND
-13 digital PWM Lautsprecher(morse) or LED (intern LED)
12 digital Taster
-11 digital PWM !!! LCD-Display 4 RS selcting Registers
-10 digital PWM !!! LCD-Display 6 DATA enable signal for write/read data
-9 digital PWM !!! LCD-Display 11 DATA 4
8 digital !!! LCD-Display 12 DATA 5
7 digital !!! LCD-Display 13 DATA 6
-6 digital PWM !!! LCD-Display 14 DATA 7
-5 digital PWM Reset
4 digital Relais Leitungsmultiplexer
-3 digital PWM Drehimpulsegeber 1 // Pins 2+3 wegen der Interruptfähigkeit
2 digital Drehimpulsegeber 2 // dadurch funktioniert der Drehgeber besser
TX->1
RX<-0
*/
// vom LCD Display
/*
LCD - Display pins:
initialize the LCD-Display library with the numbers of the interface pins
4K7 Ohm nach GND, 1k2 Ohm nach +5V, Mitte an Pin3 anstelle des Poti!
Contrast Pin 3 benötigt ca. 1V +
--------------- LCD 16x4 pins
1 GND || GND
2 +5V || +5V
3 Poti || Mittelpin Poti // Contrast
4 RS selcting Registers || pin 11 am Arduino
5 GND L = write Mode || GND
6 DATA enable signal for writze/read data || pin 10 am Arduino
7 DATA 0
8 DATA 1
9 DATA 2
10 DATA 3
11 DATA 4 || pin 9 am Arduino
12 DATA 5 || pin 8 am Arduino
13 DATA 6 || pin 7 am Arduino
14 DATA 7 || pin 6 am Arduino
15 (Backlight +5V)
16 (Backlight GND)
*/
// Belegung der Mess-Stellen
/*
-------- Messwerte für erstes Display----------
M01 = U Womo Batterie
M02 = U Auto Batterie
M03 = U Slo1
M04 = U Sol2
M05 = U Ladegerät +14,4V
M06 = U 230V
-------- Messwerte für zweites Display----------
M07 = I Womo
M08 = I Auto
M09 = I Sol1
M10 = I Sol2
M11 = Temp
M12 = Licht
*/