Disclaimer:
Ich hoffe die Kategorie ist richtig gewählt? Fiel mir nicht leicht eine auszuwählen
Zudem: Ich bin Anfänger, ich kann nicht programmieren und stelle mir meist Code aus verschiedenen Tutorials zusammen. Hier komme ich aber nicht weiter
Ich möchte einen Adventskalender bauen und benötige 24 Buttons die 24 verschiedene mp3's auf dem MP3 TF 16p abspielen, die Musik soll nach Ende des Liedes nicht zum nächsten Lied springen.
Ich habe das Schieberegister 74HC165 gewählt um die Inputs zu erhöhen.
Dieses liest auch brav meine Buttons aus:
(Auszug Serieller Monitor, zZ erst ein Register eingebaut)
Button Position: 0
Button Value: 1
Button Position: 1
Button Value: 1
Button Position: 2
Button Value: 1
Button Position: 3
Button Value: 1
Button Position: 4
Button Value: 1
Button Position: 5
Button Value: 1
Button Position: 6
Button Value: 1
Button Position: 7
Button Value: 0
dataIn DEC: 127
dataIn BIN: 1111111
1111111
Es gelingt mir jedoch nicht, diese Signale in Befehle an das mp3-Modul umzuwandeln.
Am liebsten wäre mir so etwas wie:
if data == 11111111 { mp3_play(1);}
usw.
oder auch
if dataln DEC == 127 {mp3_play(1); }
usw.
Geht das irgendwie? Ich bin für jede Hilfe sehr sehr dankbar!!
Hier der Code, meine Fehlversuche habe ich gelöscht, die erspare ich euch
#include <DFMiniMp3.h>
#include <DfMp3Types.h>
#include <Mp3ChipBase.h>
#include <Mp3ChipIncongruousNoAck.h>
#include <Mp3ChipMH2024K16SS.h>
#include <Mp3ChipOriginal.h>
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
int ioSelect = 2;
int clockPulse = 3;
int dataOut = 4;
int LED = 5;
int j;
int value;
byte switchVar = 0;
void setup() {
pinMode(ioSelect, OUTPUT);
pinMode (clockPulse, OUTPUT);
pinMode (dataOut, INPUT);
pinMode (LED, OUTPUT);
Serial.begin(9600);
mp3_set_serial(Serial);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
// Nur ein zustätzliches Startsignal...
}
void loop() {
byte dataIn = 0;
digitalWrite(ioSelect, 0);
digitalWrite(clockPulse, 0);
digitalWrite(clockPulse, 1);
digitalWrite(ioSelect, 1);
for (j = 0; j < 8; j++) {
value = digitalRead(dataOut);
Serial.print("Button Position: ");
Serial.println(j);
Serial.print("Button Value: ");
Serial.println(value);
if (value) {
int a = (1 << j);
dataIn = dataIn | a;
}
digitalWrite(clockPulse, LOW);
digitalWrite(clockPulse, HIGH);
}
if (switchVar != dataIn)
{
switchVar = dataIn;
Serial.print("dataIn DEC: ");
Serial.print(dataIn, DEC);
Serial.println();
Serial.print("dataIn BIN: ");
Serial.print(dataIn, BIN);
Serial.println();
}
Serial.print(byte(dataIn), BIN);
delay(5000);
}