Forum: Mikrocontroller und Digitale Elektronik Arduino UNO retriggerbares Monoflop if while


von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Bitte um Hilfe beim programmieren.

Habe am Freitag meinen ersten Arduino bekommen
und übe den zu programmieren.

Dieses Tutorial habe ich dazu gefunden und damit
und den Beispielen in der arduinosoft etwas gelernt.
https://www.youtube.com/watch?v=0wAY3DYihyg&list=PLAB63281B90FB376E

Mit while komme ich nicht klar.
Wenn ich den Schalter HIGH mache geht er in die while
Schleife. Mache ich den LOW kommt er da leider nicht
mehr raus.
Was mache ich falsch? Was ist zu tun?

In der angehängten ino mit if funktioniert das Monoflop bedingt.

Habt Ihr einen guten link für mich wo while und andere erklärt werden?
Muss kein youtube sein.

LG
old.

: Bearbeitet durch Moderator
von arduino (Gast)


Lesenswert?

vielleicht sollte man den taster in der while schleife mal abfragen?

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

arduino schrieb:
> vielleicht

So wie ich das in 003 mache, bleibt er leider auch hängen. :-(

Die Codeansicht hier im Forum ist ja klasse. :-)

LG
old.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Jetzthabensieihn I. schrieb:
> bleibt er leider auch hängen

Wo bleibt er denn hängen? Und woher weißt du das? Spicke deinen Code 
doch mit Serial.println() zum debuggen. Ist dein Schalter wirklich ein 
Schalter oder ein Taster?

: Bearbeitet durch User
von Klugscheisser (Gast)


Lesenswert?

1
 
2
 while (Schalter == 1)
3
  {
4
    digitalWrite(rot,HIGH);
5
    digitalWrite(gruen,LOW);
6
    delay(3000);
7
    digitalRead(InputPin);
8
  }

In dieser Schleife kann sich "Schalter" nicht ändern, also kann er die 
Schleife auch nicht verlassen. Um sie zu verlassen, muss Du "Schalter" 
in der Schleife auf einen Wert ungleich 1 umstellen.

