INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Blinklichter asynchron
19.01.2020, 03:25
Beitrag #9
RE: Blinklichter asynchron
@alle,
finde ich gut, das nun einige Beispiele mit verschiedenen Ansätzen hier auftauchen...

Ich bin zwar der klassiche prozedurale aber lerne gerne Klassen etc...

Z.Bsp. kannte ich das Bsp von Tommy noch nicht, das man einfach in einer struct den code reinschreiben darf.
Ich bin immer von Class ausgegangen.

Mach Spaß zu lesen.
Eingebette LIBs leider nicht, ist zwar mit den Mobatools gut gemeint, würde ich im Alltag auch so nehmen, aber nur für diese Aufgabe zum lernen sind die einzelnen Fälle prima.

Weiter so, freue mich das alles zu lesen...

Gruß
Shrimps

PS: Habe gerade erfolgreich 3 Nanos via RS485 an einen ESP32 gehangen, Modbus läßt grüßen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 05:16
Beitrag #10
RE: Blinklichter asynchron
(19.01.2020 03:25)shrimps schrieb:  @alle,
finde ich gut, das nun einige Beispiele mit verschiedenen Ansätzen hier auftauchen...

Ihr seid alle sooooo fleißig!

Hier noch die Version für Schreibfaule. Big Grin

Code:
const byte LED[] {7, 8, 9};

void setup() {
  for (auto &pin : LED) pinMode(pin, OUTPUT);
  for (;;) {
    digitalWrite(LED[0], millis() % 500 >= 250);    // 250ms an/aus
    digitalWrite(LED[1], millis() % 1000 >= 500);   // 500ms an/aus
    digitalWrite(LED[2], millis() % 2000 >= 1000);  // 1 s an/aus
  }
}

void loop() {}


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 09:10
Beitrag #11
RE: Blinklichter asynchron
(19.01.2020 03:25)shrimps schrieb:  Z.Bsp. kannte ich das Bsp von Tommy noch nicht, das man einfach in einer struct den code reinschreiben darf.
Ich bin immer von Class ausgegangen.
Ich würde auch dabei bleiben. Das mit dem 'struct' ist eine historische Besonderheit von C++.
Wenn man eine Klasse implementiert, sollte man das auch so nennen. Ich sehe keinen Vorteil darin, das mit dem Schlüsselwort 'struct' zu verschleiern.

(19.01.2020 05:16)Fips schrieb:  Hier noch die Version für Schreibfaule. Big Grin
Genial Cool .
Und funktioniert ja auch - wie vom TO gewünscht - mit asymetischem Blinken:
Code:
const byte LED[] {7, 8, 9};

void setup() {
  for (auto &pin : LED) pinMode(pin, OUTPUT);
}

void loop() {
    digitalWrite(LED[0], millis() % 750 >= 250);    // 500ms an / 250ms aus
    digitalWrite(LED[1], millis() % 840 >= 500);   // 340ms an /500ms aus
    digitalWrite(LED[2], millis() % 1200 >= 1000);  // 200ms an /1 s aus
}

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 10:51 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2020 10:52 von Tommy56.)
Beitrag #12
RE: Blinklichter asynchron
(19.01.2020 09:10)MicroBahner schrieb:  Wenn man eine Klasse implementiert, sollte man das auch so nennen. Ich sehe keinen Vorteil darin, das mit dem Schlüsselwort 'struct' zu verschleiern.

Beide Varianten sind gemäß Spezifikation bis auf die Default-Sichtbarkeit (struct public, class private) gleichwertig, so dass ich nicht von einer Verschleierung sprechen würde. Es ist für einfache Konstrukte einfach die kürzere Schreibweise.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 11:29 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2020 11:55 von MicroBahner.)
Beitrag #13
RE: Blinklichter asynchron
(19.01.2020 10:51)Tommy56 schrieb:  Es ist für einfache Konstrukte einfach die kürzere Schreibweise.
Was ist daran kürzer? Wenn ich in deinem Beispiel das Schlüsselwort 'struct' durch 'class' ersetze, ist das 1 Buchstabe weniger Wink .
Aber ich sehe sofort - ohne in den Code schauen zu müssen - dass eine Klasse definiert wird.
Das Klassen mit 'struct' definiert werden können, ist aus der Historie von C++ zu verstehen.

