Hallo liebe Leute, bin von meinem Arduino auf den ESP8266 umgestiegen und kenn mich schon ein bisschen aus. Benutze das Arduino IDE. Der ESP zeigt immer HIGH an im Serial Monitor. hab kein Pullup Wiederstand im INPUT, hab aber ein Pulldown wiederstand versucht,leider erfolglos. Ja die Pins kenn ich, und welche man für was benutzt. Kann mir jemand helfen?Gibt es eine Einstellung die ich übersehen habe? liegt es daran dass alle PINS PWM haben?Kann man was dagegen machen? Danke im vorraus?
One M. schrieb: > Kann man was dagegen machen? Ja klar! Man kann das Programm richtig schreiben. Beispielsweise, indem man in Zeile 42 die Ausgabe von "High" in "Low" ändert. Oder auch umgekehrt. Oder auch gar nichts ausgibt. Und wenn du einen WiEderstand benutzt, kann das nichts werden! Nimm einen Widerstand.
:
Bearbeitet durch User
Helmut -. schrieb: > One M. schrieb: >> Kann man was dagegen machen? > > Ja klar! Man kann das Programm richtig schreiben. Beispielsweise, indem > man in Zeile 42 die Ausgabe von "High" in "Low" ändert. Oder auch > umgekehrt. Oder auch gar nichts ausgibt. > > Und wenn du einen WiEderstand benutzt, kann das nichts werden! Nimm > einen Widerstand. Danke schonmal für die Antwort auch wenn sie mehr Fragen aufwirbelt. Welche Zeile 42? Das Problem ist dass auch wenn ich garkeinen Code habe dass die Pins trotzdem immer ein HIGH ausgeben
One M. schrieb: > Das Problem ist dass auch wenn ich garkeinen Code habe dass die Pins > trotzdem immer ein HIGH ausgeben witzig, wie machen die das ohne Code? Schicken sie Rauchzeichen H-I-G-H?
One M. schrieb: > Das Problem ist dass auch wenn ich garkeinen Code habe dass die Pins > trotzdem immer ein HIGH ausgeben Wieso ist das ein Problem? Wie machst du da kein Programm drauf?
danke dass die community einem hilft, auch wenn man sich verspricht oder sonst an einer behinderung leidet
Joachim B. schrieb: > One M. schrieb: >> Das Problem ist dass auch wenn ich garkeinen Code habe dass die Pins >> trotzdem immer ein HIGH ausgeben > > witzig, wie machen die das ohne Code? > Schicken sie Rauchzeichen H-I-G-H? nein mit einem multimeter
One M. schrieb: > nein mit einem multimeter Ich frage es einfach nochmal: Wie stellst du es an da KEIN Programm drauf zu machen?
hab ich schon geschrieben dass ich mich vertippt habe aber du liest nur die hälfte und hilfst nicht weil du dich null mit der materie auskennst.
Naja, wenn die Behinderung ist, dass du denkst dass wir alle hellsehen können, dann ist das natürlich etwas doof wenn du von uns hilfe möchtest... So muss auch ich sagen, dass ich denke, dass wahrscheinlich Zeile 42 so nicht korrekt ist.
One M. schrieb: > nein mit einem multimeter Und wie kommt die Ausgabe vom Multimeter zum Seriellen Monitor?
Hallo One M. Die Kollegen hier versuchen dir zu erklären, daß ohne Programm hier keine Fehlerdiagnose erstellt werden kann. Spaßvogel Helmut -. (dc3yc) hat es mit dem Hinweis auf deine Programmzeile 42 versucht. Stell das Programm hier ein, und die Kollegen können die Glaskugel beiseite legen. Gruß Stephan
One M. schrieb: > hab ich schon geschrieben dass ich mich vertippt habe aber du > liest nur > die hälfte und hilfst nicht weil du dich null mit der materie auskennst. Ich vermute mal, der D1 mini ist für dich zu kompliziert, bleibe lieber beim Arduino.
One M. schrieb: > hab ich schon geschrieben dass ich mich vertippt habe aber du liest nur > die hälfte und hilfst nicht weil du dich null mit der materie auskennst. Du hast übrigens mit keinem Wort erwähnet, wo du dich vertippt hast! Das darf ich mir also aussuchen. Auch das Programm darf ich mit aussuchen. Dann frage ich mich doch.... (....) Alles klar! Keine Fragen mehr! Ich sehe schon: Mein Hilfe hier ist nicht erwünscht. Werde mich also deiner, mir weit überlegenen Kompetenz, und damit auch deinem mehr als gerechtem Urteil beugen.
das Programm ist byte seven_seg_digits[10] = { B11111100, // = 0 B01100000, // = 1 B11011010, // = 2 B11110010, // = 3 B01100110, // = 4 B10110110, // = 5 B10111110, // = 6 B11100000, // = 7 B11111110, // = 8 B11100110 // = 9 }; int latchPin = 12; int clockPin = 4; int dataPin = 14; #define puls 2 void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(puls, INPUT); Serial.begin(9600); } void sevenSegWrite(byte digit) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]); digitalWrite(latchPin, HIGH); } void loop() { for (byte digit = 10; digit > 0; --digit) { if(digitalRead(puls) == HIGH){ Serial.println("HIGH"); sevenSegWrite(digit - 1); delay(500); if(digitalRead(puls) == LOW){ Serial.println("LOW");} } } } Gruss Milian
Hallo Milian if(digitalRead(puls) == HIGH){ // start: wird ausgeführt, bei HIGH Serial.println("HIGH"); sevenSegWrite(digit - 1); delay(500); if(digitalRead(puls) == LOW) // wird ausgeführt, wenn bis nach 500ms { // auf Low gewechset wird sonst nie Serial.println("LOW"); } }//ende: wird ausgeführt, bei HIGH du Testest auf HIGH. Wenn der if-HIGH Code ausgführt wird, wird IN diesem Programmabschnitt auf LOW getestet, sonst nie. Ist dies so gewollt? Gruß Stefan
Stephan schrieb: > Ist dies so gewollt? > Hallo Stefan,erstmal danke dass du dir die Mühe machst mir zu helfen, hoffe dir passiert viel gutes im Leben!! Wenn ich das richtig verstanden habe, ist das nicht so gewollt, hoiffe ich hab das richtig verstanden, es soll den input D7 also 14 auf LOw testen nicht den Programmabschnitt...
Hallo Milian, du Testest Pin2 == puls nicht Pin14 Du Testest "puls" auf LOW Innerhalb "puls == HIGH" wenn puls immer LOW ist, dann wird nie auf "puls == LOW" getestet Du solltest die geschweiften Klammern anderst setzen. z.B.: void loop() { for (byte digit = 10; digit > 0; --digit) { if(digitalRead(puls) == HIGH){ Serial.println("HIGH"); } if(digitalRead(puls) == LOW){ Serial.println("LOW"); } sevenSegWrite(digit - 1); delay(500); } } Gruß Stephan
hab jetzt das delay ein paar zeilen nach unten gelegt und jetzt funktioniert es anscheinen aber malfunktioniert ab und zu, dersuche mal pullup und pulldown
Hallo Milian, wie sieht " void loop{ ... " bei dir jetzt aus? Gruß Stephan
Stephan schrieb: > wie sieht " void loop{ ... " > bei dir jetzt aus? dank dir funktioniert es jetzt ein bisschen, du bist der beste!!! Bitteschön, hab einen Momentary tactile switch der 2 inputs hat, die Astabile Kippstufe und einen monostabilen kippstufen Schalter der genau 1,37000000000002 Sekunden an ist, so kann ich zwischen automatisch und manuell switchen.
Hallo Milian, da fehlt eine } nach Serial.println("LOW"); oder du hast nach Zeile 59 noch ne }. die wäre aber falsch gesetzt Gruß Stephan
Stephan schrieb: > Hallo Milian, > > da fehlt eine } nach Serial.println("LOW"); > > oder du hast nach Zeile 59 noch ne }. die wäre aber falsch gesetzt > > Gruß Stephan Ja danach kommen noch 2 Zeilen mit }, korrigiere das eben
One M. schrieb: > if(digitalRead(puls) == HIGH){ > ... > if(digitalRead(puls) == LOW){ Hoffentlich sind HIGH und LOW irgendwo passend definiert - in dem gezeigten Code jedenfalls nicht.
Manchmal wäre es praktischer ein 'else' zu benutzen. Die Erklärung dazu steht in jedem guten C Buch.
2 Vorschläge zur Güte: 1.) Die Arduino-IDE hat eine "Autoformat"-Funktion (STRG+T), dann siehst Du an der Einrückung besser, was der Prozessor macht und nicht das, was Du möchtest. 2.) Wenn Du Dein Programm hier zeigst, dann verwende doch bitte die C-Code-Tags (siehe "Formatierung" über dem Eingabefeld, wenn Du einen Beitrag schreibst). Das ist besser als ein Screenshot.
:
Bearbeitet durch User
Hallo Wolfgang er verwendet die Arduino IDE, da gibt es einige Threads dazu über Sinn und Unsinn. Hallo PittyJ wir sind hier am Anfang und kämpfen mit den {}. Wir brauchen jetzt erst mal einen Erfolg zur Motivation. Schönen Code gibts später. Hallo Martin H die C-Code-Tags. wie geht das?
1 | C-Code |
Zeilenweise oder Absatzweise oder sonstwie? Sonstwie konnte ich nicht testen. Hallo Milian, wie sieht " void loop{ ... " bei dir jetzt aus? Gruß Stephan
Wolfgang schrieb: > Hoffentlich sind HIGH und LOW irgendwo passend definiert - in dem > gezeigten Code jedenfalls nicht. Inwiefern definiert? Ich hab nur den Puls definiert. Danke schonmal für deine Antwort
Stephan schrieb: > Hallo Milian, > wie sieht " void loop{ ... " > bei dir jetzt aus? void loop() { // count from 9 to 0 for (byte digit = 10; digit > 0; --digit) { if (digitalRead(puls) == HIGH) { Serial.println("HIGH"); } sevenSegWrite(digit - 1); if (digitalRead(puls) == LOW) { Serial.println("LOW"); } delay(500); } } Woran ich arbeite dass die Astabile Kippstufe immer wenn die LED angeht dass der Countdown -1 geht, aber bisher läuft sie gefühlt asynchron, oder ich bilde mir das ein und es funktioniert, habe keine super Augen.. Viele Grüße, Milian!!
Hallo Milian, >Woran ich arbeite dass die Astabile Kippstufe immer wenn die LED angeht Welche LED? >dass der Countdown -1 geht, aber bisher läuft sie gefühlt asynchron, 7-Segment Anzeige? >oder ich bilde mir das ein und es funktioniert kommt darauf an was dein Programm tun soll. Bisher macht es Folgendes: Allumfassend die For Schleife in der Schleife abfrage von Pin2 auf High: ja? -> serielle ausgabe in der Schleife ausgabe auf 7-Segmentanzeige in der Schleife abfrage von Pin2 auf Low: ja? -> serielle ausgabe in der Schleife warte 500ms ende For Schleife und wieder zur For Schleife mehr nicht! Dein Programm läuft in einer Endlosschleife durch und schaut sich Pin2 an und zählt immer von 9 bis 0 mit ausgabe auf 7-Segmentanzeige. hin und wieder gibt es je nach Pin2 im Serial Monitor HIGH oder LOW aus. Soll Pin2 den Ablauf steuern? Wie Pin2 == High dann Countdown auf 7-Segmentanzeige Pin2 == Low kein Countdown auf 7-Segmentanzeige oder ähnlich? Gruß Stephan
Stephan schrieb: > Soll Pin2 den Ablauf steuern? > Wie > Pin2 == High dann Countdown auf 7-Segmentanzeige > Pin2 == Low kein Countdown auf 7-Segmentanzeige > oder ähnlich? Haargenau so!! ich zeige mal ein Foto von meinem Setup aber muss dich warnen es ist ein bisschen unordentlich und unübersichtlich. Die Blaue LED ist mit einer Astabilen Kippstufe verbunden. Das signal geht auch in einem tactilen switch zusammen mit eine Monostabilen Kippstufe dass ich immer switchen automatischem high low, zu einem manuellen High wechseln kann Die Siebensegment Anzeige mit einem 74HC595.
Stephan schrieb: > Hallo PittyJ > wir sind hier am Anfang und kämpfen mit den {}. > Wir brauchen jetzt erst mal einen Erfolg zur Motivation. > Schönen Code gibts später. > Das ist kein schöner Code, sondern hätte das Problem sofort lösen können: if(digitalRead(puls) == HIGH) { Serial.println("HIGH"); } else { Serial.println("LOW"); }
Hab den Void loop geändert und jetzt klappt alles wie es soll!!! void loop() { // count from 9 to 0 for (byte digit = 10; digit > 0; --digit) { if (digitalRead(puls) == HIGH) { Serial.println("HIGH"); sevenSegWrite(digit - 1); } if (digitalRead(puls) == LOW) { Serial.println("LOW"); } delay(500); }
Hallo PittyJ
>Die Erklärung dazu steht in jedem guten C Buch
liest er erst, wenn er programmieren geil findet.
Den Weg dorthin tret ich erstmal aus.
Hallo Milian,
du mußt dein Programm umbauen!
1. Abfrage Pin2 == High? ja -> serielle Ausgabe UND For-Schleife mit
7-Segmentausgabe
2. Abfrage Pin2 == Low? ja ( alternativ else ) -> serielle Ausgabe
3. warte 500ms
schreibs um und zeigs her.
Gruß Stephan
One M. schrieb: > Hab den Void loop geändert und jetzt klappt alles wie es soll!!! Nein, der - zugegeben seltene - Fehler, dass bei einem Schleifendurchlauf zwei Ausgaben erfolgen (erst "HIGH" und direkt danach "LOW"), wenn der Pin2 genau zwischen den beiden Abfragen seinen Pegel ändert, ist dir nur noch nicht aufgefallen ;-)
Hallo Wolfgang, das kann er nur mit if .. else beheben. dann hat PittyJ mit seinem Vorschlag 2 Fliegen mit einer Klappe erschlagen: -Syntaxfehler vorbeugen -Ablauffehler beheben Gruß Stephan
Stephan schrieb: > 1. Abfrage Pin2 == High? ja -> serielle Ausgabe UND For-Schleife mit > 7-Segmentausgabe > 2. Abfrage Pin2 == Low? ja ( alternativ else ) -> serielle Ausgabe > 3. warte 500ms > > schreibs um und zeigs her. Jetzt kommt kein Countdown mehr void loop() { // count from 9 to 0 if (digitalRead(puls) == HIGH) { Serial.println("HIGH"); for (byte digit = 10; digit > 0; --digit) { sevenSegWrite(digit - 1); }} if (digitalRead(puls) == LOW) { Serial.println("LOW"); } delay(500); } weißt du woran es liegt?
Ist das jetzt try and error Programmierung?
Hast du mal im Gedanken durchgespielt wann deine FOR Schleife ausgeführt wird?
Martin schrieb: > Hast du mal im Gedanken durchgespielt wann deine FOR Schleife ausgeführt > wird? wenn der puls auf high liegt
One M. schrieb: > Martin schrieb: >> Hast du mal im Gedanken durchgespielt wann deine FOR Schleife ausgeführt >> wird? > > wenn der puls auf high liegt Ja, korrekt, aber mit welcher Geschwindigkeit wird die Schleife durchlaufen ?
Xerxes schrieb: > Ja, korrekt, aber mit welcher Geschwindigkeit wird die Schleife > durchlaufen ? Jetzt seh ich es!! Warscheinlich so schnell dass George Lucas ein Science Fiction Film drüber drehen kann.
:
Bearbeitet durch User
Hallo Milian, leider warst du mit deinem Post schneller als ich. Ich hab dich ausversehen aufs Glatteis geschikt:( der Countdown wird in wenigen Millisekunden durchlaufen, da kann man nichts beim 7-Segment erkennen. Da sollte das delay(500) hin. Wenn das delay jedoch in der For-Schleife sitzt dauert die Abarbeitung 10 mal 500ms sind 5 Sekunden. Solange reagiert das Programm jedoch auf keine Eingaben. ( sehr schlecht ) Wir nehmen das da >Hab den Void loop geändert und jetzt klappt alles wie es soll!!! >void loop() { > // count from 9 to 0 > for (byte digit = 10; digit > 0; --digit) { > if (digitalRead(puls) == HIGH) { > Serial.println("HIGH"); > sevenSegWrite(digit - 1); > } > if (digitalRead(puls) == LOW) { > Serial.println("LOW"); > } > delay(500); > } und machen das: dein Ansatz mit else void loop() { // count from 9 to 0 for (byte digit = 10; digit > 0; --digit) { if (digitalRead(puls) == HIGH) { Serial.println("HIGH"); sevenSegWrite(digit - 1); } else { Serial.println("LOW"); } delay(500); } Pinabfrage alle 500ms Gruß Stephan
1 | void loop() { |
2 | // count from 9 to 0
|
3 | for (byte digit = 10; digit > 0; --digit) { |
4 | if (digitalRead(puls) == HIGH) { |
5 | Serial.println("HIGH"); |
6 | sevenSegWrite(digit - 1); |
7 | }
|
8 | else { |
9 | Serial.println("LOW"); |
10 | }
|
11 | delay(500); |
12 | }
|
Euer Code könne auch so aussehen. Außerdem gibt ist 4 x { aber nur 3 x }. Gebt euch doch mal ein bissl Mühe.
Beitrag #7075020 wurde vom Autor gelöscht.
Stephan schrieb: > void loop() { > // count from 9 to 0 > for (byte digit = 10; digit > 0; --digit) { > if (digitalRead(puls) == HIGH) { > Serial.println("HIGH"); > sevenSegWrite(digit - 1); > } > else { > Serial.println("LOW"); > } > delay(500); > } Wir haben es fast geschafft! Das einzige Problem was noch ist dass es manchmal stehen bleibt und nurnoch Low ausgibt
Hallo Martin H Stephan schrieb: >Hallo Martin H >die C-Code-Tags. wie geht das? >C-Code >Zeilenweise oder Absatzweise oder sonstwie? >Sonstwie konnte ich nicht testen. ich frag nochmal: Wie geht das? wo setzt du das "c in Ekigen Klammern" und wo das "/c in Eckigen Klammern"? Ich kriegs nicht gebacken! Gruß Stephan
Stephan schrieb: > ich frag nochmal: Wie geht das? > wo setzt du das "c in Ekigen Klammern" und wo das "/c in Eckigen > Klammern"? > Ich kriegs nicht gebacken! Die Formatierung wie im Screenshot oben führt zu diesem Ergebnis:
1 | void loop() { |
2 | // count from 9 to 0
|
3 | for ( byte digit = 10; digit > 0; --digit ) { |
4 | if ( digitalRead( puls ) == HIGH) { |
5 | Serial.println( "HIGH" ); |
6 | sevenSegWrite( digit - 1 ); |
7 | } else { |
8 | Serial.println( "LOW" ); |
9 | }
|
10 | delay( 500 ); |
11 | }
|
12 | }
|
EDIT: Der rechte Screenshot ist der richtige.
:
Bearbeitet durch User
Soll ggf. alle 500ms bzw. runtergezählt werden, wenn der Pin dauernd High ist? Was soll passieren, wenn runtergezählt wurde? Variante ohne for-Schleife:
1 | ...
|
2 | // count from 9 to 0
|
3 | byte digit = 9; |
4 | ...
|
5 | |
6 | void setup() { |
7 | ...
|
8 | }
|
9 | |
10 | void loop() { |
11 | if (digitalRead(puls) == HIGH) { |
12 | Serial.println("HIGH"); |
13 | sevenSegWrite(digit); |
14 | if (digit > 0) { |
15 | digit--; |
16 | // falls erneut runtergezählt werden soll
|
17 | /* } else {
|
18 | digit = 9;
|
19 | */ } |
20 | } else { |
21 | Serial.println("LOW"); |
22 | }
|
23 | delay(500); |
24 | ...
|
25 | }
|
Apropos C-Tags: https://www.mikrocontroller.net/articles/Formatierung_im_Forum
Hallo Milian, Wenn die äußere Beschaltung passt KÖNNTE delay(500); das Problem sein die 500ms sind EVENTUELL zu lange für die im Hintergrund laufende Firmware des ESP8266. ein anderer Ansatz wäre dann sowas: https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay Gruß Stephan
Danke Martin, jetzt habe ich es kapiert Gruß Stephan
Stephan schrieb: > Wenn die äußere Beschaltung passt > KÖNNTE delay(500); das Problem sein > die 500ms sind EVENTUELL zu lange für die im Hintergrund laufende > Firmware des ESP8266. > ein anderer Ansatz wäre dann sowas: > https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay Hallo Stephan mit delay(250); wird es etwas weniger :) versuche jetzt millis
Stephan schrieb: > Gruß Stephan Hallo Stephan nochmal, versuche es mit den millis hinzubekommen hab: unsigned long zeit; und im void loop: zeit= millis(500); zeit;
:
Bearbeitet durch User
1 | #include <stdint.h> |
2 | #include <assert.h> |
3 | #include <stdlib.h> |
4 | |
5 | const uint16_t latchPin = 12U; |
6 | const uint16_t clockPin = 4U; |
7 | const uint16_t dataPin = 14U; |
8 | const uint16_t puls = 2U; |
9 | |
10 | void setup() { |
11 | pinMode(latchPin, OUTPUT); |
12 | pinMode(clockPin, OUTPUT); |
13 | pinMode(dataPin, OUTPUT); |
14 | pinMode(puls, INPUT); |
15 | Serial.begin(9600); |
16 | }
|
17 | |
18 | void sevenSegWrite(const uint8_t digit) { |
19 | const uint8_t seven_seg_digits[] = { |
20 | 0b11111100, // = 0 |
21 | 0b01100000, // = 1 |
22 | 0b11011010, // = 2 |
23 | 0b11110010, // = 3 |
24 | 0b01100110, // = 4 |
25 | 0b10110110, // = 5 |
26 | 0b10111110, // = 6 |
27 | 0b11100000, // = 7 |
28 | 0b11111110, // = 8 |
29 | 0b11100110 // = 9 |
30 | };
|
31 | |
32 | // assert(digit < 10);
|
33 | |
34 | const size_t ENTRY_COUNT = sizeof(seven_seg_digits)/sizeof(seven_seg_digits[0]); |
35 | if(digit >= ENTRY_COUNT) { |
36 | Serial.println("sevenSegWrite, argument out of range!"); |
37 | return; |
38 | }
|
39 | |
40 | digitalWrite(latchPin, LOW); |
41 | |
42 | shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]); |
43 | |
44 | digitalWrite(latchPin, HIGH); |
45 | }
|
46 | |
47 | void subProgram_countdown() |
48 | {
|
49 | const uint32_t COUNTDOWN_INTERVAL_MS = 500; |
50 | static uint32_t startTime = millis(); |
51 | |
52 | if(millis() - startTime > COUNTDOWN_INTERVAL_MS) { |
53 | startTime = millis(); |
54 | |
55 | const bool buttonIsPressed = (digitalRead(puls) == HIGH); |
56 | |
57 | if(buttonIsPressed){ |
58 | Serial.println("Pressed"); |
59 | |
60 | static uint8_t currentNumber = 9; |
61 | sevenSegWrite(currentNumber); |
62 | |
63 | if(currentNumber == 0) { |
64 | currentNumber = 9; |
65 | } else { |
66 | currentNumber--; |
67 | }
|
68 | } else { |
69 | Serial.println("Not Pressed"); |
70 | }
|
71 | }
|
72 | }
|
73 | |
74 | void loop() { |
75 | subProgram_countdown(); |
76 | }
|
Danke PiffPoff, Weihnachten kam früh dieses Jahr
Nur wenn es auch so funktioniert wie es soll, sonst war das ja jetzt nicht so hilfreich... :/ Hoffe das tut auch so wie du das haben möchtest...
Stephan schrieb: > Wenn das delay jedoch in der For-Schleife sitzt dauert die Abarbeitung > 10 mal 500ms sind 5 Sekunden. Solange reagiert das Programm jedoch auf > keine Eingaben. ( sehr schlecht ) Da hilft häufiger mal ein yield()
Wolfgang schrieb: > Da hilft häufiger mal ein yield() Wohl kaum, schau mal was im Quelltext von Delay steht:
1 | void delay(unsigned long ms) |
2 | {
|
3 | uint32_t start = micros(); |
4 | while (ms > 0) { |
5 | yield(); |
6 | while ( ms > 0 && (micros() - start) >= 1000) { |
7 | ms--; |
8 | start += 1000; |
9 | }
|
10 | }
|
11 | }
|
Hallo Milian, läuft das Programm mit der millis() Variante besser als die delay() Vaiante? Gruß Stephan
Stephan schrieb: > Hallo Milian, > > läuft das Programm mit der millis() Variante besser als die delay() > Vaiante? > > Gruß Stephan leider nein, jetzt ist das gegenteil, manchmal hängt es sich auf und der serial.read gibt nur low aus, obwohl das Taktsignal weiter besteht
Hallo Milian, Du hast 2 Programmversionen, die das tun was du erwartest. Das Problem liegt VERMUTLICH an der Verbindung zwischen dem Taktgeber und dem Pin2 des ESPs. -Der Ausgang könnte nur zwischen nix und Low wechseln. Dann wird ein Pullup-Widerstand benötigt. -Der Taktgeber hängt sich auf. Bauteildimensionen überprüfen. -Verbide zum Test den Taktgeber direkt mit dem ESP ohne die Schaltung auf dem großen Steckbrett und suche den Fehler Wenn du Hilfe brauchst, Dann zeichne einen Schaltplan von dem Schaltungsausschnitt, ( das Steckbrett mit dem Taktgeber ) mach hier einen neuen Thread auf und hoffe auf Hilfe. Es wird sicher einige Forenmitglieder geben, die an deinem Schaltpan rumnörgeln. Oder welche, die dir "um zwei Ecken rum" was sagen wollen ( wie hier Programmzeile 42 ). Versuche zu verstehen was sie dir mitteilen wollen, und bleib immer cool. Gruß Stephan
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.