von Wolfgang (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> So wie ich das in 003 mache, bleibt er leider auch hängen. :-(

Das blöde an Mikrocontrollern ist, dass sie genau das machen, was man 
ihnen sagt.

Wie soll sich die Variable Schalter ändern, wenn das Programm einmal 
in den "while (Schalter == 1)"-Block gelangt ist.

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Md M. schrieb:
> Wo bleibt er denn hängen? Und woher weißt du das?

Die rote LED bleibt dann an unabhängig von der
Schalterstellung.

Siehe Bild vom Aufbau.

Klugscheisser schrieb:
> Um sie zu verlassen, muss Du "Schalter"
> in der Schleife auf einen Wert ungleich 1 umstellen.

Das verstehe ich leider nicht. Bitte etwas ausführlicher
erklären.

LG
old.

von Einer K. (Gast)


Lesenswert?

Hier ein ArduinoStyle Monoflop aus meiner Wühlkiste:
(viel Spass damit)

1
class MonoFlop
2
{
3
  private:
4
  unsigned long timestamp = 0;
5
  unsigned long interval  = 0;
6
  bool running            = false;
7
  
8
  public:
9
  MonoFlop(unsigned long interval):interval(interval){}
10
  
11
  void trigger()
12
  {
13
    running = true;
14
    timestamp = millis();
15
  }
16
  
17
  bool out()
18
  {
19
    return running;
20
  }
21
22
  void run()
23
  {
24
    if(running)
25
    {
26
      if(millis() - timestamp > interval) 
27
      { 
28
        running = false;
29
      }  
30
    }
31
  }
32
};
33
34
35
//---------------------------------------------
36
37
38
39
MonoFlop zeitglied(1000); // 1s Abfallverzoegert
40
41
const byte taster = 3;
42
const byte led    = LED_BUILTIN;
43
44
//---------------------------------------------
45
46
47
void yield()
48
{
49
  zeitglied.run();
50
}
51
52
53
//---------------------------------------------
54
55
56
void setup() 
57
{
58
  pinMode(led,OUTPUT);
59
  pinMode(taster,INPUT_PULLUP);
60
}
61
62
void loop() 
63
{
64
  // wenn Taster gedrückt, dann trigger Monoflop
65
  if(!digitalRead(taster)) zeitglied.trigger();
66
67
  // Ausgabe
68
  digitalWrite(led,zeitglied.out());
69
  
70
  delay(1);
71
}

von oldeurope O. (Gast)


Lesenswert?

Arduino F. schrieb:
> Hier ...

Danke, allerdings verstehe ich das nicht.
Ist ja ein ganz anderer Ansatz.
Woher kennst Du die Begriffe zum Programmieren
und deren Funktion?
Angeblich soll man ja die Begriffe zur Programmierung
auf der arduino.cc Seite finden. ich habe da schon
mehrfach erfolglos gesucht.
Wenn da Jemand einen link kennt, bitte zeigen.
Muss doch irgendwie gehen aus der while Schleife rauszukommen.
Vielleicht ist minibloq für mich besser geeignet.

LG
old.

von Wolfgang (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Muss doch irgendwie gehen aus der while Schleife rauszukommen.

Ja, einfach mal innerhalb der while-Schleife gucken, was der Schalter 
macht (i.e. InputPin abfragen) und die Variable Schalter 
entsprechend ändern.

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> (i.e. InputPin abfragen) und die Variable Schalter
> entsprechend ändern.

Habe ich das nicht in 003 getan?
Auch digitalRead(Schalter); funktioniert nicht,
siehe Anhang 004.

Vielleicht braucht die while Funktion eine Rechenaufgabe
(die ich nicht bieten kann).

Gibt es noch etwas anderes als if und while was da
infrage kommt?
Gibt es eine Liste mit Begriffen und Erklärungen dazu?
Link?

LG
old.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Gibt es noch etwas anderes als if und while was da
> infrage kommt?

Klingt als bräuchtest du erstmal einen kleinen C-Grundlagen bzw. 
algemein einen Programmier-Crashkurs. Und wie gesagt, schreib doch 
immer, wenn du nicht weißt, was an einer Stelle vor sich geht oder 
welcher Wert in einer Variable steht sowas wie
1
Serial.print("Stelle A: ");
2
Serial.println(Schalter,DEC);

hin, dann weißt du, was in der Variable steht und ob du sie verändert 
hast oder ob du nur glaubst, dass du sie verändert hast.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

1
Schalter = digitalRead(InputPin);
1
digitalRead(Schalter);

Siehst du die Unterschiede?

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Md M. schrieb:
> Siehst du die Unterschiede?

Nein?

Ich habe über Google !!! etwas bei arduino gefunden:
https://www.arduino.cc/en/Tutorial/WhileStatementConditional

Ich muss für 1 HIGH und für 0 LOW schreiben.
Das war der Fehler.
Jetzt funzt das. :-) Der Tag ist gerettet.
Über den Pfad finde ich dann auch weitere Erklärungen
auf der arduino.cc Seite.

LG
old.

von Nick S. (c0re)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Ich muss für 1 HIGH und für 0 LOW schreiben.
> Das war der Fehler.
> Jetzt funzt das. :-) Der Tag ist gerettet.
> Über den Pfad finde ich dann auch weitere Erklärungen
> auf der arduino.cc Seite.

Immer gut NICHT zu wissen warum etwas funktioniert

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Arduino F. schrieb:
>> Hier ...
>
> Danke, allerdings verstehe ich das nicht.
> Ist ja ein ganz anderer Ansatz.
> Woher kennst Du die Begriffe zum Programmieren
> und deren Funktion?

Was du (und auch ich) verwende(st) ist C++.
Dazu gibts reichlich im Internet.
Arduino ist übrigens gerade bei C++11 angekommen.

Angefangen, habe ich übrigens mit Büchern, und so...

---

> anderer Ansatz
Klar.
Dein 3 tausender Delay wird dir noch das Genick brechen.

Jetzthabensieihn I. schrieb:
> Wenn da Jemand einen link kennt, bitte zeigen
Zu while: http://en.cppreference.com/w/cpp/language/while

von oldeurope O. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Jetzt funzt das.

Tut es leider nicht.
Hatte statt while, if geschrieben in 005.
Damit geht es bedingt.

Arduino F. schrieb:
> Zu while

Absolut unverständlich für mich.
Ich schaue mich mal auf der arduino Seite um.
Wenn ich damit nicht klar komme probiere ich
mal minibloq. Darauf bin ich zufällig bei youtube
gekommen.

LG
old.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Arduino F. schrieb:
>> Zu while
>
> Absolut unverständlich für mich.

Ok, das kann ich nachvollziehen, auf der Seite sieht das auf den ersten 
Blick etwas viel aus. Wenn man das mit Mathematik vergleicht, hast du 
dich da quasi von der Addition erschrecken lassen.

> Ich schaue mich mal auf der arduino Seite um.

Dann hier https://www.arduino.cc/en/Reference/While

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Klugscheisser schrieb:
> Um sie zu verlassen, muss Du "Schalter"
> in der Schleife auf einen Wert ungleich 1 umstellen.

Ja, ich habe ihn um eins erniedrigt
Schalter --;
und komme raus.

Jetzt habe ich die ino falsch bezeichet, sollte 006 sein,
egal.

Ich hoffe mal da raucht nichts ab, wenn ich im Programm
Schalter ++;
mache.

Arduino F. schrieb:
> Dein 3 tausender Delay wird dir noch das Genick brechen.

Knack.
Ich muss mal zusehen, dass er auf die fallende Flanke
in while kommt.

LG
old.




@Moderation: Bitte mal retriggerbares in der Überschrift
vom Startbeitrag setzen.

von Einer K. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Knack.
> Ich muss mal zusehen, dass er auf die fallende Flanke
> in while kommt.

Tipp:
Suche das Arduino Beispiel "BlinkWithoutDelay"
Da findest du die Lösung für dein Delay Problem.

von Joachim B. (jar)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Klugscheisser schrieb:
>> Um sie zu verlassen, muss Du "Schalter"
>> in der Schleife auf einen Wert ungleich 1 umstellen.
>
> Das verstehe ich leider nicht. Bitte etwas ausführlicher
> erklären.

 Schalter = digitalRead(InputPin);
 while (Schalter == 1)
  {
    digitalWrite(rot,HIGH);
    digitalWrite(gruen,LOW);
    delay(3000);
    digitalRead(InputPin);
  }

OK, Versuch

du gehst in den Supermarkt und willst Kaffe, fragst vor dem Drehkreuz 
die Kassiererin in welchem Regal -> diese Info ist dein (Schalter ==  1)

Solange du diese Info hast und keine neue Info anforderst schickt dich 
diese Schleife

 while (Schalter == 1)

immer ums Kaffeeregal rum, wie sollst du da wieder rauskommen wenn du 
nicht mal neuere Infos bestellst, also den Schalter in deinem im 
Kreislaufen neu befragst!

die weitere Abfrage ob der Schalter immer noch 1 ist muss natürlich in 
die Schleife damit du raus kommst.

von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> digitalRead(InputPin);

siehe 003.ino

In der Schleife ist der Schalterzustand parameter.
Deshalb ist das sinnlos den Abzufragen.
Du muss Dich da raus rechnen, siehe Beitrag:

Jetzthabensieihn I. schrieb:
> und komme raus
So erkläre ich mir das.
___________________________________________

Arduino F. schrieb:
> Tipp

Danke, ich befasse mich jetzt erstmal mit den
Bool'schen Operatoren.

LG
old.

von Achim S. (Gast)


Lesenswert?

eigentlich wollte ich den Spielverderber machen. Aber ich glaube, der TO 
braucht braucht so langsam doch einen deutlicheren Hinweis...

Jetzthabensieihn I. schrieb:
> In der Schleife ist der Schalterzustand parameter.
> Deshalb ist das sinnlos den Abzufragen.

Du sollst den Schalterzustand innerhalb der Schleife nicht abfragen, du 
sollst ihn aktualiseren! (Damit die Abfrage der Schleifenbedingungen 
mitkriegen kann, wenn sich der Zustand des Schalters wieder ändert)

Mach aus dem

  Schalter = digitalRead(InputPin);
  Serial.println(Schalter,DEC);
1
  while (Schalter == 1)
2
  {
3
    digitalWrite(rot,HIGH);
4
    digitalWrite(gruen,LOW);
5
    delay(3000);
6
    digitalRead(InputPin); //in dieser Schleifer bleibt der Wert von 
7
                           //Schalter konstant. Die Schleife kann nie
8
                           //verlassen werden
9
  }

bitte einfach mal ein
1
  Schalter = digitalRead(InputPin);
2
  Serial.println(Schalter,DEC);
3
4
  while (Schalter == 1)
5
  {
6
    digitalWrite(rot,HIGH);
7
    digitalWrite(gruen,LOW);
8
    delay(3000);
9
    Schalter = digitalRead(InputPin);
10
    //in dieser Schleife wird der Zustand des Schalters bei jedem
11
    //Schleifenadurchlauf neu abgefragt. 
12
    //Sobald Schalter auf 0 wechselt, wird die Schleife beendet
13
   }

Vergiss bitte nicht auch die Kommentare in deinen Code einzufügen (als 
Merkhilfe)

von oldeurope O. (Gast)


Lesenswert?

Achim S. schrieb:
> der TO

ist schon lange aus der while Schleife raus.

Frage:
wie gibt man mit der Tastatur logical or und xor ein?

LG
old.

von Achim S. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Achim S. schrieb:
>> der TO
>
> ist schon lange aus der while Schleife raus.

Ja, und zwar mit einer völlig unsinnigen Methode:

Jetzthabensieihn I. schrieb:
> Ja, ich habe ihn um eins erniedrigt
> Schalter --;
> und komme raus.

Warum machst du Sache nicht einfach richtig? Wäre das zu einfach?

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Achim S. schrieb:
> Aber ich glaube, der TO
> braucht braucht so langsam doch einen deutlicheren Hinweis...

Hatte er eigentlich schon:

Md M. schrieb:
> Schalter = digitalRead(InputPin);
> digitalRead(Schalter);
>
> Siehst du die Unterschiede?

Jetzthabensieihn I. schrieb:
> Frage:
> wie gibt man mit der Tastatur logical or und xor ein?

Wie schon gesagt:

Md M. schrieb:
> Klingt als bräuchtest du erstmal einen kleinen C-Grundlagen bzw.
> algemein einen Programmier-Crashkurs.

http://www2.informatik.uni-halle.de/lehre/c/c_operat.html
Logische und bitweise Operatoren.

von oldeurope O. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Frage:
> wie gibt man mit der Tastatur logical or und xor ein?

Md M. schrieb:
> http://www2.informatik.uni-halle.de/lehre/c/c_operat.html
> Logische und bitweise Operatoren.

Mit Copy und Paste von da. Danke.

LG
old.

von Joachim B. (jar)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Bitte um Hilfe beim programmieren.
> Mit while komme ich nicht klar.
> Wenn ich den Schalter HIGH mache geht er in die while
> Schleife. Mache ich den LOW kommt er da leider nicht
> mehr raus.
> LG
> old.

das wolltest DU, den Schalter befragen bei HIGH rein in die while 
Schleife!
den Schalter befragen und bei LOW raus!

Jetzthabensieihn I. schrieb:
> Joachim B. schrieb:
>> digitalRead(InputPin);
>
> siehe 003.ino
>
> In der Schleife ist der Schalterzustand parameter.
> Deshalb ist das sinnlos den Abzufragen.
> Du muss Dich da raus rechnen, siehe Beitrag:
> LG
> old.

  while (Schalter == HIGH)
  {
    digitalWrite(Schalter,HIGH);
    digitalWrite(rot,HIGH);
    digitalWrite(gruen,LOW);
    delay(3000);

    Schalter --;
  }

deswegen ist dieses falsch!
Du befragt den Schalter und gehst bei HIGH rein, soweit OK.
Nun befragst du aber in der WHILE Schleife den Schalter nicht sondern 
vergisst was die Frage am Anfang war und das ist nicht gleich deiner 
ersten Forderung!

Es ist ein Unterschied ob der Schalter LOW wird oder ob man den 
"gemerkten" Schalterzustand vergisst oder sich falsch erinnert.

von Joachim B. (jar)


Lesenswert?

ja ne is klar

wer Gedankenfehler aufzeigt bekommt ein negativ reingewürgt?
echt jetzt?

Die Forderung war wenn der Schalter wieder LOW wird, das ist aber nicht 
der Fall wer den gemerkten Schalterzustand einfach negiert!
Das hat mit Schalterzustand nichts zu tun.

Jetzthabensieihn I. schrieb:
> Wenn ich den Schalter HIGH mache geht er in die while
> Schleife. Mache ich den LOW kommt er da leider nicht
> mehr raus.

so geht das, sagten auch andere:

Achim S. schrieb:
> while (Schalter == 1)
>   {
>     digitalWrite(rot,HIGH);
>     digitalWrite(gruen,LOW);
>     delay(3000);
>     Schalter = digitalRead(InputPin);
>     //in dieser Schleife wird der Zustand des Schalters bei jedem
>     //Schleifenadurchlauf neu abgefragt.
>     //Sobald Schalter auf 0 wechselt, wird die Schleife beendet
>    }

das hatte ich auch versucht zu erklären, aber OK

von Joachim B. (jar)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Habe ich das nicht in 003 getan?
> Auch digitalRead(Schalter); funktioniert nicht,
> siehe Anhang 004.

  while (Schalter == 1)
  {
    digitalRead(Schalter);
    digitalWrite(rot,HIGH);
    digitalWrite(gruen,LOW);
    digitalRead(Schalter);
    delay(3000);
    digitalRead(Schalter);

  }

du verstehst immer noch nicht

vor while:
Schalter = digitalRead(InputPin);
^Merker^.........^Schalter^

while (Schalter == 1)
solange Merker ==1

in der while

digitalRead(Schalter);

schick der Schalter kann sich ändern,
der Merker wird nicht verändert es fehlt:

Schalter = digitalRead(InputPin);
^Merker^.........^Schalter^

und solange der Merker (Schalter) nicht durch den digitalRead(InputPin) 
geändert wird:

while (Schalter == 1)

von Joachim B. (jar)


Lesenswert?

du könntest dir den Merker Schalter auch sparen wenn du gleich in der 
while abfragst,

  while( digitalRead(InputPin)== 1 )
  { digitalWrite(rot,HIGH);
    digitalWrite(gruen,LOW);
    delay(50); // und dazu entprellst bis der Schalterzustand stabil 
wird
  }
  // und danach das low wider entprellst
  do
  {delay(50); // und dazu entprellst bis der Schalterzustand stabil wird
  }while( digitalRead(InputPin)==1 );


bevor es in eine neue Runde geht

: Bearbeitet durch User
von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> while( digitalRead(Inpu

Das digitalRead über dem while war die Ursache.

Jetzt sehe ich aber keinen Unterschied zu if.
Ich muss das aber noch genauer untersuchen.

Diese Lösung muss ich mal nachvollziehen:
Beitrag "Re: Arduino UNO etriggerbares Monoflop if while"

LG
old.

von Joachim B. (jar)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Das digitalRead über dem while war die Ursache.

nicht nur, auch deine ganzen vorigen Abfragen

es ist halt ein Unterschied ob ich mit dem Finger teste ob die 
Herdplatte heiss ist
( Schalter = digitalRead(InputPin); )
^ Finger.......^ Herdplatte = heiss

und solange Finger aua (egal ob die Herdplatte an ist oder nicht)
ich dann heule

und wenn der Finger nicht mehr weh tut weiter mache, (egal ob die 
Herdplatte noch an ist).....

oder ob ich bevor ich weiter mache noch mal den Finger auf die 
Herdplatte lege

> Jetzt sehe ich aber keinen Unterschied zu if.

das wird der Compiler schon optimierend fast gleichwertig übersetzen 
WENN es das gleiche meint.

von Einer K. (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Diese Lösung muss ich mal nachvollziehen:
> Beitrag "Re: Arduino UNO etriggerbares Monoflop if while"

Wenn dir daran etwas unklar ist, dann kann ich dir sicherlich die 
passenden Stichworte für Google liefern.

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Ha! Genau das Richtige für mich:
www.ov-meschede.de/workshop/Arduino%20Programmierhandbuch.pdf

Jetzthabensieihn I. schrieb:
> ich befasse mich jetzt erstmal mit den
> Bool'schen Operatoren.

Die UND Verknüpfung mit Variablen steht auch schon.
Macht mir Spaß der Arduino. :-)

LG
old.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Jetzthabensieihn I. schrieb:
> www.ov-meschede.de/workshop/Arduino%20Programmierhandbuch.pdf
So wird ein Link draus:
http://www.ov-meschede.de/workshop/Arduino%20Programmierhandbuch.pdf

scheint leicht verdaubare Kost zu sein, dazu in deutscher Sprache, was 
dem deutschsprachigem Fremdsprachabstinenzler entgegen kommt (wobei mein 
Englisch auch nur für's Nötigste reicht - ohne Google wäre ich echt arm 
dran ;))

MfG

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Macht mir Spaß der Arduino. :-)

Endlich hat hier mal jemand begriffen, wozu Arduino gemacht ist.

von oldeurope O. (Gast)


Lesenswert?

Md M. schrieb:
> wozu Arduino gemacht ist

Beitrag "Re: Elektrische Rollosteuerung"

Wenn ich alle logischen Verknüpfungen in Griff habe,
kann ich den Arduino da schon einbauen.
Das Hardwaremonoflop und die Endlagenschalter werden
dann mit dem Programmierfortschritt entfernt.
Da das CD4541 ja vorhanden ist, hat das Softwaremonoflop
hier keine Eile.

LG
old.

von Manfred (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
> Ha! Genau das Richtige für mich:
> www.ov-meschede.de/workshop/Arduino%20Programmierhandbuch.pdf
Liegt bei mir seit 2015 auf der Festplatte, mit sowas und einigen 
Schulscripten (per Google gefunden) habe ich am ersten Uno Blinkeleds, 
Drehpoti, Taster ... bespielt.

Ich hatte zwar ein konkretes Projekt im Auge, weiß aber aus langjähriger 
Erfahrung, dass es besser ist, sich erstmal Grundlagen ohne direktes 
Gesamtziel zu erarbeiten.

Ich habe auch schon stundenlang eigene Fehler *) gesucht, glaube aber, 
dass ich damit schneller am Ziel war als meine Ergüsse in Foren zu 
posten.

*) Geschweifte Klammern und Semikolon sind meine Feinde.

