Hi I am using an Arduino Nano to make a programmable LED Matrix via bluetooth (HC05)
Wiring is good and upload is successful, but it does not seem to work.
When I try the neomatrix test via file>examples>NeoMatrix>matrixtest and upload it on the nano the neomatrix works.
there must be errors on the code? can anyone help me.
oh The code was made by [StefanL38] (Profile - StefanL38 - Arduino Forum)
on this post coding error of code downloaded from net for diy project - #8 by anon73444976
post #9.
#include <SoftwareSerial.h>
#include "Arduino.h"
#include <Wire.h>//Include libraries: SoftwareSerial & Wire
SoftwareSerial ESP_BT(0, 1); //Define PIN11 & PIN12 as RX and TX pins
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <EEPROM.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif
#define PIN 5
// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
// NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
// Position of the FIRST LED in the matrix; pick two, e.g.
// NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
// NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
// rows or in vertical columns, respectively; pick one or the other.
// NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
// in the same order, or alternate lines reverse direction; pick one.
// See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_GRBW Pixels are wired for GRBW bitstream (RGB+W NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// Example for NeoPixel Shield. In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino. When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order. The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
32, //Select LEDs of each row (15 in my case)
8, //Select amount of rows (7 in my case)
PIN,
NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT + //Define first data pin (right bottom corner is my first pin)
NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG, //Define the type of connection (in a zig zag connections and divided by rows not columns)
NEO_RGB + NEO_KHZ800);
int Red = 255, Green = 0, Blue = 0;
String text = "Easy Tech";
String RGB;
int pixelPerChar = 5, RGB_Completed = 0;
int Delay, Brightness;
const uint16_t colors[] = {matrix.Color(Green, Red, Blue)};
// matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };//matrix.Color(Red, Green, Blue),
void initdata() {
int Speed = EEPROM.read(0);
if (Speed == NULL || Speed == 0) {
Delay = 100;
}
else {
Delay = Speed;
}
int bright = EEPROM.read(5);
if (bright == NULL || bright == 0) {
Brightness = 40;
}
else {
Brightness = bright;
}
int r = EEPROM.read(10);
if (r == NULL) {
Red = 0;
}
else {
Red = r;
}
int g = EEPROM.read(15);
if (g == NULL) {
Green = 255;
}
else {
Green = g;
}
int b = EEPROM.read(20);
if (b == NULL) {
Blue = 0;
}
else {
Blue = b;
}
char data[100]; //Max 100 Bytes
int len = 0;
char k;
String Text = "";
k = EEPROM.read(50);
while (k != '\0' && len < 500) //Read until null character
{
k = EEPROM.read(50 + len);
data[len] = k;
Text += k;
len++;
}
data[len] = '\0';
if (Text == NULL) {
text = "EASY TECH";
}
else {
text = Text;
}
Serial.println(Speed);
Serial.println(Brightness);
Serial.println(Red);
Serial.println(Green);
Serial.println(Blue);
Serial.println(text);
}
void setup() {
Serial.begin(115200);
ESP_BT.begin(9600);
EEPROM.begin();
initdata();
// Serial.println("Start");
const uint16_t colors[] = {matrix.Color(Green, Red, Blue)};
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(Brightness);
matrix.setTextColor(colors[0]);
//matrix.setTextColor(matrix.Color(Green,Red,Blue));
}
int x = matrix.width();
int pass = 0;
void loop() {
while (ESP_BT.available()) {
char ReadChar = (char)ESP_BT.read();
Serial.println(ReadChar);
// Right parentheses ) indicates complet of the string
if (ReadChar == ')' || ReadChar == '}' || ReadChar == ']') {
if (ReadChar == ')' ) {
RGB_Completed = 1;
}
if (ReadChar == '}') {
RGB_Completed = 2;
}
if (ReadChar == ']') {
RGB_Completed = 3;
}
}
else {
RGB += ReadChar;
}
}
if (RGB_Completed != 0) {
if (RGB_Completed == 1) {
Light_RGB_LED();
RGB_Completed = 0;
}
if (RGB_Completed == 2) {
text = RGB;
int _size = text.length();
int i;
for (i = 0; i < _size; i++) {
EEPROM.write(50 + i, text.charAt(i));
Serial.println(text.charAt(i));
}
EEPROM.write(50 + _size, '\0'); //Add termination null character for String Data
RGB_Completed = 0;
RGB = "";
}
if (RGB_Completed == 3) {
int val = RGB.toInt();
if (val > 0 && val <= 100) {
if (val == 0) {
val = 1;
}
Delay = (100 - val) * 2.5;
//scroll(Delay);
EEPROM.write(0, Delay);
}
else {
val = val - 100;
matrix.setBrightness(val);
EEPROM.write(5, val);
}
RGB = "";
RGB_Completed = 0;
}
}
if (RGB_Completed == 0) {
//. Serial.println(RGB_Completed);
scroll();
}
}
void scroll() {
//Serial.println(text);
int maxDisplacement = text.length() * pixelPerChar + matrix.width();
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(text);
if (--x < -maxDisplacement) {
x = matrix.width();
if (++pass >= 1) {
pass = 0;
// matrix.setTextColor(colors[pass]);
matrix.setTextColor(matrix.Color(Green, Red, Blue));
// matrix.setTextColor(matrix.Color(Red,Green,Blue));
}
}
matrix.show();
delay(Delay);
}
void Light_RGB_LED() {
int SP1 = RGB.indexOf('.');
int SP2 = RGB.indexOf('.', SP1 + 1);
int SP3 = RGB.indexOf('.', SP2 + 1);
String R = RGB.substring(0, SP1);
String G = RGB.substring(SP1 + 1, SP2);
String B = RGB.substring(SP2 + 1, SP3);
Red = R.toInt(); Green = G.toInt(); Blue = B.toInt();
// Serial.println(R);
matrix.setTextColor(matrix.Color(Green, Red, Blue));
EEPROM.write(10, Red); EEPROM.write(15, Green); EEPROM.write(20, Blue);
RGB = "";
}
EASYTECH.ino (6.7 KB)Preformatted text