Game Frame mit NodeMCU V3

Hi Leute
Ich muss für die Schule ein Arduino Projekt machen. Dabei hab ich mich dazu entschieden denn Game Frame zu bauen. Ich dachte eigentlich dass ich das recht leicht umsetzen kann, allerdings tun sich mir jetzt doch noch ein paar Fragen auf. Weil ich nicht in der Lage bin das Programm dafür selbst zu schreiben will ich das originale Programm von github benutzen (GitHub - Jerware/GameFrameV2: Game Frame 2016 Revision for Teensy LC/3.x and Supporting IR Remote Control) . Bei dem original Game Frame steckt allerdings ein Teensy 3.x drin. Diesen würde ich gerne durch eine NodeMCU ersetzen weil ich da noch 3 rum liegen habe. Jetzt würde ich gerne wissen ob ich dann noch das original Program nutzen kann wen ich ein RTC und SPI Modul mit einbaue. Kann mir das bitte jemand sagen ? :slight_smile:

Hi

Schlechte Voraussetzungen, daß Du Das machen MUSST.
Der github-Link sagt mir zumindest nicht direkt, Was Du eigentlich bauen SOLLST.
Etwas mehr Erklärung würden hier zumindest mir helfen.

Meine RTCs werden per I²C angesprochen - wenn die Pins bei Dir noch frei sind, sollte Das kein Problem darstellen.
Bei SPI sieht's ähnlich aus - wenn ncoh frei, geht's wohl.
Wenn schon benutzt, ist's auch kein Beinbruch - dat eher den Vorteil, daß die Schnittstellen sogar genau hierfür benutzt werden.
Dann musst Du bei I²C schauen, daß die Adresse der RTC noch nicht vorkommt und für SPI brauchst Du noch einen SS-pin (Slave-Select) - hier muß darauf geachtet werden, daß immer nur EIN Slave angesprochen wird - sonst arbeiten hier die Ausgangsstufen der beteiligten Slaves (Deren MISO pins) gegeneinander - bis Einer stirbt.

MfG

Danke für die schnelle Antwort mit dem machen müssen hab ich mich schlecht ausgedrückt :slight_smile:
Ich hab schon länger vor so ein Ding zu bauen da kommt mir das Schul Projekt ganz gelegen.

Mit den Pins muss ich jetzt mal genau schauen wie das geht sollte aber glaub ich kein Problem sein. Meine Haupt Sorge wahr eher das die NodeMCU zu wenig Rechen power haben könnte oder einen zu kleinen Programm Speicher. Siehst du da ein Problem ? Ich kenn die Teensy boards überhaupt nicht und kann das deshalb nur schwer einschätzen :confused:

Hi

So weit bin ich noch nicht, lese hier auch nur interessiert mit, wenn's um die Käfer mit WLan und 'was weiß ich noch' geht.
Selber nur auf Nano, Uno und Mega unterwegs bin ich Dir hier wohl keine größere Hilfe.

MfG

Hallo,

ich bin ja sonst optimist, aber warum suchst Du Dir eine Aufagabe, die sehr wahrscheinlich einigen Aufwand erfordert, um das auf einen ESP8266 zu tragen? Ich habe mir jetzt keine komplett Projektbeschreibung gesucht, hast Du einen Link parat?

Gundsätzlich: es sollte machbar sein auf einem ESP8266. Es dürften einige Anpassungen und Änderungen nötig sein. Ich habe nicht geschaut, welche der Libs auf einem ESP8266 kritisch sein könnten. Entropy sagt mir nichts, IRremote muß die für den ESP8266 genommen werden, was IniFileLite macht müßte man dann schauen.
Der Rest könnte so gehen.

Es wird Deine Entscheidung sein, ob Du Dich da durchkämpfst oder einen passenden Teensy beschaffst.
Ein Teensy LC kostet ja auch nicht die Welt.

Gruß aus Berlin
Michael