> Macht mir Spaß der Arduino. :-)
Das macht er in der Tat, sogar süchtig.

Patrick J. schrieb:
> scheint leicht verdaubare Kost zu sein, dazu in deutscher Sprache, was
> dem deutschsprachigem Fremdsprachabstinenzler entgegen kommt (wobei mein
> Englisch auch nur für's Nötigste reicht - ohne Google wäre ich echt arm
> dran ;))
Mein Englisch reicht, mit Servicetechnikern per Telefon zu sprechen - 
dennoch bevorzuge ich Deutsche Unterlagen, die Muttersprache geht immer 
noch am besten.

Jetzthabensieihn I. schrieb:
> Da das CD4541 ja vorhanden ist, hat das Softwaremonoflop
> hier keine Eile.
Dafür schäme Dich!

von oldeurope O. (Gast)


Lesenswert?

Manfred schrieb:
> Jetzthabensieihn I. schrieb:
>> Da das CD4541 ja vorhanden ist, hat das Softwaremonoflop
>> hier keine Eile.
> Dafür schäme Dich!

Warum?

Manfred schrieb:
> Ich habe auch schon stundenlang eigene Fehler *) gesucht, glaube aber,
> dass ich damit schneller am Ziel war als meine Ergüsse in Foren zu
> posten.

