есть в форуме кто разбираеться в Arduino?
Добрый Вечер,
есть в форуме кто разбираеться в Arduino?
начал один проект и не могу не как законьчить,
планировал сделать Часы на базе LED MATRIX7219 + WemosD1mini и соединить их
с ioBroker через MQTT для показания разной информации.
все собрал, соединение есть и информация высвечиваеться а Часы/Время нет.
в сети много разных примеров но только Время+Погода итд. как минимум 10 штук
протестил не подходит. сам в Arduino мягко говоря слабо разбираюсь,
поэтому обращаюсь к вам за помощью поправить Sketch.
заранее благодарю.
выложите ваш скэтч, только в читабельной форме. может кто и поможет. здесь каждый первый - гуру именно в ардуино.
в грамоте бы вам поднатаскаться. слишком уж напрягает такое изобилие ошибок. если и в скэтче подобное - вряд ли кто станет время тратить. основную тяжесть проеат должен таки автор нести.
все собрал, соединение есть и информация высвечивается
ну тогда проблема, похоже только в коде.
А из этих примеров всё работает?
https://www.makerguides.com/max7219-led-dot-matrix-display...
Доброе утро,
вот один из вариантов,
(так выставлять можно?)
#include
#include
#include
#include
#include
#include
#define MQTT_USER "MQTTxxx"
#define MQTT_PASSWORD "VCxxx"
// Belegung
//DOT Matrix: ESP8266 NodeMCU:
//VCC 5V (VUSB)
//GND GND
//DIN D7 (GPIO13)
//CS D8 (GPIO15)
//CLK D5 (GPIO14)
int pinCS = 15;
int numberOfHorizontalDisplays = 4; //Anzahl der Module Horizontal
int numberOfVerticalDisplays = 1; //Anzahl der Module Vertikal
const byte buffer_size = 45;
char time_value[buffer_size];
const char* ssid = "LITExxx";
const char* password = "505xxx";
const char* mqtt_server = "192.168.xxx.xx";
int timeswitch = 1;
WiFiClient espClient;
PubSubClient client(espClient);
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
int wait = 70; // In milliseconds
int ScrollWait = 25; // Zeit in ms für Scroll Geschwindigkeit
int helligkeit = 5; // Helligkeit des DisplaysDefault Helligkeit 0 bis 15
int spacer = 1; // Länge eines Leerzeichens
int width = 5 + spacer; // Schriftgröße
String MatrixText = "";
int modus = 0; // Modus 0 = Marquee, 1 = static
void setup_wifi() {
delay(10);
// Wifi Verbindung
Serial.println();
Serial.print("Verbinde mit ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi verbunden :)");
Serial.println("IP Addresse: ");
Serial.println(WiFi.localIP());
}
void MQTTCallback(char* topic, byte* payload, unsigned int length) {
String PayloadString = "";
for (int i = 0; i < length; i++) { PayloadString = PayloadString + (char)payload; }
Serial.println("Eingehender Befehl");
Serial.println(topic);
Serial.println(PayloadString);
if(strcmp(topic, "LEDMatrix/text") == 0) {
Serial.println("Neuer Text wurde gesetzt");
timeswitch = 0;
modus = 0;
MatrixText = PayloadString;
}
if(strcmp(topic, "LEDMatrix/intensity") == 0) {
Serial.println("Neue Helligkeit wurde gesetzt");
helligkeit = PayloadString.toInt();
matrix.setIntensity(helligkeit);
}
if(strcmp(topic, "LEDMatrix/scrollwait") == 0) {
Serial.println("Neue Scrollgeschwindigkeit wurde gesetzt");
ScrollWait = PayloadString.toInt();
}
if(strcmp(topic, "LEDMatrix/time") == 0) {
Serial.println("Time aktiviert");
timeswitch = PayloadString.toInt();
}
if(strcmp(topic, "LEDMatrix/modus") == 0) {
Serial.println("set new Modus");
modus = PayloadString.toInt();
}
}
void reconnect() {
while (!client.connected()) {
// Client ID generieren
String clientId = "LEDMatrix-";
clientId += String(random(0xffff), HEX);
// Verbindung
if (client.connect(clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) {
Serial.println("Mit MQTT verbunden :)");
client.subscribe("LEDMatrix/text");
client.subscribe("LEDMatrix/intensity");
client.subscribe("LEDMatrix/scrollwait");
client.subscribe("LEDMatrix/time");
client.subscribe("LEDMatrix/modus");
}
else
{
Serial.print("Fehler, :(");
Serial.print(client.state());
Serial.println(" neuer Versuch in 2 Sekunden");
delay(5000);
}
}
}
void setup() {
//delay(1000);
matrix.setIntensity(helligkeit);
for (int matrixIndex=0 ; matrixIndex < numberOfHorizontalDisplays ; matrixIndex++ )
{
matrix.setRotation(matrixIndex, 1); //Erste DOT Matrix Drehen
}
Serial.begin(115200);
Serial.println("Starte LEDMatrix...");
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(MQTTCallback);
configTime(0 * 3600, 0, "pool.ntp.org", "time.nist.gov");
// See https://github.com/nayarsystems/posix_tz_db/blob/master/zo... for Timezone codes for your region
setenv("TZ", "CET-1CEST,M3.5.0/02,M10.5.0 / 3",1);
}
void printMatrix() {
switch (modus) {
case 0:
for ( int i = 0 ; i < width * MatrixText.length() + matrix.width() - 1 - spacer; i++ ) {
matrix.fillScreen(LOW);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; //Zentrieren des Textes Vertikal
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < MatrixText.length() ) {
matrix.drawChar(x, y, MatrixText[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
client.loop();
}
matrix.write();
delay(ScrollWait);
}
break;
case 1:
matrix.fillScreen(LOW);
int letter = 15;
int x = 128;
int y = (matrix.height() - 8) / 2; //Zentrieren des Textes Vertikal
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < MatrixText.length() ) {
matrix.drawChar(x, y, MatrixText[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
client.loop();
}
matrix.write();
delay(ScrollWait);
break;
}
}
String get_time(){
time_t now;
time(&now);
char time_output[buffer_size];
// See http://www.cplusplus.com/reference/ctime/strftime/ for strftime functions
// Desired format: ( Sun ,Jul 21 2019 ) ( AM 10:03:20 )
strftime(time_output, buffer_size, "%T", localtime(&now));
return String(time_output); // returns ( Sat 20-Apr-19) ( AM 12:31:45 )
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
delay(100);
if (timeswitch == 1) {
modus = 1;
MatrixText = get_time();
MatrixText.trim();
Serial.println(MatrixText);
MatrixText.substring(23,28).toCharArray(time_value, 20);
Serial.println("HH:MM");
Serial.println(time_value);
}
printMatrix();
}