mhh
edit : ist oben auf den beitrag bezogen ok .
ich kenne mich hier noch nicht so aus
@Tommy56
ich kann das im forum hier noch nicht ganz verstehen mit Bezogen auf übergeordneten beitrag .
Sowas gab es früher im den Foren die ich kenne nicht . alles schick . schönen Sonntag wünsche ich Dir
In meinen Augen drückt die Antwort von StefanL38 auf den Code von @noiasca genau das aus. Er ist unter Anderem mit mehr als einem Parameter im Methoden-/Funktionsaufruf überfordert, deswegen darf so etwas nicht sein.
Gruß Tommy
Nun wenn ich hätte sagen wollen "das darf nicht sein" dann hätte ich das ganz direkt so ausgedrückt da kenne ich nix. Doch natürlich darf jeder Code beliebig anspruchsvoll, komplex, ausgebufft, trickreich, die Möglichkeiten von C++ wie man "oberkrumme Dinger dehen kann wie z.B. per memcpy mit passend unpassenden pointern eine Funktion an eine andere Stelle zu kopieren, machen oder was auch immer sein. Ich habe eins zu eins die Fragen die ich mir zum Code stelle gepostet und geschrieben wie ich es machen würde.
Vielleicht habe ich nicht genug betont anfängerfreundlicher Code. Stimmt schon über das Anfängerstadium kommt man nur hinaus wenn man weitergeht. Und über etwas fortgeschritten kommt man nur hinaus wenn noch weiter geht und noch mehr lernt.
OK genug off topic.
vgs
Kein Problem, mache ich gerne.
PFF!
Du hast Keine Ahnung...
Wie kommst Du auf diese krude Idee?
#include <SPI.h>
#include <SD.h>
const char abfuhrkalender[] = {".ics"}; // Die Datei auf der SD *MUSS* der Konvention 8.3 entsprechen!
const byte chipSelect = 4;
const byte jahr = 22;
const byte monat = 2;
const byte tag = 21;
void setup()
{
Serial.begin(115200);
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect))
{
Serial.println("Card failed, or not present");
while (1);
}
Serial.println("card initialized.");
File dataFile = SD.open(abfuhrkalender);
if (dataFile)
{
while (dataFile.available())
{
parseFile(dataFile);
}
dataFile.close();
}
else
{
Serial.print("error opening ");
Serial.println(dataFile);
}
}
void loop()
{
}
void parseFile(File myFile)
{
enum {anfang, suchen, ende};
static byte schritt = anfang;
const byte maxParsePos = 50;
static char parseLine[maxParsePos] = {'\0'};
static uint8_t parsePos = 0;
const char parseBegin[] = "BEGIN:VEVENT";
const char parseEnd[] = "END:VEVENT";
const char parseWaste[] = "SUMMARY";
const char parseDate[] = "DTSTART;VALUE=DATE:";
unsigned long myDay = 20000000 + tag + monat * 100 + jahr * 10000UL;
char myChar = myFile.read();
if (!isControl(myChar) && parsePos < maxParsePos) //Liest hoffentlich bis zum Ende der Zeile, die kleiner 50 chars ist...
{
parseLine[parsePos] = myChar;
parsePos++;
}
else
{
switch (schritt)
{
case anfang:
if (!memcmp(parseBegin, parseLine, sizeof(parseBegin)))
{
Serial.print("ANFANG erkannt: ");
Serial.println(parseLine);
schritt = suchen;
}
break;
case suchen:
if (!memcmp(parseBegin, parseLine, sizeof(parseBegin)))
{
Serial.println("SuchenENDE - Abbruch! neuer Anfang");
schritt = ende;
}
if (!memcmp(parseEnd, parseLine, sizeof(parseEnd)))
{
Serial.print("ENDE erkannt: ");
Serial.println(parseLine);
schritt = ende;
}
if (!memcmp(parseWaste, parseLine, sizeof(parseWaste) - 1))
{
Serial.print("parseWaste - gefunden: ");
Serial.println(parseLine);
}
if (!memcmp(parseDate, parseLine, sizeof(parseDate) - 1) )
{
Serial.print("parseDate - gefunden: ");
Serial.println(parseLine);
}
break;
case ende:
// if endekennung gefunden zeige an!
Serial.println("case Ende");
parsePos = 0;
schritt = anfang;
break;
}
memset(parseLine, '\0', sizeof(parseLine));
parsePos = 0;
delay(35);
}
}
Die Einen verstehen nichts, die Anderen fragen sich, was da wohl stehen könnte. Was denkst Du denn, in welchem Kontext das da wann noch vorhanden ist?
Es bestärkt mich in der absoluten Abneigung.
Dieses Forum wird als Fussabtreter für eine Simulationssoftware genutzt. Das betreiben eines Forums kostet Manpower und noch viel mehr.
forum.arduino.cc ist kostenlos und auch (noch) lesbar für nicht angemeldete User.
Ich wünsche mir, das das auch so bleibt.
Guten Morgen!
Guten Morgen . Gibt es irgendwo ein FAQ zum serial Monitor wo man sich belesen kann ?
Ich hätte z.b jetzt kein Plan wie man ein Button auslöst um zu sehen was passiert.
Bei der Simulation drücke ich drauf und sehe es serial . Wie macht man sowas in der IDE ?
Lg Toni . Wünsche Euch allen einen guten Wochenstart .
Bei uns ist nach letzter Nacht erst mal aufräumen angesagt . Sturm Sturm Sturm
wie möchtest du über die Serielle Schnittstelle einen Button auslösen?
Entweder hast einen Hardware-Button und du drückst drauf,
oder du musst code für die Serielle Schnittstelle schreiben, die nach einer Usereingabe das gleiche auslöst wie der Hardware Button. Dazu brauchst du aber Code.
Die IDE kann nichts simulieren.
Oder ich verstehe deine Frage nicht.
Falls ich Dich richtig interpretiere, geht es um Folgendes:
- Du öffnest in Deinem Sketch im setup() die Serielle Schnittstelle mit Serial.begin(115200);
- An der Stelle, wo auf Deinen Button etwas passieren soll, schreibst Du ein Serial.println("Hier soll xyz passieren"), wobei Du xyz durch irgendeine sinnvolle, unterscheidbare Aussage ersetzt, falls Du mehrere solcher println() in Deinem Sketch hast.
- Für Dich noch einfacher, da Du ja z.B. dbg("1:", myVarA) benutzt:
Du schreibst dort die Zeile dbg("Taste ", 1); oder dbg("Taste ", 2); usw. an die passende Stelle.
Um das ganze in der IDE angezeigt zu bekommen, öffnest Du den seriellen Monitor mit einem Klick auf

