Guten Tag,
ich möchte gerne eine 8x8 Led Matrix via Web steuern.
Ich verwende 1 x UNO und 1 X Ethernet Shield und 1 x Adafruit_8x8matrix.
Vom Prinzip habe ich es fast fertig.
So sieht mein Code bisher aus:
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
Adafruit_8x8matrix matrix = Adafruit_8x8matrix();
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0E, 0xFE, 0x92 };
byte ip[] = {
192,168,2,108 };
byte gateway[] = {
192,168,1, 1 };
byte subnet[] = {
255, 255, 0, 0 };
EthernetServer server(80); //server port
String readString;
void setup(){
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin(9600);
Serial.println("Arduino ist waitung for matrix data");
matrix.begin(0x70); // pass in the address
matrix.setBrightness(15); // 0 to 15
matrix.blinkRate(0);
}
void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
delay(1);
//stopping client
client.stop();
String matrix_daten = splitString(readString,'@',1);
//---------------------- aus dem String matrix_daten soll folgendes entstehen
static const uint8_t PROGMEM
smile_bmp[] =
{ B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100 };
//----------------------
matrix.clear();
matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON);
matrix.setBrightness(1);
matrix.writeDisplay();
//clearing string for next read
readString="";
}
}
}
}
}
String splitString(String s, char parser,int index){
String rs='\0';
int parserIndex = index;
int parserCnt=0;
int rFromIndex=0, rToIndex=-1;
while(index>=parserCnt){
rFromIndex = rToIndex+1;
rToIndex = s.indexOf(parser,rFromIndex);
if(index == parserCnt){
if(rToIndex == 0 || rToIndex == -1){
return '\0';
}
return s.substring(rFromIndex,rToIndex);
}
else{
parserCnt++;
}
}
return rs;
}
Nun sollen die Matrixdaten über ein URL übermittelt werden:
http://192.168.2.108/?@ B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100@
Diesen stehen auch schon in der Variable matrix_daten bereit.
Wie kann ich diese jetzt weiterverarbeiten, damit sie in dieser Zeile Verwendung finden:
matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON);
Über Hilfe freue ich mich
Grüße
Christoph