mein Name ist Martin aus Leonberg.
Ich habe folgendes Problem : Ich versuche seit 1 Woche den Nano + Bluetooth HC 05 + Neopixel Ring zum Laufen zu bekommen…
Also der Neopixel (12) geht mit dem Nano perfekt, da klappt alles. Nun möchte ich den Ring per HC 05 und Handy steuern… und das klappt nicht.
Der HC 05 ist RX - TX und TX -RX an Port 0 und 1 angeschlossen. Das koppeln mit dem Handy klappt auch… auch wenn ich dann die Farben auf der App ändern möchte BLINKT das RX auf dem Arduino…
aber nix passiert.
Hier mal den Code den ich benutze, um Hilfe wäre ich echt dankbar, bin mit meinem Latein am Ende
LG MARTIN
/*
Connect Bluetooth RX,TX to Arduino RX,TX
Requires NeoPixel Library
https://github.com/adafruit/Adafruit_NeoPixel
If you want to view via Serial Monitor and have your Arduino connect to BT module
simultaneously use Software Serial to open a second port.
include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX
*/
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(0, 1); // RX, TX
int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
// initialize serial:
Serial.begin(9600);
// mySerial.begin(9600);
}
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
// do it again:
int blue = Serial.parseInt();
// look for the newline. That's the end of your
// sentence:
// if (mySerial.read() == '\n') {
if (Serial.read() == '\n') {
// sends confirmation
Serial.println("received");
// constrain the values to 0 - 255
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
blue = constrain(blue, 0, 255);
// fill strip
colorSet(strip.Color(red, green, blue), 0);
// send some data back
mySerial.println("received:"+String(red)+","+String(green)+","+String(blue));
}
}
}
// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(wait);
}
Das hier habe ich auch probiert... hat auch nicht geklappt
Ich weis das man über die Arduino Software den Seriell Monitor benutzen kann... geht das irgendiwe das man dort sieht was der HC 05 sendet? also was für Daten er schickt?
Fasse den Code am besten in „Code-Tags“, damit er besser lesbar wird.
Wenn Du das tust, sieht Dein Code wie das hier aus.
Was mir beim schnellen Querlesen aufgefallen ist: Du verwendest die Pins 0 und 1 für SoftSerial. Vielleicht gibt es Probleme, weil die Pins 0 und 1 auch für die „ganz normale“ serielle Kommunikation benutzt werden. Probiere mal andere Pins.
Schön, dass Du das mit den Code-Tags gemacht hast. Beim Lesen macht das ganz schön was aus.
psyconotics:
Ja das dachte ich auch.... weil SoftwareSerial ja Software Ports sind... der Nano aber Hardware Pins hat... die 0 und 1...
Kann ich das irgenwie umgehen die SoftwareSerial zu nutzen und NUR die Hardware Pins nutzen????
Was Deine weiter gehenden Fragen angeht: Bis auf den Nano kenne ich keine der Komponenten, die Du verwendest. Ich fürchte, Du musst auf jemanden warten, der mehr Ahnung hat als ich (davon gibts viele :-). Falls mir noch etwas einfällt, bekommst Du auf jeden Fall Bescheid.
Ach was mir auch noch aufgefallen ist..... Wenn der Hc 05 an Pin 0 und 1 Angeschlossen ist, kann ich nichts auf den Nano Laden... dann kommen immer Fehler von Timeout... wenn ich dann Pin 0 und 1 entferne geht das Upload wieder.... soll das so sein?
psyconotics:
Ach was mir auch noch aufgefallen ist..... Wenn der Hc 05 an Pin 0 und 1 Angeschlossen ist, kann ich nichts auf den Nano Laden... dann kommen immer Fehler von Timeout... wenn ich dann Pin 0 und 1 entferne geht das Upload wieder.... soll das so sein?
Da dürfte eben das stören, was ich oben geschrieben habe. Wegen solcher Sachen gucke ich, dass ich die Pins 0 und 1 für nichts Anderes verwende.
Uh ... shit ... was ist das wieder spät ... böses Ührchen ...
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 7); // RX, TX
int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
// initialize serial:
Serial.begin(9600);
// mySerial.begin(9600);
}
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
// do it again:
int blue = Serial.parseInt();
// look for the newline. That's the end of your
// sentence:
// if (mySerial.read() == '\n') {
if (Serial.read() == '\n') {
// sends confirmation
Serial.println("received");
// constrain the values to 0 - 255
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
blue = constrain(blue, 0, 255);
// fill strip
colorSet(strip.Color(red, green, blue), 0);
// send some data back
mySerial.println("received:"+String(red)+","+String(green)+","+String(blue));
}
}
}
// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(wait);
}
ich habe es jetzt auf SERIAL 0,1 umgestellt… wenn ich die APP berühre blinkt RX wieder… aber denn dennoch passiert nix… der Ring leibt aus…
#include <Adafruit_NeoPixel.h>
int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
// initialize serial:
Serial.begin(9600);
// mySerial.begin(9600);
}
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
// do it again:
int blue = Serial.parseInt();
// look for the newline. That's the end of your
// sentence:
// if (mySerial.read() == '\n') {
if (Serial.read() == '\n') {
// sends confirmation
Serial.println("received");
// constrain the values to 0 - 255
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
blue = constrain(blue, 0, 255);
// fill strip
colorSet(strip.Color(red, green, blue), 0);
// send some data back
Serial.println("received:"+String(red)+","+String(green)+","+String(blue));
}
}
}
// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
delay(wait);
}
ruhig bleiben.
Ich vermute, dass der Fehler in der Art der Übertragung mit dem Bluetooth Teil liegt.
Bist du dir sicher, dass du sämtliche Übertragungs Parameter richtig eingestellt hast?
Also baud rate stop Bits und so weiter?
Als nächstes kommt die Frage, ob die App LF und CR richtig überträgt.
Du solltest es erstmal ohne Bluetooth Modul und mit dem seriellen Monitor der Arduino IDE versuchen.
Also, wenn ich mir das erste Bild in Post#1 anschaue, dann versucht der TO die 12 Neo-Pixel mit Strom vom Nano zu betreiben.
Dort würde ich mal zuerst ansetzen und eine geeignete Stromquelle für die Neo-Pixel verwenden.
Danach kann man die anderen Probleme angehen.
sth77:
Und bitte nicht die Antwort von Serenifly ignorieren. Du kommentierst das myserial.begun aus und verwendest oben im Code nur die Hardware-Serial…
Hi,
eben… ich habe sowohl Soft wie Hard probiert… beides gleiches Ergebniss… das RX blinkt aber nix passiert.