Ich würde es in neuen Programmen niemals dafür verwenden. Und ich würde Einsteigern empfehlen, sich auch garnicht erst daran zu gewöhnen.

Aber natürlich ist es von der C++ Spezifikation her nach wie vor erlaubt ... Edit: und daran wird sich - schon rein aus Kompatibilitätsgrüneden - auch nichts ändern.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 12:47
Beitrag #14
RE: Blinklichter asynchron
(19.01.2020 09:10)MicroBahner schrieb:  Genial Cool .

Nee, nur überall fleißig mitgelesen.

Ich mag es kurz, bewahrt eine gewisse Übersichtlichkeit.


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 13:39
Beitrag #15
RE: Blinklichter asynchron
(19.01.2020 05:16)Fips schrieb:  Hier noch die Version für Schreibfaule. Big Grin

Code:
const byte LED[] {7, 8, 9};

void setup() {
  for (auto &pin : LED) pinMode(pin, OUTPUT);
  for (;;) {
    digitalWrite(LED[0], millis() % 500 >= 250);    // 250ms an/aus
    digitalWrite(LED[1], millis() % 1000 >= 500);   // 500ms an/aus
    digitalWrite(LED[2], millis() % 2000 >= 1000);  // 1 s an/aus
  }
}

void loop() {}

Gruß Fips
Die hat allerdings den Nachteil, dass sie nicht sauber über den Überlauf von millis kommt. Der Ein-Block bricht beim Überlauf vorzeitig ab.
Ich habe sie mal zeitlich auf Byte verkürzt:
Code:
byte aktuelleMillis = 0, letzteMillis = 0, dauer = 10;
int cnt = 0;
void setup() {
  Serial.begin(115200);
  Serial.println("Start");
  Serial.print("aktuell"); Serial.print("\tDiff.");
  Serial.print('\t'); Serial.println("Aktion");
}

void loop() {
  if (cnt <= 300) { // Damit das nicht ewig läuft
    if (aktuelleMillis % 75 >= 25)  {
      Serial.print(aktuelleMillis);
      Serial.print('\t');
      Serial.print((byte)(aktuelleMillis - letzteMillis));
      Serial.println("\tEin");
    }
    else {
      Serial.print(aktuelleMillis);
      Serial.print('\t');
      Serial.print((byte)(aktuelleMillis - letzteMillis));
      Serial.println("\tAus");    
    }
    aktuelleMillis++;
    cnt++;
  }  
}

