Marco's Affenbox Fork

//#define FIVEBUTTONS
#define DEBUG
#define DEBUG_2
//#define DEBUG_QUEUE
//#define PUSH_ON_OFF
#define STARTUP_SOUND
//#define SPEAKER_SWITCH
#define ROTARY_ENCODER
//#define ROTARY_SWITCH
//#define POWER_ON_LED
//#define FADING_LED //Experimentell, nur in Verbindung mit POWER_ON_LED

Hier an dieser Stelle kannst du „definieren“ was in deinem Code funktionieren soll.
// leitet im C++ einen Kommentar ein, also was danach kommt wird beim Überspielen einfach vom PC ignoriert.

Deshalb kann man // nutzen um sich und anderen Anmerkungen zu machen oder aber auch um mal schnell eine Codezeile nicht auszuführen.
Genutzt wird das ganze hier um dein Code an deine Wünsche/ Hardware anzupassen.

//#define Speakerswitch 

würde nun ohne Switch laufen,

#define speakerswitch 

hättest du die Funktion aktiviert.

@marco-117 möchte nun von dir wissen, welche Funktionen du nutzt, dann kann er seinen Code genau so definieren und deinen Fehler nachstellen

Danke schon mal für die Erklärung, das habe ich mir so weit auch schon gedacht aber mir ist nicht ganz klar an welchen Stellen ich das im Code anpassen müsste. Habe jetzt auch erst in der Arduino Software gesehen das es einen zweiten Tab namens Configuration.h gibt der schienbar alle Defines enthält? Es wird aber schon der gesamte Inhalt aller Tabs beim Hochladen übertragen oder?

Hier ist der entsprechende Inhalt:

///////// uncomment the below line to enable the function ////////////////

//#define AiO

/////!! NICHT ENTFERNEN!!/////
#if not defined AiO
#define VERSION_TONUINO 2.13
#else
#define VERSION_TONUINO 2.23
#endif
//////////////////////////////

//#define FIVEBUTTONS  //Die AiO verwendet Standardmäßig fünf Buttons, vier Analoge eingänge und einen separaten für Pause. Falls ANALOG_INPUT verwendet werden soll muss FIVEBUTTONS deaktiviert werden um einen analogen Eingang frei zu machen. 
#define DEBUG        //Erweiterte Debug Ausgaben in der Konsole

//#define PUSH_ON_OFF     //Ein Ausschalten des TonUINO //mit AiO nicht mehr nötig, da standardmäßig vorhanden
//#define SPEAKER_SWITCH  //mit AiO nicht mehr als externe Hardware nötig, da standardmäßig vorhanden
//#define POWER_ON_LED
//#define FADING_LED      //nur in Verbindung mit POWER_ON_LED
//#define ANALOG_INPUT    //Programmierbarer Analoger Eingang, setzt entsprechende Hardware vorraus
//#define IRREMOTE
//#define ROTARY_ENCODER    //

//////////////////////////////////////////////////////////////////////////

///////// conifguration of the input and output pins //////////////////////
#define buttonPause A0 //Default A0; Pocket A2
#define buttonUp A1 //Default A1; AiO A4; Pocket A0
#define buttonDown A2//Default A2; AiO A3; Pocket A1
#define busyPin 4

#define shutdownPin 7 //Default 7; AiO 7

#define openAnalogPin A7 //Default A7, muss ein unbelegeter, analoger Eingang sein

#ifdef FIVEBUTTONS
#define buttonFourPin A3 //Default A3; AiO A2
#define buttonFivePin A4 //Default A4; AiO A1
#endif

#define RST_PIN 9                 // Configurable, see typical pin layout above
#define SS_PIN 10                 // Configurable, see typical pin layout above

#if defined SPEAKER_SWITCH || defined AiO
#define SpeakerOnPin 8
#endif

#ifdef POWER_ON_LED
#define POWER_ON_LED_PIN 5
#endif

#ifdef ANALOG_INPUT
#define ANALOG_INPUT_PIN  A5
//#define ANALOG_INPUT_SUPPLY_PIN 6 //Nur verwenden, wenn es unbedingt nötig ist!Der Referenzpegel kann auch von einem IO Pin kommen.
#endif

#if defined IRREMOTE
#define IRREMOTE_PIN 6                    // pin used for the ir receiver
#endif

#ifdef ROTARY_ENCODER
#define ROTARY_ENCODER_PIN_A A3  
#define ROTARY_ENCODER_PIN_B A4  
#define ROTARY_ENCODER_PIN_SUPPLY 8 //Nur verwenden, wenn es unbedingt nötig ist! Die Versorgung des Rotary Encoder kann auch von einem IO Pin kommen-
#endif
//////////////////////////////////////////////////////////////////////////

////////// Button timings ////////////////////////////////////////////////
#define SHORT_PRESS 50
#define LONG_PRESS 750
#define LONGER_PRESS 1500 
#define LONGEST_PRESS 3000
//////////////////////////////////////////////////////////////////////////

