sie wird ganz normal aufgerufen in einer *.ino datei mit "vorwaerts()" und der motor dreht sich so lange, bis die vorgegebene anzahl der ticks, die vom encoder mit "encoder_1_auslesen()" ausgelesen wird, auch erreicht wird. Das funktioniert so auch ganz gut...
Ich möchte das ganze nun etwas komfortabler, flexibler und auch praxisnäher machen, denn die anzahl der ticks, die zeit in sec. oder was auch immer (die jetzt hier starr vorgegeben sind) soll später von dem auslesen der entfernung zum hindernis (z.b.) abhängig an die funktion weiter gereicht werden...
Nach unzähligen versuchen und suche nach "wertübergabe an eine funktion" in unzähligen variationen hier die frage: Wie mache ich das? Es ist sicher anders/komplizierter, als wenn die funktion in der *.ino datei selbst wäre und nicht in der lib ausgelagert, ich muss ja auch die deklaration der funktion in "L293D_V2_fahren.h" irgendwie anpassen...nur wie?
eine Lib in dem Sinne ist das nicht. Du lagerst rein nur Code aus. Das könntest du einfacher haben wenn du in der IDE mehrere Tabs anlegst. Wenn es unbedingt so sein soll, dann schreib alles in den Header.
Wie agmue schon schreibt, kann man einer Funktion mehrere Werte übergeben und einen zurückgeben lassen.
klar geht es mehr um code auslagern als um eine lib. Ich verwende die "lib" bei verschiedenen projekten und möchte damit meinen code übersichtlicher gestalten....
Zu den erklärungen mit "byte w{}" bzw. "alles in der header reizuschreiben" - und so, also so ganz genau habe ich das nicht verstanden, sorry :-(, kann ich das irgendwo nachlesen, oder wäre es evtl. möglich detailierter auf mein beispiel einzugehen?
ich weiß jetzt nicht was deine Variable motor_hl in der Lib macht.
Aber wenn es unbedingt so sein soll, dass nur rein der Code ausgelagert wird, ohne echte Lib Funktionalität, dann könnte das so aussehen.
Die Datei Funktionen.h kommt in den Library Ordner namens "Funktionen" unter deinem Benutzernamen.
Bitte nicht ins IDE Installationsverzeichnis ....
// Deklaration der Klasse
// Funktionen.h
#ifndef Funktionen_h
#define Funktionen_h
#include <Arduino.h>
int vorwaerts(byte data, byte multi)
{
int produkt = data * multi;
Serial.print(" Header ");
return produkt;
}
#endif
der Sketch dazu sieht testweise so aus.
#include <Funktionen.h>
byte value;
byte faktor = 2;
int data;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Input "); Serial.print(value);
data = vorwaerts(value, faktor); // Wertübergabe value an Funktion
// Wertrückgabe data von der Funktion
Serial.print("Output "); Serial.println(data);
value++;
delay(200);
}
nachlesen könnte man das hier C-Programmierung: Eigene Header – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher, nur muss man sich die .c oder .cpp Datei wegdenken. Eigentlich wird das sauber getrennt. Bei reinen Funktionen nicht erforderlich. Du brauchst ja demnach kein public oder private usw.
Statt der Funktion Deklaration im Header direkt die Funktion schreiben.