Benötige Unterstützung für eine automatisierte Bewässerungsanlage

Hallo sehr geehrte Gemeinde,

derzeit bearbeite ich mein Abschlussprojekt für die Technikerschule und bin ein ziemlicher Frischling was das Programmieren mit C++ auf dem Arduino angeht.
Hierbei stoße ich auf einige Probleme und ich hoffe hier Unterstützung zu bekommen.

Meine Materialien:
Ich verwende einen Arduino Mega 2560 R3 von SunFounder
Arduino Mega 2560 von SunFounder

Dazu noch das Shield für 3,2" TFT von AptoFun
Shield für Display von AptoFun

mit dem Display von SainSmart 3,2" TFT LCD Display
LCD TFT Display 3,2" von SainSmart

zur Feuchtigkeitsmessung wollte ich diesen von der Firma Sodial verwenden
Feuchtesensor von Sodial

Mit der Bibliothek “URTouch” und “UTFT” von der Seite www.RinkyDinkElectronics.com

konnte ich den Display soweit zum laufen bringen. Konnte auch verschiedene Dinge mir anzeigen lassen.

Als nächstes wollte ich mir einen Analogwert anzeigen lassen und hierbei stoße ich auf mein erstes Problem, dass mir eine Fehlermeldung gebracht wird.
Hier ist mein Code:

#include <URTouch.h>
#include <URTouchCD.h>

#include <memorysaver.h>
#include <UTFT.h>

//Declare which fonts we will be using.
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
extern uint8_t SmallFont[];

int x, y; //x/Y Achse initalisieren

int Messwert1 = 0;
int Seitenzahl, seletedUnit; //Menüführungseite

UTFT myGLCD (ITDB32S,38,39,40,41); // Remember to change the model parameter to suit your display module!
URTouch  myTouch( 6, 5, 4, 3, 2);

void setup()
{
myGLCD.InitLCD(LANDSCAPE); //Initalisieren von der LCD Bibliothek

 Serial.begin(9600);
 
 
pinMode(38, OUTPUT);
pinMode(39, OUTPUT);
pinMode(40, OUTPUT);
pinMode(41, OUTPUT);
//PIN Mode für den Display als OUTPUT deglarieren

myGLCD.setFont(BigFont);
myGLCD.clrScr(); //Bildschirm säubern
myTouch.InitTouch(); //initalisieren von der Touch Bibliothek
myTouch.setPrecision(PREC_MEDIUM);
//Homsescreen Layout laden
drawBild();

}


void loop()
{

}

//Seite 0
void drawBild() {
  
  
  myGLCD.setFont(BigFont);
   myGLCD.setColor(VGA_WHITE);//Set the word colors to White.
  myGLCD.print("Analog Wert :", CENTER, 55); // Prints the string
  myGLCD.setFont(SevenSegNumFont);
  myGLCD.printNumI("Messwert1",130,145,3,'0'); 
  
}

Die Fehlermeldung lautet:

Display_Bildschirm_Messungs_versuch1.ino: In function 'void drawBild()':
Display_Bildschirm_Messungs_versuch1:64: error: invalid conversion from 'const char*' to 'long int'
Display_Bildschirm_Messungs_versuch1:64: error: initializing argument 1 of 'void UTFT::printNumI(long int, int, int, int, char)'

Woran könnte dies liegen?
Wie bekomme ich dies zum laufen?

Meine zweite Herausforderung ist, dass ich über eine externe Quelle gerne den Pflanzennamen/minimale Feuchtigkeitswert und den maximalen Feuchtigkeitswert übertragen würde um mir den Namen der Pflanze anzeigen zu lassen und mit den Werten einen 2-Punkt-Regler aufzubauen.
Dabei dachte ich an den SD-Karten-Slot unter dem Display.
Jedoch kenne ich mich damit absolut nicht aus und ich weiß nicht ob ich den Namen der Pflanze und den Zahlen in ein Array schreiben kann bzw. welche Library oder welchen Code ich dafür benötige.
Vielleicht kann mir jemand dazu weiterhelfen.

Über konstruktive Ideen und Antworten würde ich mich sehr freuen.
Vielen Dank schonmal im Vorraus.

Mit freundlichen Grüßen
Gebharse

soweit ich die Funktion dieses Sensors überbliche, betreibt der Widerstandsmessung und damit ist einerseits der Wert nicht nur von der Feuchtigkeit, sondern auch der Bodenzusammensetzung und Düngergabe abhängig.
Zum Anderen wird dabei durch Elektrolyse ein Teil des Metalls des Sensors aufgelöst und in den Boden übertragen. Auch das verfälscht die Messung bis zur Unmöglichkeit.

Feuchtesensoren sollten kapazitiv oder über den Kappilardruck arbeiten.

Gruß Tommy

Immer wenn ich versuche mit einer Mohrrübe mein intelligentes Türschloss zu öffnen sagt dieses

