Guten Abend Gemeinde, Da ich neu in dem Bereich bin habe ich eine kleine Frage zum Programmieren über Arduino IDE. Und zwar gibt es ein Befehl womit ich den delay Zeitraum verkleinern kann. z.B. ich habe 3 led,s nebeneinander die sollen alle nach einander leuchten, und wieder zurück zum angang also digitalWrite(blau, HIGH); delay(1000); digitalWrite(blau, LOW); digitalWrite(gruen, HIGH); delay(1000); digitalWrite(gruen, LOW); digitalWrite(rot, HIGH); delay(1000); digitalWrite(rot, LOW); digitalWrite(gruen, HIGH); delay(1000); digitalWrite(gruen, LOW); usw.... nun möchte ich aber die pause, nach jeden Ablauf um ein beliebigen Wert z.B. 10ms verkürzen bis ich bei 0 angekommen bin. Gibt es dafür einen kurzen befehl oder muss ich den Ablauf jetzt 100 mal dort hinschreiben und bei jeden Ablauf die Pause verkürzen? Vielen Dank
Hallo, Das nennt man Programmieren und ein andere Lösungsansatz - DEA - ohne Delay ! hilft Dir weiter.
Der Grundansatz ist natürlich schon mal Mist, aber der MC sonst nichts zu tun kann man das schon so machen. delay () akzeptiert normalerweise nur Konstanten als Parameter. Du baust dir also ein Unterprogramm mit einer Schleife und delay (1) und übergibst die gewünschte Verzögerungszeit als Argument. Das UP arbeitet nun delay(1) x mal ab.
delay(x) macht x Millisekunden Pause. Verkleinert man x wird die Pause kürzer. Einfach oder? Man kann für delay auch ohne weiteres eine Variable benutzen, wie: wartezeit = 1000; delay(wartezeit); wartezeit = wartezeit - 10; usw...
das mit der Variable und der Wartezeit hat wunderbar geklappt was das verringern angeht. Nun hapert es noch ein wenig beim aufwärts, sprich wenn er bei der die Wartezeit bei 0 angekommen ist soll sie in 10er schritten wieder hoch bis 1000ms gehen.
Tja... Versuchs mal mit einer zählenden Schleife! Tipp: Eine solche Schleife kann auch rückwärts zählen.
Dirk N. schrieb: > Nun hapert es noch ein wenig beim aufwärts, sprich wenn er bei der die > Wartezeit bei 0 angekommen ist soll sie in 10er schritten wieder hoch > bis 1000ms gehen. Eine so schlechte Schreibweise ist schon mal erwähnenswert. Und Mut hast Du auch, eine so dusselige Frage zu stellen! Befrage die Suchmaschine nach Arduino und arbeite Grundlagen ab. Arduino ist eine ganz tolle Umgebung, die immer wieder durch total faule Leute in Mißkredit gebracht wird - fühle Dich angesprochen.
Manfred schrieb > Eine so schlechte Schreibweise ist schon mal erwähnenswert. Und Mut hast > Du auch, eine so dusselige Frage zu stellen! > > Befrage die Suchmaschine nach Arduino und arbeite Grundlagen ab. Arduino > ist eine ganz tolle Umgebung, die immer wieder durch total faule Leute > in Mißkredit gebracht wird - fühle Dich angesprochen. Wieso ist das eine dusselige Frage? Wie gesagt ich versuche gerade mir ein bisschen Wissen was Arduino angeht anzueignen. Und da musst du mir nicht mit irgendwelchen Sprüchen kommen. Wozu sind die Foren denn da? Um Erfahrungen miteinander auszutauschen. Und da ich in dem Bereich kaum Erfahrung habe, wende ich mich an euch. Und jedem können mal Schreibfehler unter kommen. Und nur zu Info mein Sketch läuft.
Dirk N. schrieb: > Und da ich in dem Bereich kaum Erfahrung habe, wende ich mich an euch. Das kannst du ändern! Dann lautet der Tipp: Schaffe dir ein C/C++ Buch an, und lerne die Sprache.
> Dann lautet der Tipp: > Schaffe dir ein C/C++ Buch an, und lerne die Sprache. Genau das werde ich tun. Trotzdem danke für die Tipps
Dirk -. schrieb: > Wieso ist das eine dusselige Frage? > Wie gesagt ich versuche gerade mir ein bisschen Wissen was Arduino > angeht anzueignen. Und da musst du mir nicht mit irgendwelchen Sprüchen > kommen. Sprüche und Wahrheit sind verschiedene Dinge. > Wozu sind die Foren denn da? Um Erfahrungen miteinander auszutauschen. Eben, Erfahrungen auszutauschen. > Und da ich in dem Bereich kaum Erfahrung habe, wende ich mich an euch. Du hast nicht "kaum Erfahrung", Du hast schlicht und einfach garkeine. Du hast noch nicht einmal einfachste_Grundlagen durchgearbeitet! Ich habe mir 2015 zwei China-Unos kommen lassen, vier LEDs dran gelötet und Lauflicht gespielt. Dann habe ich stundenlang diverse Anfängerscripte bespielt, mir zwei Bücher besorgt und eigenständig "Blink ohne delay" bespielt, ein Display angesteuert, ein Drehpoti abgefragt und und und - ohne im Forum herumzukaspern. Dein "Problem" ist dermaßen billig, dass man es an einem Nachmittag eigenständig lösen kann. Ich hätte bei meinen letzten zwei Projekten 17 Threads aufmachen können, was nicht erwartungsgemäß funktioniert. Ich habe es nicht getan, habe stattdessen Beschreibungen gesucht ('ergooglet') und mir eigenes Wissen erarbeitet. Gucke ich auf meine ehemaligen Lehrlinge, die waren im Endefekt stolz, Lösungen selbst gefunden zu haben anstatt dass ich sie ihnen vorgekaut hätte. > Und jedem können mal Schreibfehler unter kommen. Ich zähle die jetzt nicht durch und einzeln auf, aber mehr als ein Schreibfehler war das schon.
Hallo Dirk, F1 schrieb >wartezeit = 1000; >delay(wartezeit); >wartezeit = wartezeit - 10; >usw... Du kannst in etwa das Beispiel von F1 nehmen und die folgende Zeite ein wenig abändern:
1 | wartezeit = wartezeit - aenderung; |
Für das langsamer werden
1 | aenderung = 10; |
Für das schneller werden
1 | aenderung = -10; |
Dann musst du nur noch die Grenzen überprüfen:
1 | if(wartezeit<0) aenderung = 10; |
2 | if(wartezeit>1000) aenderung = -10; |
Viel Spaß damit.
Hi Würde auf <Minwert+abs(aenderung) und >Maxwert-abs(aenderung) ändern, da so die Änderungsgeschwindigkeit beliebig (auch während des Ablauf) angepasst werden kann, ohne ein Überschwingen zu bekommen. Nur ist mir nicht bekannt, wie die Absolut-Funktion des Arduino heißt (also vorzeichenlose Zahl) MfG
Hallo, ich würde dir dies hier gerne aufs Herz legen :-)) http://www.mikrocontroller.net/attachment/279643/Arduino_Kochbuch__super_.pdf
Manfred schrieb: > Ich zähle die jetzt nicht durch und einzeln auf, aber mehr als ein > Schreibfehler war das schon. Genau: Manfred schrieb: > , Du Manfred schrieb: > garkeine. Manfred schrieb: > Endefekt Aber sonst bist du ein ziemlich toller Typ. Beitrag "Ruppiges verhalten - in techniklastigen Foren verbreiteter als in Foren mit anderen Themenbereichen"
:
Bearbeitet durch User
ChrisMicro schrieb > Hallo Dirk, > > F1 schrieb >>wartezeit = 1000; >>delay(wartezeit); >>wartezeit = wartezeit - 10; >>usw... > > Du kannst in etwa das Beispiel von F1 nehmen und die folgende Zeite ein > wenig abändern: > wartezeit = wartezeit - aenderung; > > Für das langsamer werdenaenderung = 10; > > Für das schneller werden > aenderung = -10; > > Dann musst du nur noch die Grenzen überprüfen: > if(wartezeit<0) aenderung = 10; > if(wartezeit>1000) aenderung = -10; > > Viel Spaß damit. Das werde ich mal testen bzw. versuchen zu schreiben. > Nur ist mir nicht bekannt, wie die Absolut-Funktion des Arduino heißt > (also vorzeichenlose Zahl) Was meinst du damit? > Hallo, > ich würde dir dies hier gerne aufs Herz legen :-)) > > http://www.mikrocontroller.net/attachment/279643/Arduino_Kochbuch__super_.pdf Danke, Habe ich heruntergeladen und werde mir mal die Zeit nehmen und mir das durchlesen. Thomas Eckmann schreibt > Manfred schrieb: >> Ich zähle die jetzt nicht durch und einzeln auf, aber mehr als ein >> Schreibfehler war das schon. > > Genau: > > Manfred schrieb: >> , Du > > Manfred schrieb: >> garkeine. > > Manfred schrieb: >> Endefekt > > Aber sonst bist du ein ziemlich toller Typ. Genau Thomas so sieht es aus, Manfred sollte erst die Fehler bei sich selbst suchen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.