oder
Ist es das, was Du fragen wolltest?
Es ist grundsätzlich schon mal gut, wenn Du die einzelnen Aktivitäten getrennt entwickelst und testbar machst. Dabei solltest Du Folgendes prüfen und berücksichtigen:
- Kategorie P = "Parallelanwendung": Welche der Aktivitäten müssen "gleichzeitig" laufen?
- Kategorie E = "Einzelanwendung": Gibt es Aktivitäten, die ausschließlich alleine laufen (d.h. wenn man sie aufruft, sind die anderen nicht aktiv)?
Je nachdem in welche Kategorie eine Teilanwendung fällt (P oder E), darf eine Anwendung den Controller für sich blockieren (Einzelanwendung) oder nicht (Parallelanwendung).
Vielleicht gibt es bei Dir nur Anwendungen vom Typ P?
Dann wäre es zusätzlich auch noch hilfreich, wenn Du Dir ein paar Gedanken zu den Menüpunkten machst und diese aufschreibst. Hier ein Beispiel, wie man es machen könnte (ohne den Anspruch, dass die Punkte sinnvoll oder vollständig sind !):
-
Hauptmenü aufrufen (Keine Anzeige im Display, reagiert auf Taste X und zeigt dann die Möglichkeiten an)
- Uhrzeit
- Wochenplan
- Ultraschall
-
Uhrzeit
- Stunden einstellen
- Minuten einstellen
- Sekunden einstellen
-
Wochenplan
- letzte Woche
- diese Woche
- nächste Woche
-
Ultraschall
- letzte 20 Messwerte (< 200 cm)
- Nullpunkt justieren
Das Arduino-Team scheint ja den seriellen Monitor nicht mehr weiterentwickeln zu wollen.
Jedenfalls nicht in Version 1.x
-
Keine ESC-sequencen um die Farbe zu ändern (Wie in sonstigen Terminalprogrammen üblich)
-
Keine Hotkeys / keine Buttons mit denen man vordefinierte Zeichenketten senden könnte
Noch ein Grund den Simulator doch zu benutzen!
Hm das bringt mich jetzt aber doch auf eine Idee: Mit Autohotkey könnte man sich entsprechende Hotkeys programmieren die dann den seriellen Monitor steuern....
Ich habe die Arduino -IDE 2.0 noch gar nicht getestet. Hat schon jemand? Lohnt es sich es mal auszuprobieren? oder ist das ein "Fullblown Buggy"?
vgs
die gedanken zu den Punkten Mache ich mir Jetzt sofort .
ich habe auch mal mit dein menü gespielt . um das erst mal besser zu verstehen . Ist aber nur ein Test
https://wokwi.com/arduino/projects/324199297410138706
@ec2021 so hier ?
Wenn Dir Noch was einfällt was wichtig wäre .
Gerne dazu schreiben
würde eh am schluss noch ein Punkt mehr machen zum verändern
Start Bildschirm
mit Uhrzeit Datum Zeile 1
Temperatur Entfernung Überwachung Ultraschall Zeile 2
Lauf anzeige Tages Terminen und bevorstehende Geburtstage (1 Tage vorher ) zeile 3
Anzeige Abfall Kalender Immer nur den Nächsten Termin ( Einen Tag zuvor Warnung )
Zum Beispiel Blinken „ Morgen Schwarze Tonne „
Wenn Sich Jemand Nähert soll Das Display Blinken und ein Akkustiches Signal kommen zeile 4
beim ersten Drücken von SW LCD Löschen und Menü aufrufen
Menü
Wochenplan
submenü
Wochenplan zum Herunterrollen
zurück Hauptmenü
Ultraschall
Submenü
Warnung an
Warnung aus
(Wichtig ist hier zu wissen das ist eine Türüberwachung und soll ein Ton ausgeben (MP3) das sich jemand nähert Damit ich das mitbekomme . Bach Feierabend möchte ich das aber abschalten .
Servo Schliesser
Submenü
Tür verriegeln
Tür Öffnen
Maschinen Wache
Submenü
Wache einschalten
Wache Ausschalten
( hier kommt nur der Lichtsensor ran . Sollte bei Wache eingeschaltet, der Lichtsensor merken das es dunkel ist , muss sofort eine Akustische Warnung kommen und LCD Löschen. Dort muss dann stehen Maschine Fertig . Mit bestätigen kann es wieder zurück zum Startbildschirm gehen )
Gas Warner
Submenü
Anschalten Ton und Warnung im Display
Ausschalten Ton und Warnung im Display
( Wird nur abgeschaltet beim Tausch der Gasflaschen )
Geburtstage
Submenü
diese Woche
nächste Woche
Uhrzeit
submenu
Stunden einstellen
Minuten einstellen
Sekunden einstellen
Alkohol Tester
Starten
beenden
@ec2021 : Jetzt habe ich eine Frage zum KOmnzept deiner Menü-Klasse
wenn ich das richtig verstehe wird für jedes Menü eine eigene Instanz erzeugt.
Was war für dich der Grund das so anzulegen?
Ich würde meinen es genügt den Rotary-Encoder per Polling abzufragen und die ganze restliche Logik auf user-Ebene (= in der *.ino-Datei zu machen).
Wenn man das Menü wechselt dann muss man ja dazu doch etwas im Sketch programmieren. Dann könnte man die Textausgabe auch dorthin verlegen.
Bis jetzt verwendet der Democode die erste Zeile als Titel und die zweite Zeile um eine Option anzuzeigen. Die dritte und vierte Zeile sind leer.
vgs
Für den Simulator (als zusätzliche(!) Komponente zum Forum) sprechen aus meiner Sicht vor allem:
- Schneller Auf- bzw. Nachbau einer realitätsnahen (wenn auch nicht die Realität ersetzenden) Testumgebung
- Extrem schnelles Feedback bei Änderungen, ohne zeitraubenden Build-/Uploadprozess
- Schnelle Mitprüfmöglichkeit durch Dritte, ohne dass diese die Installation selbst nachbauen müssen
Eigentlich wäre es ein erheblicher Sprung nach vorne, wenn Arduino.cc um eine solche Möglichkeit erweitert würde ... Verdrahtungen, Beispielsketches für Hardware und Libraries könnten - insbesondere für Anfänger - so wesentlich plakativer dargestellt und vermittelt werden.
In der Industrie läuft dieser Trend ja schon länger unter dem Buzz-Wort: "Digital Twin" ... ![]()
Bzgl. des Seriellen Monitors gibt es natürlich auch Alternativen, allerdings mit dem Nachteil, dass die serielle Verbindung bei einem Upload nicht automatisch von der IDE getrennt wird, so dass es dann leicht mal dazu kommt, dass die COM-Schnittstelle durch die externe Anwendung "blockiert" ist ...
Ich habe mir serielle Terminals (wie auch TCP Server- bzw Client-Anwendungen) für PC mit Lazarus (Free Pascal) selbst geschrieben ... Damit kann ich dann Daten vom Controller im Hintergrund parsen lassen und z.B. den Terminalbildschirm löschen lassen, zusätzliche Anzeigen schalten (z.B. den Led-Zustand rot/gelb/grün anzeigen lassen).
Das Umleiten von Serial-Ausgaben auf TCP-Ausgaben bei den von mir eingesetzten ESP32 geht ziemlich einfach, da beides Streams sind. So ist es bei vielen meiner Anwendungen "egal", ob sie über COM oder Ethernet/WLAN an der Applikation hängen ...
Hier mal ein Beispiel für den TCP-Client unter Win 10:

Simulatoren sind schön und gut aber nicht im einem Forum.PUNKT.
Jeder der hier erste mall ist denkt sich was ist das da?.
Da bin ich Deiner Meinung, es ist Unsitte hier im Forum sowas.
Die Vorteile eines Simulators grundsätzlich auszuschließen, halte ich nicht für angemessen ...
Der Umgang mit dessen Anwendung, insbesondere, wenn er als "externer Fremdkörper" betrachtet wird und der eine oder andere von dessen Nutzung ausgeschlossen ist, wäre zu diskutieren. Auf Dauer gehe ich davon aus, dass (wie ich oben schrieb) das Konzept "Digitaler Zwilling" auch bei den Microcontrollern Einzug nehmen wird. Es hat die oben beschriebenen Vorteile und wird auch bereits in der Ausbildung von Elektronikern (wie mir ein mir bekannter Lehrer berichtete) eingesetzt. Dort ist wohl noch ein Vorteil, dass weniger Material "zu Bruch" geht ![]()
Man kann das denke ich mal nicht so einfach sagen . es Gibt dinge die im Simulator gehen und andere eben nicht . Ob man Ihn nutzt um zu zeigen wie man die schaltung aufbaut oder um mal zu testen ob das überhaupt geht, bringt denke ich mal allen etwas .
Zumal bei mein Letzten projekt wir Diesen auch genutzt haben und auch immer mal ein Test von @my_xy_projekt dort testen sollten " ich kann mich an worte wie " das ist mal was für den Simulator zum testen " erinnern .
Also Ruhig Blut sowas hat immer was Positives und auch was Negatives .
Recht machen kann man es eh keinen
Es kommt vor allem darauf an, wie wir untereinander mit uns umgehen .
Ich bin durchaus ein Freund kontroverser und engagierter Diskussionen, wenn diese sachlich bleiben. Insofern wäre es hilfreich, die Nachteile der Simulatornutzung aufzulisten und den Vorteilen gegenüber zu stellen.
Dann bleibt am Ende immer noch die persönliche Präferenz übrig ...
