also von mir war überhaupt nichts sarkastisch gemeint, und ich habe keinen Post schlecht geredet.
Man kann nur nicht über Multithreading und Multitasking und Scheduler und yield reden, wenn man nicht sagt, auf welches MT Prinzip und welche Libs man sich bezieht.
Es gibt Multithreading libs, die sind preemptiv, und welche, die sind kooperativ. Preemptive brauchen überhaupt kein yield.
Bei Kooperativen, die yield brauchen, kann diesen Zweck oft auch irgendein delay übernehmen (delay(1) oder delay(100)), oder u.U. auch nicht.
Timeslice Scheduling benutzen sie aber überwiegend alle, egal ob auf Single oder MultiCores oder preemptiv oder kooperativ.
Also muss man sich erst einmal auf die Lib einigen, die man verwenden und auf die man sich beziehen will, denn wie gesagt, jede funktioniert anders.
Aber keine ist für blutige Programmieranfänger geeignet, denn diese sind oft noch schon mit Single-Threads überfordert.
@Ferdinand:
Dein Projekt verstehe ich nicht bis ins Detail, und auch alles drumherum mit flex und Steckdose ist mir nach deiner Beschreibung absolut nicht klar.
Es klingt aber so, als ob du überhaupt kein Multithreading brauchtst, sondern als ob es reicht, dass du in der loop einfach hintereinander
das Poti ausliest,
diesen Wert in einen Bereich von 0 bis 255 "mapst",
den Button ausliest,
wenn er gedrückt und dann wieder losgelassen wurde, dann die Motorrichtung umkehrst,
und dann den Poti-Wert per analogWrite in einen pwm-Wert für den Motor umwandelst
und dieses pwm und die Motorrichtung an deine Motor-H-Brücke übergibst.
Dann evt eine kurze delay-Pause zum Verschnaufen,
und dann die loop wieder von vorn.
Zumindest dazu ist Multithreading nicht nötig, und als Anfänger würde ich auch die Finger davon lassen: Lerne erst mal die Standard-Verfahren in nur 1 Loop.
Wenn du dann fit bist, kannst du dich vlt in ein paar Monaten mit der Scheduler Lib für deinen Arduino-Typ befassen und da die Multithreading-Beispiele für viele Loops nebeneinander durcharbeiten - aber noch nicht jetzt.
Und dann versuch nicht alles auf einmal zu lösen, sondern in kleinen Schritten, also erstmal die Poti-pwm-Sache allein, dann den Btn und die Richtungsumkehr allein, und dann beides zusammen.
Lesezeichen