"Mohrrüben können nicht in Schlüssel verwandelt werden, dieses Schloss benötigt einen Schlüssel."

Woran könnte das liegen?

Abschlussprojekt für die Technikerschule mit Arduino passt überhaupt nicht zu deinem Wissensstand.

Wer hat für dich die Programmieraufgaben bisher erledigt?

Whandall:
Immer wenn ich versuche mit einer Mohrrübe mein intelligentes Türschloss zu öffnen sagt dieses

"Mohrrüben können nicht in Schlüssel verwandelt werden, dieses Schloss benötigt einen Schlüssel."

Woran könnte das liegen?

Abschlussprojekt für die Technikerschule mit Arduino passt überhaupt nicht zu deinem Wissensstand.

Wer hat für dich die Programmieraufgaben bisher erledigt?

Keiner!

Wir hatten ein Lernfeld, in dem die Grundlagen(Schleifen, kleine Schaltungen) beigebracht wurden.

Den Rest habe ich mir in 2 monatiger Googlesucharbeit erarbeitet.

Aber danke der Nachfrage.

Sollten immer noch Fragen bestehen hier der offizille Modulausschreibung der Schule

(Steht auch in anderen Ausschreibungen der Fachhochschulen in RLP)

Aber um dich zu beruhigen, vielleicht bin ich wirklich nicht fit in dem Thema, aber genau deswegen habe ich mich hier gemeldet damit mir weiter geholfen wird.

Die Anmerkungen zum Sensor übergehst Du geflissentlich?

Gruß Tommy

Tommy56:
soweit ich die Funktion dieses Sensors überbliche, betreibt der Widerstandsmessung und damit ist einerseits der Wert nicht nur von der Feuchtigkeit, sondern auch der Bodenzusammensetzung und Düngergabe abhängig.
Zum Anderen wird dabei durch Elektrolyse ein Teil des Metalls des Sensors aufgelöst und in den Boden übertragen. Auch das verfälscht die Messung bis zur Unmöglichkeit.

Feuchtesensoren sollten kapazitiv oder über den Kappilardruck arbeiten.

Gruß Tommy

Danke für den Tipp.

Gibt es da zufällig Erfahrungswerte, welche Sensoren dafür besser geeignet sind? Also Hersteller oder sowas in der Art?

Es gibt einen Thread hier im Forum zu diesem Thema, in dem ein kapazitiver Feuchtesensor benutzt wird. Das Isolationsproblem ist letztens auch gelöst worden. Lies Dir den ruhig bis zum Ende durch. Auch der Ansatz von Zentris ist interessant, wenn das Umfeld passt.

Gruß Tommy

Nein hatte ich nicht. Ich wusste nur nicht, dass ich nur alle 5 Minuten etwas posten darf.
Daher musste ich kurz warten und der andere Post hat leider mehr meine Aufmerksamkeit erregt.

Vielen Dank für die Info. Werde es mir direkt mal durchlesen.

Aber den dezenten Hinweis auf deinen angefragten Fehler überlesen. :wink:

Ich kann übrigens wirklich nichts dafür, dass deine Frage dich nicht gerade als intimen Freund eines (in dem Fall C++) Kompilers outet.

Ein politsch korrektere Beschreibung finde ich gerade nicht.

Whandall:
Aber den dezenten Hinweis auf deinen angefragten Fehler überlesen. :wink:

Ich kann übrigens wirklich nichts dafür, dass deine Frage dich nicht gerade als intimen Freund eines (in dem Fall C++) Kompilers outet.

Ein politsch korrektere Beschreibung finde ich gerade nicht.

Leider kann ich mit diesem Hinweis nichts anfangen. Wenn du mir sagen willst, dass da irgendwas nicht zusammen passt, dann darfst du mir das auch gerne direkt sagen.

Ich gebe dir auch keine Schuld, dass es nicht mein Lieblingsthema ist. Jedoch war das Themengebiet, welches ich eigentlich belegen wollte schon besetzt.

Daher musste ich auf C++/Arduino wechseln und trotzdem hätte eine höffliche und aussagekräftige Antwort vollkommend ausgereicht.

Trotzdem hoffe ich, dass mir in dem Forum geholfen wird, egal wie gering mein Wissenstand über dieses Thema ist.

Der Kompiler hat es dir in aller Deutlichkeit gesagt und sogar noch belegt.

TE 02E Berufsbezogene Kommunikation in einer Fremdsprache

Dein Funktionsaufruf:

  myGLCD.printNumI("Messwert1",130,145,3,'0');

Was meinst du warum die Funktion printNumI heisst?

void UTFT::printNumI(long int, int, int, int, char)(Meine Interpretation: Sie soll einen ganzzahligen Wert drucken).

Wie vereinbart sich der Typ des übergebenen Werts ("Messwert1", const char*) mit dem
von der Funktion als ersten Parameter erwarteten Typ (long int) ?

Nicht wirklich, das ist das Mohrrüben/Schlüssel Problem.