INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Code in Tabs einbinden
07.12.2020, 12:55 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2020 13:41 von AnjinSan.)
Beitrag #1
Code in Tabs einbinden
Hallo Zusammen,
wie schon im :
https://www.arduinoforum.de/arduino-Thre...e-Funktion
angesprochen, möchte ich gern lernen wie man einen Sketch auf mehrere Tabs verteilt.
Dazu habe ich ein Test Sketch geschrieben, der , wie sollte es auch sonst sein, nicht tut, was ein Sketch tun sollte.
Als Hilfe habe ich über Serial.println(Status) eine Verfolgung eingerichtet.
Und stelle fest, der erste Tab wird nicht abgearbeitet.
Hier der Sketch:
Code:
/*
* Globale Varianten definieren
*/
int Led [] = {2,3,4,5,6};
int i;
static uint8_t Status = 0;
uint32_t aktuelle_Millis = millis();
// Includieren der Tabs
# include "a_Tab1.h"

//**************************************

void setup()
{
Serial.begin(9600);
  for (i=0; i<7; i++)
  {
   pinMode(Led[i], OUTPUT);
  }
} //Ende Setup
void loop()
{
  Serial.println(Status);
  Gruppe6();

}// Ende Loop
Nachtrag:
Inhalt Tab
Code:
void Gruppe6()

{
static uint8_t Status = 0;
uint32_t aktuelle_Millis = millis();

// Einschalten Gruppe 6
const uint32_t Wartezeit_6ein = 2000;   // xx sec. warten bevor Einschaltung
const uint32_t Ein_6ein = 5000;         // xx sec. Einschaltdauer
uint32_t Startzeit_6ein, Einzeit_6ein;  
// Ausschalten Gruppe 6
const uint32_t Wartezeit_6aus = 2000;  
const uint32_t Ein_6aus = 100;        
uint32_t Startzeit_6aus, Einzeit_6aus;  


    // Einschalten Gruppe 6 *****************
  if (Status == 0 )
  {
    Startzeit_6ein = aktuelle_Millis;
    Status = 1;
  }
   Serial.println(Status);
  if (Status == 1 && aktuelle_Millis - Startzeit_6ein >= Wartezeit_6ein)
  {
    Einzeit_6ein = aktuelle_Millis;
    digitalWrite(12,HIGH);
    digitalWrite(13,HIGH);
    Status = 2;
  }
   Serial.println(Status);
}
Über Tipps und Hilfe würde ich mich freuen.

beste Grüsse
AnjinSan

Edit und ich haben fehlenden Teil vom Code eingefügt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:35
Beitrag #2
RE: Code in Tabs einbinden
Du solltest aber mindestens beischreiben, welcher Teil deines Sketches sich im 1. Tab befindet. Woran erkennst du, das der erste Tab nicht läuft ?

Grundsätzlich sollten die globalen Definitionen, das Setup und die loop im 1. Tab sein und somit lauffähig sein. Funktionen, die du aufrufst, können dann im 2. Tab sein.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:36
Beitrag #3
RE: Code in Tabs einbinden
Du musst 2 Sachen unterscheiden.

1. *.h und *.cpp werden in der Regel benutzt, um Libs zu erstellen. Dann muss die .h per #include eingbunden werden. Das sollte gleich oben im der ino passieren.

2. mehrere ino: Die erste heißt wie das Verzeichnis und ist die Hauptdatei. Die anderen werden in der alphabetischen Reihenfolge ihrer Namen compiliert und dürfen nicht mit #include eingebunden werden. Man sollte weitere ino-Dateien verwenden, um in ihnen zusammen gehörende Funktionen auszulagern.

Einfach den Code auf mehrere ino aufzuteilen (zu zerschneiden) funktioniert nicht.

Wenn Du dazu Fragen hast, dann bitte alle Dateien hier bereit stellen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:43
Beitrag #4
RE: Code in Tabs einbinden
ich muss vermutlich den Sketch noch einfacher schreiben und probieren.
Danke schon mal für die Tipps.

Zum Üben habe ich den im anderen Thread genannten Sketch genommen und versuche nun die einzelen "Gruppen" auf versch. Tabs auf zu teilen.
Mal sehen.....


wbr. AnjinSan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:45
Beitrag #5
RE: Code in Tabs einbinden
(07.12.2020 13:35)hotsystems schrieb:  Du solltest aber mindestens beischreiben, welcher Teil deines Sketches sich im 1. Tab befindet. Woran erkennst du, das der erste Tab nicht läuft ?

Grundsätzlich sollten die globalen Definitionen, das Setup und die loop im 1. Tab sein und somit lauffähig sein. Funktionen, die du aufrufst, können dann im 2. Tab sein.

Über die Statusabfrage/ Anzeige im Monitor sehe ich keine Veränderung.
Das hat mich stutzig gemacht. Da kan ja was nicht richtig sein.
Wie schon geschrieben, versuch ich das mal noch einfacher zu schreiben.

Danke dir!
wbr. AnjinSan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:48
Beitrag #6
RE: Code in Tabs einbinden
(07.12.2020 13:36)Tommy56 schrieb:  Du musst 2 Sachen unterscheiden.

1. *.h und *.cpp werden in der Regel benutzt, um Libs zu erstellen. Dann muss die .h per #include eingbunden werden. Das sollte gleich oben im der ino passieren.