Ne richtige Beschreibung hab ich leider auch nicht. Ich orientiere mich eigentlich auch nur an dem github Beitrag. Ich wollte es mal so probieren um Geld zu sparen :slight_smile: . Ich hab mich eh schon etwas verkalkuliert mit dem ganzen Projekt, ist mal wider teurer geworden als geplant :o (Wie eigentlich immer wen ich was machen will :slight_smile: ). Ich versuch mich jetzt mal durch zu kämpfen und hoffe dass ich es einigermaßen hin bekomme.So lerne ich wenigstens noch etwas mehr. Wen ich komplett am verzweifeln bin Kauf ich halt doch noch den Teensy.

Möglicherweise ist GameFrameV2_WiFi für Dich nützlich?

Hallo,

ich habe mir das zumindest bei Game Frame – LEDSEQ mal angeschaut. Den mechanischen Kram mal weggelassen (ist sowieso nicht mein Ding):
16x 16 WS2812 habe ich hier ist mit der FastLED Lib auch kein Problem am ESP8266. RTC auch nicht, obwohl ich dann vermutlich die weglassen würde und mir die Uhrzeit aus dem WLAN per NTP holen würde.
IRremote gibt es eine ESP8266 Version der Lib. SDcard usw. ist auch unkritisch.
Sollte also prinzipiell machbar sein. Was man dann darauf laufen läßt, ist ein anderes Problem.

Keine Ahnung, ob ich mir das mal anschaue, die Teile wären hier verfügbar, mit Zeit sieht es im Moment etwas dünner aus...
Du kannst ja anfangen, das mit dem ESP8266 zusammenzusuchen und eben fragen, wenn es klemmt.

Gruß aus Berlin
Michael

agmue:
Möglicherweise ist GameFrameV2_WiFi für Dich nützlich?

Das schaut interessant aus ich versuche mal den Code auf die NodeMCU zu bekommen.

amithlon:
Keine Ahnung, ob ich mir das mal anschaue, die Teile wären hier verfügbar, mit Zeit sieht es im Moment etwas dünner aus...
Du kannst ja anfangen, das mit dem ESP8266 zusammenzusuchen und eben fragen, wenn es klemmt.

Ich werde heute mal anfangen alles zu übertragen. Eine frage hab ich aber jetzt schon. Kann ich die IRremote überhaupt mit einbinden wen ich die WS2812B nutze? Im original wurden andere LEDs benutzt und ich hab jetzt schon mehrfach gelesen das ein gleichzeitiges betreiben von den LEDs und der IRremote Probleme macht.

Während der Datenübertragung zu den WS2812B ist der µC taub und empfängt keine IR-Signale. Das gilt für den UNO und die dafür vorhandenen Bibliotheken wegen des zeitkritischen Protokolls. Ob es für den ESP8266 wegen der deutlich höheren Taktrate bessere Lösungen gibt, vermag ich nicht zu sagen.

Hallo,

Moto20x:
Das schaut interessant aus ich versuche mal den Code auf die NodeMCU zu bekommen.
Ich werde heute mal anfangen alles zu übertragen. Eine frage hab ich aber jetzt schon. Kann ich die IRremote überhaupt mit einbinden wen ich die WS2812B nutze? Im original wurden andere LEDs benutzt und ich hab jetzt schon mehrfach gelesen das ein gleichzeitiges betreiben von den LEDs und der IRremote Probleme macht.

Ich wollte das mit der IRremoze eigentlich immer mal testen, habe es aber nicht... Es könnte gehen, die FastLED müßte in der aktuellen Version für die WS2812 eigenlich die I2S-Hardware für die Datenübertragung zu den LEDs. Hoffe ich zumindest, ich habe damals noch einen Fork der FastLED benutzt, wo jemand die I2S Ausgabe reingepacht hatte.
I2S dafür ist aber auf dem ESP8266 ohnehin Pflicht, sonst haben Anims bei WLAN-Nutzung Ruckler.

Gruß aus Berlin
Michael

