Tag 8: Virtuelle LEDs
In dem Versuch des sechsten Tages haben Sie gesehen, wie Sie einen Tastschalter auf der Hardwareseite auf einen Button in der App abbilden können. Ein anderes Widget, nämlich das LED Widget ist für diesen Fall allerdings viel eindeutiger. Wie man dieses Widget richtig einsetzt und welche Möglichkeiten das bietet sehen Sie in dem heutigen Versuch.
Hinter dem heutigen Türchen befindet sich wieder ein 1 kOhm Widerstand, der für spätere Versuche wichtig wird. Heute wird allerdings die Schaltung von gestern mit einem zusätzlichen Taster verwendet.
Die Oberfläche des heutigen Tages können Sie wieder per QR-Code einfügen. Vermutlich wird die Blynk-App aber dann einen Hinweis ausgeben, dass Sie nicht genug Energie haben. Wie am Tag 6 erwähnt, können Sie das Problem umgehen, indem Sie die alten Projekte löschen. Schon haben Sie wieder genug Energie für das heutige Projekt.
Das Programm des Tages finden Sie weiter unten. Fügen Sie Ihre WLAN-Daten und den Token-Code ein und schon können Sie das Programm uploaden.
Das Programm vereint jetzt mehrere Hardware- und Softwareaktoren und Buttons. Drücken Sie beispielsweise in der App auf den ersten Button, beginnt die LED an D9 zu leuchten. Der zweite Button schaltet die LED D3, die fest auf dem Board verbaut ist. Mit dem Taster auf dem Steckboard verändern Sie den Zustand der ersten App LED. Mit dem Poti können Sie die Helligkeit der zweiten LED beeinflussen. Viele verschiedene Ansteuerungsmöglichkeiten für viele verschiedene Elemente also.
poti hat gerade angefangen zu rauchen…
naja der funktioniert noch halbwegs (stufenfrei ist das auf jedenfal nicht) aber der taster will nicht?
Also ich kann mich den anderen hier (zum Glück) nicht anschließen. Bis jetzt hat jede Schaltung auf anhieb funktioniert. Auch wenn außer acht steht das das Board viel zu harte Buchsen hat! Kleiner Tipp von mir: Entweder nen anderes Board nehmen, oder die Pinne von der LED und den Widerständen mit einer Flachzange sehr weit unten greifen und dann mit dieser hineinstecken…das funktioniert ganz gut. Auch das Poti ist qualitativ leider nicht gerade überragend, tut aber bis jetzt was es soll. Bin zufrieden :D
Ich habe alle Buchsen mit einer Pinnadel durchgestochen.
Hat sehr gut funktioniert.
LG Beni
Ich hab alle Buchsen mit einer Pinnadel durchgestochen.
Hat gut funktioniert und klingt besser als mit einer Zange zu hantieren.
LG Beni
Tja,
nachdem ich mühevoll die Beinchen vom Taster verlängert habe (draht von tag 3 dran gelötet)funktioniert jetzt wenigstens die LED wieder. Aber das poti ändert die helligkeit überhaupt nicht (weder die rote noch die blaue) gestern konnte ich noch die stapelhöhe damit regulieren. Wenn der taster gedrückt gehalten wird leuchten die LEDs nicht mehr. Der Text in den buttons bleibt aber gleich – nur in LED 9 geht „das licht“ an und aus mit dem taster.
Ist es das was man mit dem heutigen sketch machen kann oder funtioniert abgesehen vom Poti auch anderes nicht?
Ich finde es nicht besonders gut, dass die Beschreibung der erwarteten effekte reichlich kümmerlich ist.
Hallo Bernd,
sowohl der Taster als auch der Poti ändern die beiden LED Anwendungen in Blynk und tun nicht mit deiner Hardware, die vor dir auf dem Tisch liegt.
Mit dem Taster geht schaltest du in Blynk die linke LED Anwendung (grüne virtuelle LED)durch drücken an und auch wieder aus. Die rechte LED Anwendug (blaue virtuelle LED)kann mit dem Poti von AUS (0 V) bis helles blau (5 V) stufenlos heller geregelt werden, sozusagen eine LED mit Dimmer. Das die LEDs an der Hardware nicht mehr funktionieren bei Tasterdruck teilweise durch den kürzeren und widerstandfreieren Weg ohne LED über den Taster geschuldet. Das ist halt die Physik, die bei so welchen Dingen immer mitspielt. Ein kleines Ester Ege was nicht wirklich gewollt ist.
Hoffe ich konnte helfen.
LG
bibikati
Na super. Da kommt man von nem Montageeinsatz aus Bayern zurück und freut sich auf sein IoT-Kalender und darf feststellen, dass man dank Schrott-Poti und schlechtem BreadBoard nichts machen kann :(
Morgen erstmal zum Conrad…
Ich hab etwas die lust und den Spaß verloren.
Ich erkenne den fehjer nicht, an den router komme ich auch nicht ran und das nanodongs kann maximal noch blinken.
Gestern, das analog… hat noch gut funktioniert. Heute , unverändert nichts, nicht mal die led kann ich schalten.
: error: internet connection. Ist das teil kaputt ?
Die tage zuvor hat die vebindung ins netz funktionier und ab heute nix mehr. Vielleicht frag ichconrad mal nach ersatz. Befriedigend ist das nicht.
Ps: ich kann leider erst sonntag weitermachen. Das werd ich dann wohl nicht mehr aufholen wenn,s kein ersatz gibt.
soweit läuft es. aber in anzeige im com kommt nach der erfolgreichen verbindung folgendes:
OK
[7668] Connected to WiFi
[12769] <msg 2,1,32
#token
[12871] msg 0,1,200
[12883] Ready (ping: 13ms).
[12887] <msg 20,2,8
und das setzt sich "unendlich" fort…
weiß einer was das bedeutet?
Das ist die Debug-Ausgabe. Da kannst Du die Kommunikation zum ESP sehen. Wenn Dich das nervt, dann kannst Du es abschalten, indem Du
#define BLYNK_DEBUG
mit
//#define BLYNK_DEBUG
rauskommentierst.
ah, vielen Dank für den Hinweis. Bei den anderen Programmen gab es diese Ausgabe nicht…
Heute hatte ich das erste Mal Schwierigkeiten, die Schaltung zum Laufen zu bringen. Am Ende lag es am Poti, nach Ersatz durch ein anderes funktioniert nun alles. Auch die LED kann in der Helligkeit verändert werden.
Bin weiter gespannt.
Mal eine generelle Frage, betreibt hier irgendjemand den NanoESP im WLAN Netz einer Unitymedia Connect Box?
Hintergrund:
Ich bekomme seit Tag 4 keine stabile Verbindung zwischen NanoESP und Router hin. Richtig aufgefallen ist es mir erst bei Blynk, das aufgrund der ständigen Verbindungsabbrüche einfach nicht richtig funktioniert. Also bin ich mal ganz zurück zu den Grundlagen und habe festgestellt, dass selbst die unterste Ebene (AT Kommandos) Probleme hat. AT+CWLAP beispielsweise findet mein Netz nur in ca einem von fünf Fällen, AT+CWJAP stellt zwar mal kurz eine Verbindung her, die bricht aber innerhalb von Sekunden wieder ab.
Heute hab ich den ganzen Aufbau mal bei einem Freund getestet, läuft reibungslos. Habe daraufhin seine Router Einstellungen komplett übernommen (alle die bei mir verfügbar sind, selbst SSID) nur um festzustellen, dass es bei mir trotzdem nicht funktioniert…
Das führt mich nun zu der begründeten Befürchtung, dass ein vernünftiger Betrieb an der Connect Box aufgrund irgendeiner Inkompatibilität nicht möglich ist (was auch immer Unitymedia sich da zusammen gebastelt hat).
Ich habe auch Unitymedia, aber mit einem Router von DLink. Ich bin von WPA2 auf WPA umgestiegen, weil bei mir die Verbindung zum WLAN auch instabil funktioniert hat. Seit WPA statt WPA2 funktioniert der nanoESP stabil.
Hi Uli,
ja das ist leider einer der störenden Aspekte an der Connect Box, ich habe nur die Wahl zwischen WPA2 und dem gemischten Modus, das hilft aber auch beides nicht. Zudem läuft die Fritzbox meines Freundes auch im reinen WPA2 Modus und da funktioniert es.
Habe aber einen anderen „Workaround“ gefunden und jetzt einfach meinen Raspberry Pi als Router konfiguriert, damit läuft alles!
Hat alles prima funktioniert.
Habe lediglich „#define BLYNK_DEBUG“ auskommentiert („//“) damit hier und da ein bissl Spam weg fällt und alles schick aus schaut ;)
Es läuft bisher richtig gut, bis auf den Poti…ist der bei euch auch an den „Beinen“ größer als auf den Schaltplänen zu sehen ist? Damit alles passt und die zwei oberen Beine in die Reihe „I“ passen, muss man diese schon arg verbiegen und locker waren diese auch schon von Anfang an -.-
hi
Naja, die Potiregelung von LED2 funktionierte kurz mal aber jetzt leuchtet sie konstant. Ansonsten ist alles wie erwartet.
hier funktioniert alles ohne Probleme, echt komisch, das es bei machen geht und bei einigen NICHT :-/
Habe bis jetzt alle Projekte hin bekommen….
Der Poti lässt sich nicht vernünftig regeln, gestern waren in dem Graph auch immer Sprünge drin, die virtuelle LED geht allerdings schön langsam AN und AUS.
hier funktioniert alles ohne Probleme, echt komisch, das es bei machen geht und bei einigen NICHT :-/
Habe bis jetzt alle Projekte hin bekommen….
Der Poti lässt sich nicht vernünftig regeln, gestern waren in dem Graph auch immer Sprünge drin, die virtuelle LED geht allerdings schön langsam AN und AUS.
@uli
Danke für antwort.
Name passwort und token sind korrekt. Kopiere ich und hat auch so bis tag 7 funktioniert. Nur heute geht nix auch das von gestern nicht. Ich versteh es nicht. Muss ich alles nochmal von vorn machen ?
Entferne mal den Button. Ich habe das Problem, wenn ich den Button drin habe, geht nichts. Entferne ich die Verbindung zu D7, bin ich imInternet und ich kann die LED an D9 einschalten etc. Auch D13 funktioniert, kaum aktiviere ich den Button wieder, bekomme ich in Blynk die Meldung, Arduino Nano wurde disconnected.
Und wie entferne ich bitte den button ?
Nach dem gestrigen Problem mit dem Trimmpoti hab ich mir heute ein neues besorgt. Das hat zwar keinen Drehgriff, geht aber mit ner passenden Schraubklinge.
Welchen Wert hatte das vorhandene Poti? Ich hatte 10 KO gemessen und mir ein ebensolches besorgt, aber die Regelung nach der gestrigen Schaltung zeigte, dass ich nur in einem Millimeterbruchteil von 270° regeln konnte, sodass es im Prinzip nur schaltet von ‚on‘ zu ‚off‘. Auch in der heutigen Schaltung wird die Helligkeit der rechten LED in der Blynk App nicht beeinflusst. Was läuft da falsch?
Thema Poti:
Hast Du beachtet, dass die 5V aus Tag6 ja auf die untere „Außenleitung“ vom Steckboard geführt war. Ab Tag 7 ist dieser Weg anders und diese „Außenleitung“ repräsentiert den sich verändernden Mittelwert des Potis.
ja klar: nicht mehr auf [5V], sondern auf [A0]. Aber gestern reagierte das Poti gar nicht, und heute quasi nur [on/off] ohne grossartige Regelung…
Kurze Erläuterung zu dem Fehler: „function() was not declared in this scope“, da das hier immer wieder auftaucht (function() ist hier nur Platzhalter):
Zunächst mal kann der Fehler behoben werden, indem man oben in der Datei einen Prototyp deklariert. Das sieht so aus:
void function();
Hat die Funktion einen anderen Rückgabewert als „void“ (bspw. int) muss das entsprechend zu
int function();
angepasst werden.
Außerdem müssen die Parameter mit angegeben werden, das heißt, wenn die Funktion ein Integer x nimmt (function(int x) {….}) ist der Prototyp (bei Rückgabewert int):
int function(int x);
Verwendet man vorgegebene Funktionen aus eingebundenen Libraries, so sind in diesen Libraries die Prototypen für die Funktionen enthalten und somit dem Compiler bekannt.
Die ganze Problematik in der Arduino IDE mit eigenen Funktionen entsteht dadurch, dass in der IDE nicht wirklich in „reinem“ C++ programmiert wird! Stattdessen wird vereinfachtes C++ programmiert und die IDE erzeugt daraus dann den richtigen C++ Code, der anschließend kompiliert wird. Teil der Aufgaben, die die IDE übernimmt, ist die automatische Generierung von Prototypen für die verwendeten Funktionen. Und genau dieser Prozess ist leider nicht 100% zuverlässig (zum Teil können Funktionen nicht richtig zugeordnet werden, zum Teil gibt es Konflikte mit vordefinierten Funktionen in eingebundenen Libraries) und dadurch entsteht der „not in scope“ Fehler.
Oh ha: Wehe man kommentiert heute Zeile 11 wirklich aus…dann wird nicht mehr erfolgreich kompiliert.
Unterschied des heutigen Sketches zu den letzten ist,
dass das BLYNK_DEBUG aktiv gesetzt ist
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
Du hast //#define BLYNK_PRINT Serial auskommentiert
Die Fehlermeldung sagt:
?:\Dokumente\Arduino\libraries\Blynk/Blynk/BlynkProtocol.h:268:48: error: ‚BLYNK_DBG_DUMP‘ was not declared in this scope
BLYNK_DBG_DUMP(„>“, inputBuffer, hdr.length);
dass die Variable BLYNK_DBG_DUMP nicht declariért ist. Der Fehler tritt in BlynkProtocol.h auf.
Sucht man in diesem File findet man
#ifdef BLYNK_DEBUG
BLYNK_DBG_DUMP(„<", buff+5, len2s-5);
#endif
heisst ist BLYNK_DEBUG declariert muss auch BLYNK_DBG_DUMP
declariert sein. Mögliche Include sind am Anfang
definiert, hier
#include
#include
#include
Schaut man sich die BlynkDebug.h an findet man
#ifdef BLYNK_PRINT
#if defined(ARDUINO) || defined(SPARK) || defined(PARTICLE)
#include
#include
#define BLYNK_DBG_DUMP(msg, addr, len) if (len) {…
d.h. BLYNK_DBG_DUMP wird nur definiert, wenn BLYNK_PRINT definiert wurde. Doch das haben wir mit
//#define BLYNK_PRINT Serial
verhindert. Lange Beschreibung, wenig Inhalt..
D.h. wenn Du BLYNK_PRINT nicht definierst muss du auch
BLYNK_DEBUG auskommentieren, dann läuft auch das Kompelieren.
immer wieder falle ich drauf rein, keine spitze Klammern in Kommentaren
Nachtrag zu den Includes
#include Blynk/BlynkDebug.h
#include Blynk/BlynkProtocolDefs.h
#include Blynk/BlynkApi.h
sorry…
Heute geht wieder garnichts. Vielleicht zu viel gelobt gestern. Bekomme heute die meldung : (1515) failed to disable echo.
Habe dann nochmal bis tag 4 nach gespielt, alles ok.
Danach immer das selbe und nanoesp ist nicht mehr im netzwerk. Dabei habeich alles wie zuvor getan.
Weis jemand bitte rat ? Der Spaßfaktor sinkt grad mächtig.
Komisch, woher die Fehlermeldung wohl kommt? Vielleicht liegt das an der Kommunikation zwischen dem Mega328 und dem ESP. Ich meine, die geht über
SoftwareSerial EspSerial(11, 12); // RX, TX
Stimmt da alles in Deinem Programm?
Soo viel wissen habe ich nicht. Bis tag 5 geht alles einwandfrei. Ich habe ausser den einstellungen für router, passwort und token nichts am programm getan. Gestern hatte das ja auch noch funktioniert und heute nicht. Das verwirrt mich sehr. Zumal ich ja nichts mit den fehlermeldungen anfangen kann. :(
Ps: im monitor erscheint die meldung für heute,
(0) blynk v0.3.4
(499) connecting to fritzbox
(10580) failed to connect wifi
(15639) <msg 20,1,8
(15639) cmd skipped
Und dann ist schluss
connecting to fritzbox
failed to connect wifi
Das heißt für mich, dass der nanoESP nicht in Dein WLAN kommt. Stimmen SSID und Passwort wirklich? Vielleicht hilft auch ein Reset des Routers. WPA2 ist schlecht. Ich habe meinen Router auf Gastzugang mit WPA umgestellt.
Hallo,
bei mir hat alles sehr gut Funktioniert, soweit so gut.
Nun aber habe ich mir die heutige Datei zur Sicherheit auf den Desktop kopiert um darin etwas herum zu Experimentieren.
Nun kommt leider jedesmal folgende Fehlermeldung sobald ich ein Projekt hochladen möchte egal welches. Ich hoffe ihr könnt mir helfen . Meiner Meinung nach findet er nur einen bestimmten Pfad nicht?
Arduino: 1.6.13 (Windows 10), Board: „Arduino Nano, ATmega328“
C:\Users\Philipp\AppData\Local\Temp\Temp1_A16_P08_Blynk4_VirtualLEDs.zip\A16_P08_Blynk4_VirtualLEDs\A16_P08_Blynk4_VirtualLEDs.ino:13:46: fatal error: BlynkSimpleShieldEsp8266_SoftSer.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.
Danke im Vorraus schonmal:)
Die IDE findet die Library nicht mehr. Kopiere Dein Experiment nicht auf den Desktop, sondern in ein neues Verzeichnis neben dem bisherigen.
Also neben A16_P08_Blynk4_VirtualLEDs legst Du ein A16_P08_Blynk4_VirtualLEDsTest an und kopierst den Inhalt von dem 1. Verzeichnis in das 2. Dann sollte es funktionieren.
Okay danke dann weiß ich es für das nächste mal.
Nun aber wie gesagt gehen alte Projekte von den letzten Tagen auch nicht mehr. Wo ich die IDE geöffnet habe hat er mir auch vorhin gesagt es sei ein Update der Library vorhanden, dies habe ich auch ausgeführt. Könnte es auch daran liegen?
Oh, ein Update… Irgendwo in den früheren Posts der vergangenen Tage stand, dass man die Library (glaube die ESP) von Hand installieren muss, weil in dem ZIP mehrere Librarys enthalten sind. Bestimmt ist durch den automatischen Update etwas verloren gegangen. Installiere doch nochmal die ESP(?) drüber. Vielleicht hilft das ja.
Tja, das dumme Update der Bibliothek. Habe ich auch ausgeführt – danach ging kein Sketch mehr!
Drüber kopieren hat auch nicht gereicht. Erst musste ich die Ordner (von Blynk) in der Bibliothek löschen und dann neu kopieren….
Dann klappt es
Ja genau!
Danke für deine/eure Tipps.
Ich habe mir die alte Blynk Library die hier verlinkt war bei Tag 5 nun herunter geladen und durch die neue ersetzt. Nun funktioniert alles wieder wie gehabt. In dem neuen Update gab es die Datei die von der IDE angemekkert wurde garnicht erst.
Hallo, heute gibt es wieder Probleme. Zuerst kam, wie schon am sechsten Tag, die Fehlermeldung: „exit status 1‚ checkPin‘ was not declared in this scope“. Die konnte ich beseitigen, indem ich unter #define BUTTON 7 gemäß dem Ratschlag von Marco die Zeile „void checkPin();“ eingefügt habe. Jetzt kommt aber eine neue Fehlermeldung: „exit status 1 expected initializer before ‚WidgetLED'“. Wer kann mir helfen?
Tja, so 100% kann ich das wegen dem sofort kaputt gegangenen Poti nicht testen und ich sehe auch nicht ein jetzt extra in die Stadt fahren zu müssen um mir ein Ersatzteil zu kaufen, aber sonst funktioniert’s. Allerdings schummele ich auch ein wenig und passe mein Programm und meine GUI immer nur passend an statt alles neu zu machen…
Hallo,
kleiner Tip: einen Poti gibt es in Tür 17 nochmal!
Hallo Sam B,
zunächst mal danke, hat zumindest dazu geführt, dass sich die Fehlermeldung zu:
A16_P08_Blynk4_VirtualLEDs:43: error: ‚checkPoti‘ was not declared in this scope
verändert hat ;-)
Vielleicht kann mir hierzu ja noch jemand helfen ?
Das mit dem nicht auskennen ist leider auch mein Problem. Nächstes Mal gibts wieder nen Adventskalender mit Schokolade.
Hallo Andy,
hast du am Code etwas verändert bzw. wenn ja, kannst du die Änderungen posten?
lg
Hallo Alex, nein habe nichts verändert.
Aber mit dem Tipp von Sam B. ist es nun durchgelaufen…
Ok, Glück gehabt:) probier dasselbe nochmal mit void checkPoti(); ich denke das sollte auch in diesem Fall helfen
Das liegt an den Vorwärts-Referenzen. Der Compiler liest die Source von oben nach unten durch. Wenn er auf einen Funktionsnamen trifft, den er nicht kennt, dann sagt er: „Hoppala, was ist denn das? Das kenne ich ja gar nicht“.
Mit dem „void checkPoti();“ ohne anschließenden Inhalt zwischen {} sage man ihm: „Weiter unten kommt da eine Funktion mit diesem Namen.“ Dadurch die Fehlermeldung.
Ich verwende die Android-IDE 1.6.13. Der ist eine Vorwärts-Referenz egal und sie denkt sich bei einem unbekannten Funktionsnamen: „Naja, nehme ich mal an, es ist eine Funktion, die weiter unten schon mit Inhalt gefüllt werden wird.“
Ich hoffe, die Erklärung war etwas nützlich für’s Verständnis.
Wieder was dazu glernt, danke für die Info :)
Prima, danke schön ist durchgelaufen… :-)
Hallo, vielleicht kann mir jemand am frühen Morgen behilflich sein ?
Bekomme folgende Fehlermeldung:
A16_P08_Blynk4_VirtualLEDs:42: error: ‚checkPin‘ was not declared in this scope
Dieselbe Fehlermeldung hatte ich bereits am sechsten Tag….
Recht herzlichen Dank !
Hallo, ich kenne mich da auch nicht so aus, aber schreib mal unter #define BUTTON 7 void checkPin(); vielleicht hilft das was ;)
In Zeile 47 vom Listing gibt es bereits die Funktion checkPin … eine doppelte Deklaration wäre unklug.
Hm, nö, das sollte gehen, dass ist doch die Trennung von Deklaration und Definition. Sollte eigentlich nicht nötig sein, bei mir geht’s ohne, aber erlaubt ist das in C++.