Habe ich inzwischen auch gemerkt.
Im Programmierbereich des Forums ist die Hilfsbereitschaft
nicht sonderlich ausgeprägt.

Wenn Du aber eine Frage stellst und nach stundenlanger
Suche die Lösung einstellt, hilfst Du damit anderen
Hilfesuchenden. Eine Gute Tat halt.

LG
old.

von Manfred (Gast)


Lesenswert?

Jetzthabensieihn I. schrieb:
>>> Da das CD4541 ja vorhanden ist, hat das Softwaremonoflop
>>> hier keine Eile.
>> Dafür schäme Dich!
> Warum?
Das bedeutet doch, dass Du aufgegeben hast. Es ist keine Schande, an 
einem Stück Software zu verzweifeln, aber zumindest ich kann mir selbst 
gegenüber nur schwer akzeptieren, etas abzubrechen.

>> Ich habe auch schon stundenlang eigene Fehler *) gesucht, glaube aber,
>> dass ich damit schneller am Ziel war als meine Ergüsse in Foren zu
>> posten.
> Habe ich inzwischen auch gemerkt.
> Im Programmierbereich des Forums ist die Hilfsbereitschaft
> nicht sonderlich ausgeprägt.
Wenn Du selbst einmal versuchst, fremden Programmcode zu verstehen und 
zu verändern, wird Dir klar, warum das so ist.

von oldeurope O. (Gast)


Lesenswert?

Manfred schrieb:
> Das bedeutet doch,

Wenn ich alle logischen Verknüpfungen in Griff habe,
kann ich den Arduino da
Beitrag "Re: Elektrische Rollosteuerung"
schon einbauen.
Das Hardwaremonoflop und die Endlagenschalter werden
dann mit dem Programmierfortschritt entfernt.
Da das CD4541 ja vorhanden ist, hat das Softwaremonoflop
hier keine Eile.

LG
old.

von oldeurope O. (Gast)



Lesenswert?

Arduino F. schrieb:
> Suche das Arduino Beispiel "BlinkWithoutDelay"

Das ist ein guter Tipp!
Nach einigen Experimenten konnte ich zuerst
die LED über einen Schalter verzögert schalten.
Dann die Verzögerungszeiten für das Ein- und
Ausschalten separat einstllen.

Für meine Anwendung Sonnenschutzrollo
Beitrag "Re: Elektrische Rollosteuerung"
ist dieser Sketch sehr geeignet, weil ich eine
Einschaltverzögerung z.B. eine Minute und eine
Ausschaltverzögerung z.B. 30 Minuten einstellen
kann. Das ist mehr als das eine Hardware-Monoflop kann.

Damit der Sketch für Anfänger wie mich nachvollziehbar
ist, habe ich einige Kommentare dazu geschrieben.
Möge er dem Nächsten viele Stunden Arbeit ersparen.

Zum Ansehen auf die Codeansicht klicken.
https://www.mikrocontroller.net/attachment/highlight/330247

LG
old.

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
Noch kein Account? Hier anmelden.