Ich hab jetzt verzweifelt versucht den Code des GameFrame auf den esp zu bekommen,
leider komm ich überhaupt nicht voran und werde überschüttet mit Fehlermeldungen :frowning: .
Ich hab mich glaub ganz schön übernommen mit dem Projekt :confused: .

Es gibt allerdings einen licht blick. ich hab mich mal in dem Forum des GameFrame erkundigt und mir wurde ein link zu diesem Projekt geschickt LINK. Dazu gibt es auch noch einen Github Eintrag mit dem passenden Code für den esp.

Leider will das auch noch nicht so funktionieren wie ich gehofft habe. Ich hab jetzt die ganzen Dateien mit .h in meinen libraries Ordner gepackt. Danach wollte ich den LED-PIXELART-MATRIX Code auf meine NodeMCU flashen.

//external includes
#include <FastLED.h>
#include <Wire.h>
//#include <OneWire.h>
//#include <DallasTemperature.h>
#include "SD.h"
#include "SPI.h"

//other includes
#include "config.h"
#include "Matrix.h"
#include "animationHandler.h"

//instances
Matrix matrix;
AnimationHandler* anim;


//-------------------------------------------------------------------------

void setup() {
  pinMode(LS_PIN, INPUT);
  pinMode(LS_VCC, OUTPUT);
  pinMode(LS_GND, OUTPUT);
  pinMode(BUTTON_GND, OUTPUT);
  pinMode(BUTTON1_PIN, INPUT_PULLUP);
  pinMode(BUTTON2_PIN, INPUT_PULLUP);
  pinMode(BUTTON3_PIN, INPUT_PULLUP);
  digitalWrite(LS_VCC, HIGH);
  digitalWrite(LS_GND, LOW);
  digitalWrite(BUTTON_GND, LOW);
  delay(200);
  Serial.begin(115200);
  Wire.begin();
  anim = new AnimationHandler(matrix);
}

void loop() {
  anim->animate();
}

//-------------------------------------------------------------------------

Beim hochladen kommt aber immer folgender Fehler

(Ich poste den Fehler extra weil ich sonst über die 9000 Zeichen komme)

Was mach ich den falsch ?

Hier die Fehlermeldung (ich musste sie etwas einkürzen weil sie einfach zu lang ist :confused: )

Arduino: 1.8.9 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:2:0:

C:\Users\Max\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.003.002

 #    pragma message "FastLED version 3.003.002"

                     ^

In file included from C:\Users\Max\Documents\Arduino\libraries\FastLED/FastLED.h:65:0,

                 from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:2:

C:\Users\Max\Documents\Arduino\libraries\FastLED/fastspi.h:130:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output

 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"

                       ^

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:11:0:

C:\Users\Max\Documents\Arduino\libraries\Matrix/Matrix.h:10:15: error: 'MATRIX_WIDTH' was not declared in this scope

     CRGB leds[MATRIX_WIDTH * MATRIX_HEIGHT];

               ^

C:\Users\Max\Documents\Arduino\libraries\Matrix/Matrix.h:10:30: error: 'MATRIX_HEIGHT' was not declared in this scope

     CRGB leds[MATRIX_WIDTH * MATRIX_HEIGHT];

                              ^

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:11:0:

C:\Users\Max\Documents\Arduino\libraries\Matrix/Matrix.h:30:5: error: section attribute not allowed for 'errorImage'

     };

     ^

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:11:0:

C:\Users\Max\Documents\Arduino\libraries\Matrix/Matrix.h:11:20: error: 'MATRIX_ROTATION' was not declared in this scope

     int rotation = MATRIX_ROTATION;

                    ^

In file included from C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:5:0,

                 from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:12:

C:\Users\Max\Documents\Arduino\libraries\fonts/fonts.h:9:71: error: section attribute not allowed for 'n1'

     bool n1[15] PROGMEM = {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1};

                                                                       ^

C:\Users\Max\Documents\Arduino\libraries\fonts/fonts.h:10:71: error: section attribute not allowed for 'n2'

     bool n2[15] PROGMEM = {1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1};

                                                                       ^

                                                                                         ^