Das ergibt:
Code:
Start
aktuell    Diff.    Aktion
0    0    Aus
1    1    Aus
2    2    Aus
3    3    Aus
4    4    Aus
5    5    Aus
6    6    Aus
7    7    Aus
8    8    Aus
9    9    Aus
10    10    Aus
11    11    Aus
12    12    Aus
13    13    Aus
14    14    Aus
15    15    Aus
16    16    Aus
17    17    Aus
18    18    Aus
19    19    Aus
20    20    Aus
21    21    Aus
22    22    Aus
23    23    Aus
24    24    Aus
25    25    Ein
26    26    Ein
27    27    Ein
28    28    Ein
29    29    Ein
30    30    Ein
31    31    Ein
32    32    Ein
33    33    Ein
34    34    Ein
35    35    Ein
36    36    Ein
37    37    Ein
38    38    Ein
39    39    Ein
40    40    Ein
41    41    Ein
42    42    Ein
43    43    Ein
44    44    Ein
45    45    Ein
46    46    Ein
47    47    Ein
48    48    Ein
49    49    Ein
50    50    Ein
51    51    Ein
52    52    Ein
53    53    Ein
54    54    Ein
55    55    Ein
56    56    Ein
57    57    Ein
58    58    Ein
59    59    Ein
60    60    Ein
61    61    Ein
62    62    Ein
63    63    Ein
64    64    Ein
65    65    Ein
66    66    Ein
67    67    Ein
68    68    Ein
69    69    Ein
70    70    Ein
71    71    Ein
72    72    Ein
73    73    Ein
74    74    Ein
75    75    Aus
76    76    Aus
77    77    Aus
78    78    Aus
79    79    Aus
80    80    Aus
81    81    Aus
82    82    Aus
83    83    Aus
84    84    Aus
85    85    Aus
86    86    Aus
87    87    Aus
88    88    Aus
89    89    Aus
90    90    Aus
91    91    Aus
92    92    Aus
93    93    Aus
94    94    Aus
95    95    Aus
96    96    Aus
97    97    Aus
98    98    Aus
99    99    Aus
100    100    Ein
101    101    Ein
102    102    Ein
103    103    Ein
104    104    Ein
105    105    Ein
106    106    Ein
107    107    Ein
108    108    Ein
109    109    Ein
110    110    Ein
111    111    Ein
112    112    Ein
113    113    Ein
114    114    Ein
115    115    Ein
116    116    Ein
117    117    Ein
118    118    Ein
119    119    Ein
120    120    Ein
121    121    Ein
122    122    Ein
123    123    Ein
124    124    Ein
125    125    Ein
126    126    Ein
127    127    Ein
128    128    Ein
129    129    Ein
130    130    Ein
131    131    Ein
132    132    Ein
133    133    Ein
134    134    Ein
135    135    Ein
136    136    Ein
137    137    Ein
138    138    Ein
139    139    Ein
140    140    Ein
141    141    Ein
142    142    Ein
143    143    Ein
144    144    Ein
145    145    Ein
146    146    Ein
147    147    Ein
148    148    Ein
149    149    Ein
150    150    Aus
151    151    Aus
152    152    Aus
153    153    Aus
154    154    Aus
155    155    Aus
156    156    Aus
157    157    Aus
158    158    Aus
159    159    Aus
160    160    Aus
161    161    Aus
162    162    Aus
163    163    Aus
164    164    Aus
165    165    Aus
166    166    Aus
167    167    Aus
168    168    Aus
169    169    Aus
170    170    Aus
171    171    Aus
172    172    Aus
173    173    Aus
174    174    Aus
175    175    Ein
176    176    Ein
177    177    Ein
178    178    Ein
179    179    Ein
180    180    Ein
181    181    Ein
182    182    Ein
183    183    Ein
184    184    Ein
185    185    Ein
186    186    Ein
187    187    Ein
188    188    Ein
189    189    Ein
190    190    Ein
191    191    Ein
192    192    Ein
193    193    Ein
194    194    Ein
195    195    Ein
196    196    Ein
197    197    Ein
198    198    Ein
199    199    Ein
200    200    Ein
201    201    Ein
202    202    Ein
203    203    Ein
204    204    Ein
205    205    Ein
206    206    Ein
207    207    Ein
208    208    Ein
209    209    Ein
210    210    Ein
211    211    Ein
212    212    Ein
213    213    Ein
214    214    Ein
215    215    Ein
216    216    Ein
217    217    Ein
218    218    Ein
219    219    Ein
220    220    Ein
221    221    Ein
222    222    Ein
223    223    Ein
224    224    Ein
225    225    Aus
226    226    Aus
227    227    Aus
228    228    Aus
229    229    Aus
230    230    Aus
231    231    Aus
232    232    Aus
233    233    Aus
234    234    Aus
235    235    Aus
236    236    Aus
237    237    Aus
238    238    Aus
239    239    Aus
240    240    Aus
241    241    Aus
242    242    Aus
243    243    Aus
244    244    Aus
245    245    Aus
246    246    Aus
247    247    Aus
248    248    Aus
249    249    Aus
250    250    Ein
251    251    Ein
252    252    Ein
253    253    Ein
254    254    Ein
255    255    Ein
0    0    Aus
1    1    Aus
2    2    Aus
3    3    Aus
4    4    Aus

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 13:59 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2020 14:00 von MicroBahner.)
Beitrag #16
RE: Blinklichter asynchron
(19.01.2020 13:39)Tommy56 schrieb:  Die hat allerdings den Nachteil, dass sie nicht sauber über den Überlauf von millis kommt.
Das stimmt.

Fragt sich nur, ob das für den TO relevant ist, und er seinen Modellflieger über 49 Tage lang im Dauerbetrieb blinken lassen will Wink
Das muss er dann selbst eintscheiden.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  OneWire "asynchron"? da_user 5 2.536 15.10.2018 11:33
Letzter Beitrag: Sepp

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste