ich habe mit meinem Arduino UNO und der RGB-Matrix samt Colorduino eine kleine Lampe gebaut. Diese lässt sich auch schon
brav steuern. Momentan nehme ich nur die Buchstaben r,g,b und x (für aus) um die Lampe per Seriellem Monitor zu steuern.
Jetzt kommts: Natürlich möchte ich das nun per Bluetooth. Dazu habe ich ein BT Shield 2.2 (von ITEAD) dazwischen gesetzt
und versuche nun über eine Android-App Daten zu senden. Die App sendet alles ordnungsgemäß (mit seriellem Monitor am Rechner
getestet), nur der Arduinoklotz will nicht. Sende ich über den angeschlossenen PC läufts problemlos
Hat hier jemand Erfahrungen wie ich weiter kommen könnte? Oder paar Tipps wie man die am Arduino ankommenden Daten gut/besser
überwacht/debuggen kann?
An welche Brücken am UART Multiplexer des BT Shield 2.2 (von ITEAD) hast Du gesetzt (welche pins verwendest Du für die serielle Übertragung der Daten zwischen BT und Arduino?
Gibst Du uns bitte den Sketch?
Grüße Uwe
Huch das ging aber fix. Hatte gar nicht so schnell mit Feedback gerechnet.
Hier der Sketch:
#include <Colorduino.h>
/********************************************************
Name: ColorFill
Function: Fill the frame with a color
Parameter:R: the value of RED. Range:RED 0~255
G: the value of GREEN. Range:RED 0~255
B: the value of BLUE. Range:RED 0~255
********************************************************/
void ColorFill(unsigned char R,unsigned char G,unsigned char B)
{
PixelRGB *p = Colorduino.GetPixel(0,0);
for (unsigned char y=0;y<ColorduinoScreenWidth;y++) {
for(unsigned char x=0;x<ColorduinoScreenHeight;x++) {
p->r = R;
p->g = G;
p->b = B;
p++;
}
}
Colorduino.FlipPage();
}
String inData;
void setup()
{
Serial.begin(57600);
Serial.println("los gehts");
Colorduino.Init();
// compensate for relative intensity differences in R/G/B brightness
// array of 6-bit base values for RGB (0~63)
// whiteBalVal[0]=red
// whiteBalVal[1]=green
// whiteBalVal[2]=blue
unsigned char whiteBalVal[3] = {36,63,63}; // for LEDSEE 6x6cm round matrix
Colorduino.SetWhiteBal(whiteBalVal);
}
void loop(){
inData="";
if (Serial.available() > 0) {
int h=Serial.available();
// if you are getting escape -characters try h--; here
for (int i=0;i<h;i++){
inData += (char)Serial.read();
}
// if you are getting escape -characters try Serial.read(); here
}
//print it out
if(inData != "") {
Serial.println("inData: " + inData);
if(inData == "r")
ColorFill(255,0,0);
else if(inData == "g")
ColorFill(0, 255,0);
else if(inData == "b")
ColorFill(0, 0, 255);
else if(inData == "w")
ColorFill(255, 255, 255);
else if(inData == "x")
ColorFill(0, 0, 0);
}
}
Zum BT Shield - hier habe ich glaub ich schon jede Möglichkeit ausprobiert die es gibt...
Im Moment ist folgendes eingestellt - DAT <- CMD
TX 0 0 1 0 0 0
D0 0 0 1 0 1 0
RX 0 0 0 0 1 0
Wie gesagt, über PC, Serieller Monitor reagierts sofort. Bei "r" wirds rot etc.
Und bei der Android-App gibts auch keine Probleme mit der Verbindung oder Rückmeldungen auf
Probleme
Wenn ich den UART Multiplexer richtig interpretiere hast Du
TX auf Pin 2 und RX auf pin 4 gesetzt. (oder ist es TX auf Pin 3 und RX auf Pin 1?)
Du verwendest im Sketch aber keine Software emulierte serielle Schnittselle sondern liest von der Hardwareschnittstelle (Pin 0).
ich hab jetzt noch die unschönheit das die übermittelten strings zerhackt ankommen.
aber das ist doch sicher nur eine frage der korrekten baud-einstellung (oder?).
bis hier hin hast du mir aber schon super helfen können. vielen dank.