C:\Users\Max\Documents\Arduino\libraries\fonts/fonts.h:86:89: error: section attribute not allowed for 'n0'

     bool n0[21] PROGMEM = {1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1};

                                                                                         ^

C:\Users\Max\Documents\Arduino\libraries\fonts/fonts.h:87:89: error: section attribute not allowed for 'nc'

     bool nc[21] PROGMEM = {1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0};

                                                                                         ^

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:12:0:

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:62:29: error: 'ANIMATION_DURATION' was not declared in this scope

     int animationDuration = ANIMATION_DURATION;

                             ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In constructor 'AnimationHandler::AnimationHandler(Matrix&)':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:72:21: error: 'SD_PIN' was not declared in this scope

       if (!SD.begin(SD_PIN)) {

                     ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In member function 'byte AnimationHandler::drawAnimation()':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:148:11: error: 'DEBUG' was not declared in this scope

       if (DEBUG) Serial.println("Number of Frames:" + String(frames));

           ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:184:18: error: 'AUTO_CLOCK_DURATION' was not declared in this scope

             if  (AUTO_CLOCK_DURATION != 0) {

                  ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In member function 'int AnimationHandler::readFromConfig(String)':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:210:15: error: 'DEBUG' was not declared in this scope

           if (DEBUG) Serial.println(line);

               ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:213:15: error: 'DEBUG' was not declared in this scope

           if (DEBUG) Serial.println(line);

               ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:215:15: error: 'DEBUG' was not declared in this scope

           if (DEBUG) Serial.println(output);

               ^

In file included from C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino:12:0:

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In member function 'int AnimationHandler::readBMP(String)':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:245:11: error: 'DEBUG' was not declared in this scope

       if (DEBUG) {

           ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In member function 'void AnimationHandler::timemode(bool)':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:342:26: error: 'AUTO_CLOCK_DURATION' was not declared in this scope

         if (autocycle && AUTO_CLOCK_DURATION != 0) {

                          ^

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h: In function 'int countFrames(String, String)':

C:\Users\Max\Documents\Arduino\libraries\animationHandler/animationHandler.h:366:51: error: 'FILE_APPEND' was not declared in this scope

   File configfile = SD.open(path + "/config.ini", FILE_APPEND);

                                                   ^

C:\Users\Max\Desktop\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX-master\LED-PIXELART-MATRIX\LED-PIXELART-MATRIX.ino: In function 'void setup()':

LED-PIXELART-MATRIX:22:11: error: 'LS_PIN' was not declared in this scope

   pinMode(LS_PIN, INPUT);

           ^

LED-PIXELART-MATRIX:23:11: error: 'LS_VCC' was not declared in this scope

   pinMode(LS_VCC, OUTPUT);

           ^

LED-PIXELART-MATRIX:24:11: error: 'LS_GND' was not declared in this scope

   pinMode(LS_GND, OUTPUT);

           ^

LED-PIXELART-MATRIX:25:11: error: 'BUTTON_GND' was not declared in this scope

   pinMode(BUTTON_GND, OUTPUT);

           ^

LED-PIXELART-MATRIX:26:11: error: 'BUTTON1_PIN' was not declared in this scope

   pinMode(BUTTON1_PIN, INPUT_PULLUP);

           ^

LED-PIXELART-MATRIX:27:11: error: 'BUTTON2_PIN' was not declared in this scope

   pinMode(BUTTON2_PIN, INPUT_PULLUP);

           ^

LED-PIXELART-MATRIX:28:11: error: 'BUTTON3_PIN' was not declared in this scope

   pinMode(BUTTON3_PIN, INPUT_PULLUP);

           ^

Multiple libraries were found for "SD.h"
 Used: C:\Users\Max\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\libraries\SD
 Not used: C:\Users\Max\Documents\Arduino\libraries\SD
 Not used: C:\Program Files (x86)\Arduino\libraries\SD
exit status 1
'LS_PIN' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Hi

Die Matrix.h scheint nicht Die zu sein, Die Du brauchst.
Zumindest werden Dinge in dieser Datei angemeckert.
Z.B.:
C:\Users\Max\Documents\Arduino\libraries\Matrix/Matrix.h:10:15: error: 'MATRIX_WIDTH' was not declared in this scope

MATRIX_WIDTH gibt's schlicht nicht, somit klappt Das, was der Sketch machen will, mit dieser Lib nicht.

In den Fehlermeldungen sollte stehen, wenn mehrere dieser Dateien gefunden wurden - wie z.B., daß bei Dir drei SD.h gefunden werden und Welche davon benutzt wurde.

Da die 'Matrix.h' in "" steht - ist Diese IM Projekt-Ordner vorhanden?

MfG

Also ich hab im Projekt Ordner am Anfang die matrix.h aus dem github Beitrag eingefügt. Beim hochladen bekam ich dan aber den Fehler das er Matrix.h nicht finden konnte. Ich dachte das es nur ein schreib Fehler ist da im Code Matrix steht und die Datei matrix heist. Also hab ich den Ordner und die beiden Matrix Dateien zu Matrix mit großem M umbenannt dachte damit ist das Problem behoben. Scheint aber nicht so zu sein. Ich hab auch das Gefühl das er die config.h nicht läd in der werden nämlich die Pins definiert und in der Fehlermeldung sagt er ja immer das die alle nicht definiert sind.

Hi

Wenn die config.h NICHT GEFUNDEN wird, sollte Das eine Fehlermeldung geben.
Wenn Er 'irgendwo eine Andere' Datei statt Dessen findet, sollte Das aber ebenfalls in den Meldungen stehen.
Du hast die ausführlichen Meldungen bereits aktiviert? (Einstellungen in der IDE)

MfG

postmaster-ino:
Du hast die ausführlichen Meldungen bereits aktiviert? (Einstellungen in der IDE)

MfG

Bis jetzt noch nicht werde ich aber gleich mal machen. Das ich die .h Dateien einfach zu den anderen library’s gesteckt habe ist ja richtig oder ? Wie kann ich den die ausführliche Fehlermeldung hier im Forum posten ? Bei mir kommt immer die Meldung dass ich über 9000 Zeichen komme

Hi

Die Fehlrmeldung gerne in CODE-Tags <*> Symbol.
Die .h Files, Die per “” eingebunden werden, gehören in das Projekt-Verzeichnis.
Erst, wenn Sie Da nicht gefunden werden, wird global geschaut, ob’s Da nicht auch Was gibt.
So kann man z.B. eine Library für diesen Sketch umschreiben, ohne die eigentliche Lib dabei zu verwüsten.

Bei den Fehlermeldungen vll. den unwichtigen Kram raus werfen - wobei Du wohl Schwierigkeiten dabei haben könntest, diese Entscheidung zu treffen.

WARNUNG sind - Warnungen :wink:
ERROR sind die Dinge, Die ein Kompilieren verhindern.
Auch sollten die Warnungen/Errors von Oben nach Unten ausgemerzt werden, ein teil der Meldungen kann nämlich eine reine Folge-Meldung sein, weil eben z.B. vorne die passende Datei nicht eingebunden wurde.

mfG

Wenn an der .h auch noch eine .cpp dran hängt, gehört die dahin, wo die .h ist.
Sonst mault der Linker.

Gruß Tommy

Also bei der Matrix.h gabs auch noch ne .ccp die hab ich beide in einen Ordner gesteckt.
Leider kann ich heute nicht mehr weiter machen. Morgen setze ich das ganze mal neu auf irgendwas werd ich schon falsch gemacht haben :confused: . Hat von euch eventuell jemand ne NodeMCU rum liegen und kann mal testen ob er das Programm zum laufen bekommt? Ich bin mir zwar zu 99% sicher das in meinem Fall das Problem vor dem PC sitzt :slight_smile: , aber man weis ja nie eventuell ist ja auch ein Fehler im Programmcode.