////////// NFC Gain //////////////////////////////////////////////////////

//#define NFCgain_max   // Maximale Empfindlichkeit
#define NFCgain_avg   // Mittlere Empfindlichkeit
//#define NFCgain_min   // Minimale Empfindlichkeit
//////////////////////////////////////////////////////////////////////////

///////// conifguration of the rotary encoder ////////////////////////////
#ifdef ROTARY_ENCODER
#define ROTARY_ENCODER_STEPS 4
#endif
/////////////////////////////////////////////////////////////////////////

///////// conifguration of the rotary encoder ////////////////////////////
//Wenn das Protokoll der gewünschten Fernbedienung beaknnt ist, sollte NUR DAS ENTSPRECHENDE PROTOKOLL auskommentiert werden, um Speicher zu sparen.
//Falls alle Protokolle auskommentiert sind, werden auch alle Protokolle unterstüzt. !ACHUTNG! Hoher Speicherverbrauch bei Verwendung aller Protokolle !Achtung!
#ifdef IRREMOTE
//#define DECODE_DENON        // Includes Sharp
//#define DECODE_JVC
//#define DECODE_KASEIKYO
//#define DECODE_PANASONIC    // the same as DECODE_KASEIKYO
//#define DECODE_LG
#define DECODE_NEC          // Includes Apple and Onkyo
//#define DECODE_SAMSUNG
//#define DECODE_SONY
//#define DECODE_RC5
//#define DECODE_RC6

//#define DECODE_BOSEWAVE
//#define DECODE_LEGO_PF
//#define DECODE_MAGIQUEST
//#define DECODE_WHYNTER

//#define DECODE_HASH         // special decoder for all protocols
#endif
/////////////////////////////////////////////////////////////////////////
//#define ANALOG_INPUT_PRINT
//#define ROTARY_ENCODER_PRINT
//#define SHORTCUTS_PRINT
//#define QUEUE_PRINT  
//#define DFPLAYER_PRINT
//#define IRREMOTE_PRINT

//////////////////////////////////////////////////////////////////////////

Genau. Hier kann man auch die Pin-Nummer ändern, wenn man einen anderen Pin benutzen will. So sind die persönlichen Einstellungen alle übersichtlich beieinander.

Ja. Die Bibliotheken, die du heruntergeladen hast, werden ja auch mit übertragen, obwohl du nicht den gesamten Inhalt mit in die Tonuino.ino kopierst. Dafür sind die #include am Anfang.
https://github.com/marco-117/TonUINO/blob/develop-Version-BETA/Tonuino/Tonuino.ino#L64

Kamst du schon weiter oder hängt es noch?

Wir können das auch mal „persöhnlich“ durch gehen. Über Skype (oder Sonstiges).

Hall @marco-117,
Leider besteht das Problem weiter. Wenn du aus dem Monitor und den Defines nichts fehlerhaftes erkennen kannst freue ich mich natürlich sehr über weitere Hilfestellungen bei der fehlersuche, gerne auch via Skype.

Liebe Grüße.
Matis

Moin @marco-117,

mir ist gerade in der aktuellen Dev aufgefallen, dass du zwischen „Power_On_LED“ (in der Configuration und im Fading-Teil) und „poweronled“ (im Rest) wechselst.

Bemerkt hab ich das, weil ich mir dir analogWrite Zeile aus dem Fading-Bereich rauskopieren und damit das digitalWrite ersetzen wollte, um meine Status-LED dauerhaft zu dimmen. Ist das was massentaugliches? Mit einer Variable LED_max zwischen 1 und 255 in der Configuration könnte man das sicher auch in die Fading-Schleifen übernehmen.

Hallo @marco-117 ,

Danke für deinen Fork mit funktionierendem Rotary-Encoder. :star_struck:
Ich verwende auf der AIO deine aktuelle „TonUINO-develop-Version-BETA“.

Mir ist ein scheinbar komisches Verhalten aufgefallen:

Dass die AIO, wenn angeschaltet und keine Eingabe erfolgt sich nicht ausschaltet.

Mir ist aufgefallen, dass nach dem abgelaufenen Timer nicht standby active nicht im Seriellen Monitor kommt. Vermutlich wird setstandbyTimer() zu früh aufgerufen.

Mein Workaround, der scheinbar funktioniert ist, dass ich setstandbyTimer(); nach dem Abspielen des Begrüßungsounds einfüge:

  mp3.playMp3FolderTrack(264);
  waitForTrackToFinish();

  setstandbyTimer();

Wenn ich #define debug auskommentiere, dann geht das AIO nach dem Anschalten gleich wieder aus.

Für das Ausschalten setze ich den ShutdownPin low, mit #define debug, da das Herunterfahren mit shutDown() nicht funktionierte.

#if defined DEBUG
    Serial.println(F("standby active"));
    digitalWrite(shutdownPin, LOW);
#endif

