Hi,
einmal kurz ne Beschreibung was der Code machen soll:
Ich empfange via 433MHZ ein Signal.
Dieses wird in seine Bestandteile zerlegt (r,g,b).
Danach konvertiere ich den String in Integer, da er mir sonst nen Fehler auswirft.
Und als letztes sollen dann die 3 PWM Ausgänge mit den Werten geschaltet werde.
Es funktioniert auch alles super, wenn ich die analogWrite befehle weg lasse.
Sobald diese aber auftauchen funktioniert nix mehr.
Hat vielleicht jemand ne idee woran es liegt.
Hast Du mal probiert, nur eine der drei analogWrite-Zeilen im Code zu aktivieren und kannst es an einem bestimmten PWM-Pin festmachen, mit dem der Code nicht mehr funktioniert?
Warum überträgst Du per Funk mehr als die 5 Bytes ('A', '1' und die drei rgb-Bytes)?
Und warum verwendest Du überhaupt erst umständlich String-Objekte in Deinem Sketch, die sowohl zur AVR-Libc als auch zur VirtualWire-Library inkompatibel sind?
Habe es jetzt aber hinbekommen.
Es scheint wohl nicht zu reichen nur die Masse zu verbinden...
Wie würdest du es denn sonst übertragen wollen ?
Habe mich bisher noch nicht so viel mit dem Arduino beschäftigen können, daher bin ich froh wenn es überhaupt klappt.
Aber wie gesagt wenn du eine andere Idee hast, gerne her damit.
mys3lf:
Es scheint wohl nicht zu reichen nur die Masse zu verbinden...
Was auch immer das im Zusammenhang mit dem von Dir geschilderten Softwareproblem zu tun haben mag.
mys3lf:
Wie würdest du es denn sonst übertragen wollen ?
Erstmal würde ich ein Funkprotokoll kurz halten und keine Romane übertragen. Also wenn Du eine ASCII-Kennung aus zwei Bytes und drei 8-Bit RGB-Werte im Binärcode übertragen möchtest, wären das für mich fünf Bytes, die übertragen werden.
Du dagegen überträgst reinen ASCII-Code, quasi wie einen auf der Schreibmaschine getippten Text, was die Übertragung länger macht und es beim Empfänger unnötigt verkompliziert, aus dem "getippten Text" wieder Zahlenwerte zu machen.
mys3lf:
Habe mich bisher noch nicht so viel mit dem Arduino beschäftigen können, daher bin ich froh wenn es überhaupt klappt.
Aber wie gesagt wenn du eine andere Idee hast, gerne her damit.
Weiterhin würde ich auf die vier String-Objekte verzichten:
String receivedstring;
String r,b,g;
Diese vier Variablen brauchst Du nicht mal dann, wenn Du die Übertragung nicht auf die effektiv notwendigen Bytes verkürzt, sondern die RGB-Werte aus Deinem "getippten Text" wieder in Zahlen umwandeln möchtest. Standardfunktion zur Umwandlung von Text in Zahlen der AVR libc wäre 'atoi' (steht für "Array to Integer"): http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga3a1fe00c1327bbabc76688a7a1d73370