BERTL17 WS2812B Test
Dependencies: mbed WS2812 PixelArray
Revision 0:2536675f1748, committed 2019-03-29
- Comitter:
- EliasN
- Date:
- Fri Mar 29 09:33:07 2019 +0000
- Child:
- 1:c2876522bf56
- Commit message:
- Initial Commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PixelArray.lib Fri Mar 29 09:33:07 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/chris/code/PixelArray/#b45a70faaa83
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WS2812.lib Fri Mar 29 09:33:07 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/bridadan/code/WS2812/#6e647820f587
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Mar 29 09:33:07 2019 +0000
@@ -0,0 +1,88 @@
+#include "mbed.h"
+#include "stdlib.h"
+#include "string"
+#include "WS2812.h"
+#include "PixelArray.h"
+
+// Anzahl der LEDs
+#define WS2812_BUF 3
+
+// Serielle Verbindung mit PC herstellen
+Serial pc(USBTX, USBRX, 9600);
+// Buffer mit 3 Pixeln erstellen (vgl. Grafikspeicher einer Grafikkarte)
+PixelArray px(WS2812_BUF);
+// WS2812 Libraryobjekt erstellen, an P1_22 hängen die LEDs, die letzen 4 Ziffern sind das Timing
+WS2812 ws(P1_22, WS2812_BUF, 0, 5, 5, 0);
+
+// Lesen einer Farbe aus dem Buffer
+int getCol(int index) {
+ return px.getBuf()[index];
+}
+
+// Die Led an "index" auf "color" setzen, "color" im format 0xRRGGBB
+void setCol(int index, unsigned int color) {
+ // Farbe in den Buffer setzen
+ px.Set(index, color);
+ // Buffer an LEDs sendern
+ ws.write(px.getBuf());
+}
+
+// Wie setCol, nur wechselnd (ein wenn aus, aus wenn ein)
+void toggleCol(int index, unsigned int color) {
+ if (getCol(index) == 0) setCol(index, color);
+ else setCol(index, 0);
+}
+
+// String vom Serial Port lesen
+string readString(char * prompt) {
+ string str = "";
+ char readc;
+ pc.printf("%s> ", prompt);
+ while (true) {
+ readc = pc.getc(); // Einen Charakter lesen
+ if (readc == '\r' || readc == '\n') break; // Aufhöhren zu lesen bei Enter
+ pc.printf("%c", readc); // Rückgabe jedes Buchstabens
+ str += readc;
+ }
+ pc.printf("\n");
+ return str;
+}
+
+int main()
+{
+ pc.printf("Hello world!\n");
+
+ unsigned int col = 0xff0000; // Standardfarbe = rot
+ string s;
+ while (true) {
+ char c = pc.getc(); // Charakter lesen
+ pc.printf("-> %c\n", c);
+
+ switch (c) {
+ case '1': // Erste LED schalten
+ toggleCol(0, col);
+ break;
+ case '2': // Zweite LED schalten
+ toggleCol(1, col);
+ break;
+ case '3': // Dritte LED schalten
+ toggleCol(2, col);
+ break;
+ case 's': // Farbe ändern
+ s = readString("R"); // Rot einlesen
+ col = atoi(s.c_str()) * 256 * 256; // String in integer wandeln
+
+ s = readString("G"); // Grün einlesen
+ col += atoi(s.c_str()) * 256;
+
+ s = readString("B"); // Blau einlesen
+ col += atoi(s.c_str());
+
+ pc.printf("Success!\n");
+ break;
+ default:
+ pc.printf("Unbekannter Befehl!\n");
+ break;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Mar 29 09:33:07 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file