Die AIO macht beim Einschalten dieses Fiepen,
hierfür habe ich die separate Abschaltung mit zwei MosFets,
Nur bekomme ich den Lautsprecher über freie Pins nicht angeschaltet.
Setze ich das Gate auf 5V geht der Lautsprecher nur will es nicht über die Pins funktionieren.

Könntest du mir hier bitte helfen?

Ich kann hier grobe Unwissenheit meinerseits nicht ausschließen.
Die Code-Beispiele habe ich ziemlich gefrustet leider gelöscht.

Gruß,

Steffen

Warum? Du kannst einfach den AMP erst später einschalten, dann hast du auch kein fiepen. D8 auf low ist AMP an, D8 auf high ist AMP aus.

Das wird auch im Fork gemacht und funktioniert auf meiner AiO.

Ich prüfe die Punkte.

Hallo,

ich habe ein größeres Update meiner BETA Version hoch geladen.
Das ist Neu:

  • Nutzung von PlatformIO (Arduino IDE nutzung weiterhin möglich)
  • Neues Layout mit Kommentaren, der Configuration.h
  • AceButton verwendng der analogen Eingänge.
  • Entfal des Anlernvorgangs der Analogen Eingänge im Admin Menü, sattdessen manuelle Konfiguration in der Configuration.h
  • Die TonUINO Button Platine ist Standardmäßig für die AnalogInput Funktion Konfiguriert.
    TonUINO Button Board 3×3 – Leiterkartenpiraten GmbH
1 „Gefällt mir“

Hi,

das Einschaltgeräusch konnte ich auch bei der AiO unterdrücken.
Ein kleines Delay hatte gefehlt.

Das Problem mit dem Timer ohne Eingebe konnte ich nicht nachvollziehen.

Du könntest probieren, deinen EEPROM zu löschen, indem du die drei Tasten Pause, Up & Down beim Einschalten gedrückt hälst.

Ich habe eben versucht die TonUINO-develop-Version-BETA zu compilieren doch bekomme immer ein Fehler weil die Variable „INTERNAL2V048“ nicht definiert ist. Habe diese auch sonst nicht im Quellcode gefunden.
TonUINO-develop-Version-BETA/Affenbox/Affenbox.ino:2293:19: error: 'INTERNAL2V048' was not declared in this scope
Der Aufruf erfolgt in Zeile 2293

// internal reference voltage 2,048V
analogReference(INTERNAL2V048);

Kann mir da eventuell jemand weiterhelfen?

Genaues kann dir sicher @marco-117 sagen, aber ich kann schonmal vorwegschicken: Die Konstante INTERNAL2V048 gibt es auf einem Arduino nicht. Diese Referenzspannung hat nur der LGT Chip auf der All-in-One Platine.

1 „Gefällt mir“

Danke Stephan, die Info hat vermutlich dann gefehlt. Ich möchte es für die AiO kompilieren :slight_smile:

Und du hast den LGT Core in der Arduino IDE installiert?

ich dachte man soll es über PlatformIO machen? Da tue ich mir gerade auch noch ein wenig schwer.
Ich kompiliere jetzt den LGT8F328P und bekomme da eine neue Fehlermeldung.

:0:0: note: this is the location of the previous definition
In file included from Affenbox\Affenbox.h:3:0,
from C:/Users/asd/Downloads/TonUINO-develop-Version-BETA/Affenbox/Affenbox.ino:2:
.pio\libdeps\LGT8F328P\DFPlayer Mini Mp3 by Makuna\src/DFMiniMp3.h: In instantiation of ‚uint16_t DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::listenForReply(uint8_t) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify; uint16_t = unsigned int; uint8_t = unsigned char]‘:
.pio\libdeps\LGT8F328P\DFPlayer Mini Mp3 by Makuna\src/DFMiniMp3.h:105:27: required from ‚void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::loop() [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]‘
C:/Users/asd/Downloads/TonUINO-develop-Version-BETA/Affenbox/Affenbox.ino:624:14: required from here
.pio\libdeps\LGT8F328P\DFPlayer Mini Mp3 by Makuna\src/DFMiniMp3.h:511:62: error: no matching function for call to ‚Mp3Notify::OnPlayFinished(DFMiniMp3<SoftwareSerial, Mp3Notify>&, DfMp3_PlaySources, uint16_t&)‘
T_NOTIFICATION_METHOD::OnPlayFinished(*this, DfMp3_PlaySources_Usb, replyArg);

Es sollte auch über die Arduino IDE gehen

Dir scheint in PlatformIO noch die DFPlayer Lib von Makuna zu fehlen.

1 „Gefällt mir“

Es lag an der Version vom DFPlayer Mini. 1.1 statt 1.0.7
jetzt hats geklappt :slight_smile:

1 „Gefällt mir“

@marco-117 bei mir pausiert es nicht wenn ich die Karte wegnehme. So wie ich es aus den anderen Beiträgen gelesen habe dachte ich das wäre das Default verhalten?
Muss dafür doch etwas konfiguriert werden?

Hast du da mal versucht das zu aktivieren?

1 „Gefällt mir“