Moin,
wie lagert man denn Funktionen richtig in andere Programmdateien aus, so dass sie auch fremde Funktionen aus Libraries ausführen können?
Konkret hapert es gerade beim Zugriff auf ein LCD-Objekt.
Als Block vor dem Setup funktionierts, jetzt hätt ich nur gerne die Sektion in einer separaten Datei untergebracht.
#include <Wire.h>
#include "RTClib.h"
#include "LiquidCrystal_I2C.h"
#include "WaterTimer.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS3231 rtc;
enum runmode {WTerror,WTsetup,WTaus, WTein, WTauto,WTpreon,WTpreoff,WTcountdown,WTprog};
char daysOfTheWeek[7][2] = {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
char LCDLine1[20];char LCDLine2[20];char LCDLine3[20];char LCDLine4[20];
/* ===========Dieser Teil soll raus ==========================
void LCDupdate (char Line1[20],char Line2[20],char Line3[20],char Line4[20])
{
lcd.setCursor(0,0);
lcd.print(Line1);
lcd.setCursor(0,1);
lcd.print(Line2);
lcd.setCursor(0,2);
lcd.print(Line3);
lcd.setCursor(0,3);
lcd.print(Line4);
}
=====================================================
*/
void setup () {
[...]
kopiere ich das in eine cpp, die ich durch include einbinde, scheitert es am augenscheinlich unbekannten lcd-Objekt. Testweise das lcd durch "LiquidCrystal_I2C" ersetzt ändert auch nichts. hatte ich mir in libraries abgeschaut, die von wire.-funktionen gebrauch machen. aber woh mit eigenen wire-objekten. hier möchte ich ja gerne das aus der hauptdatei verwenden. was also tun?
hier mal die gescheiterten versuche:
WaterTimer.cpp:
#include "WaterTimer.h"
#include "LiquidCrystal_I2C.h"
#include <inttypes.h>
#include <Arduino.h>
#include <Wire.h>
void LCDupdate (char Line1[20],char Line2[20],char Line3[20],char Line4[20])
{
lcd.setCursor(0,0);
lcd.print(Line1);
lcd.setCursor(0,1);
lcd.print(Line2);
LiquidCrystal_I2C.setCursor(0,2);
LiquidCrystal_I2C.print(Line3);
LiquidCrystal_I2C.setCursor(0,3);
LiquidCrystal_I2C.print(Line4);
}
WaterTimer.h:
#ifndef _WATERTIMER_H_
#define _WATERTIMER_H_
#include <Arduino.h>
#include <inttypes.h>
#include "LiquidCrystal_I2C.h"
void LCDupdate (char [20],char [20],char [20],char [20]);
#endif //_WATERTIMER_H_
Thx für Hilfe :o)