2. mehrere ino: Die erste heißt wie das Verzeichnis und ist die Hauptdatei. Die anderen werden in der alphabetischen Reihenfolge ihrer Namen compiliert und dürfen nicht mit #include eingebunden werden. Man sollte weitere ino-Dateien verwenden, um in ihnen zusammen gehörende Funktionen auszulagern.

Einfach den Code auf mehrere ino aufzuteilen (zu zerschneiden) funktioniert nicht.

Wenn Du dazu Fragen hast, dann bitte alle Dateien hier bereit stellen.

Gruß Tommy

ist denn mein Ansatz überhaupt richtig oder biege ich falsch ab?
Den Tab habe ich mit " # include "a_Tab1.h" eingebunden.
Also gleich den Namen des Tabs.

Danke dir.
wbr. AnjinSan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:49 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2020 13:54 von MicroBahner.)
Beitrag #7
RE: Code in Tabs einbinden
Und was steht jetzt in "a_Tab1.h" ?

Bei Tabs gibt es 2 verschiedene Vorgehensweisen:
  1. Alle Dateien im Sketch-Verzeichnis, die vom Typ '.ino' sind, werden von der IDE vor dem Kompilieren automatisch zu einer Datei zusammengefasst. Da braucht's dann auch kein #include. Als erstes kommt dein eigentlicher Sketch, dann die weiteren -.ino-Files in alphabetischer Reihenfolge. Legst Du mit der IDE einen Tab an ohne einen Dateityp anzugeben ( also ohne '.' im Namen ) wird automatisch eine .ino Datei erzeugt.
  2. Du erzeugst einen Tab mit einer gültigen Dateierweiterung ( .h, .cpp .c ). Dann hängt es von der Dateierweiterung ab. Header-Dateien (.h) werden nicht automatisch bearbeitet. Willst Du sie nutzen, musst Du sie mit #include in eine andere Datei einbinden. .c und .cpp Dateien werden unabhängig von deinem Sketch kompiliert, und dann automatisch über den Linker in deinen Sketch eingebunden.
    Header-Dateien enthalten üblicherweise nur Deklarationen. Ausführbarer Code und Definitionen gehören in .c und .cpp Dateien ( es gibt Ausnahmen - insbesondere im Zusammenhang mit Klassen ).


Edit: Dieter und Tommy waren schneller Wink

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2020, 13:50
Beitrag #8
RE: Code in Tabs einbinden
(07.12.2020 13:49)MicroBahner schrieb:  Und was steht jetzt in "a_Tab1.h" ?

Bei Tabs gibt es 2 verschiedene Vorgehensweisen:
  1. Alle Dateien im Sketch-Verzeichnis, die vom Typ '.ino' sind, werden von der IDE vor dem Kompilieren autmatisch zu einer Datei zusammengefasst. Da braucht's dann auch ein #include. Als erstes kommt dein eigentlicher Sketch, dann die weiteren -.ino-Files in alphabetischer Reihenfolge. Legst Du mit der IDE einen Tab an ohne einen Dateityp anzugeben ( also ohne '.' im Namen ) wird automatisch eine .ino Datei erzeugt.
  2. Du erzeugst einen Tab mit einer gültigen Dateierweiterung ( .h, .cpp .c ). Dann hängt es von der Dateierweiterung ab. Header-Dateien (.h) werden nicht automatisch bearbeitet. Willst Du sie nutzen, musst Du sie mit #include in eine andere Datei einbinden. .c und .cpp Dateien werden unabhängig von deinem Sketch kompiliert, und dann automatisch über den Linker in deinen Sketch eingebunden.
    Header-Dateien enthalten üblicherweise nur Deklarationen. Ausführbarer Code und Definitionen gehören in .c und .cpp Dateien ( es gibt Ausnahmen - insbesondere im Zusammenhang mit Klassen ).

...ist nachgeliefert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Anfänger Frage zu code Beispiel peter_schmieg 4 480 03.03.2021 12:24
Letzter Beitrag: Tommy56
Question Serial.print - Einfluss auf Code Natsnok 4 486 17.01.2021 16:48
Letzter Beitrag: Natsnok
  PIN Code Infrarot Fernbedienung Weserbergland 6 514 28.12.2020 15:05
Letzter Beitrag: Chopp
  Modbus RTU Code Probleme dahans 4 469 10.12.2020 21:43
Letzter Beitrag: dahans
  Farbe und Helligkeit der LED im Code ändern Mutz 11 1.030 01.12.2020 21:58
Letzter Beitrag: Tommy56
  Arduino- Code-Verständnisfrage mat-sche 4 614 01.11.2020 20:29
Letzter Beitrag: Tommy56
  IR Code senden mit IRremote BanditBandeh 7 4.717 23.10.2020 20:41
Letzter Beitrag: offler
Question Wie html code der " und ' enthält in eine Stringvariable bringen? Triax16 2 1.009 27.05.2020 09:26
Letzter Beitrag: Triax16
  ASCII code in Dezimalzahl umwandeln acca500 8 1.748 15.05.2020 11:34
Letzter Beitrag: acca500
  Asembler-Code langsamer als C? GuaAck 0 693 06.05.2020 23:40
Letzter Beitrag: GuaAck

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste