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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von oldeurope O. (Gast)


Angehängte Dateien:

Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
vielleicht sollte man den taster in der while schleife mal abfragen?

von oldeurope O. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
1
Schalter = digitalRead(InputPin);
1
digitalRead(Schalter);

Siehst du die Unterschiede?

von oldeurope O. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von oldeurope O. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von oldeurope O. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Jetzthabensieihn I. schrieb:
> Macht mir Spaß der Arduino. :-)

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

von oldeurope O. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.