Hallo,
Ik ben een arduino noob en probeer het een beetje te begrijpen, ik probeer nu een programma te schrijven voor een interactief schilderij.
functioneel zou het er zou uit moeten zien:
- start
- afspelen simpel led patroon (4 leds)
- als er op een van de 2 knoppen wordt gedrukt moet hij een geluid afspelen (aparte loops) en alle leds tegelijk aan gaan.
- daarna weer terug naar het led patroon
ik heb vanalles geprobeerd maar krijg het niet voor elkaar
mijn code dusver:
//** setup
//** include libraries
#include <SoftwareSerial.h>
#include "MP3FD.h"
//** define mp3 class to control the mp3 shield
MP3FD mp3;
// PINNUMMERS VOOR DE SENSOREN
#define LED1 2 // LED pins Koe
#define LED2 3 // LED pins Kip
#define LED3 4 // LED pins Schaap
#define LED4 5 // LED pins EEND
//#define LED5 6 // LED pins Fout
#define MP3A 7 // gereseveerd voor MP3 SHIELD
#define MP3B 8 // gereseveerd voor MP3 SHIELD
// PINNUMMERS VOOR DE BUTTONS
#define BTN1 9 // BUTTON 1 Koe
#define BTN2 10 // BUTTON 2 Kip
//#define PIR1 11 // BUTTON 3 Schaap
//#define BTN4 12 // BUTTON 4 EEND
//#define BTN5 13 // BUTTON 5 START
//** Samples that should be copied to the PSI-flash memory mp3 shield
// 0001_sound.mp3 sample 1 kort
// 0002_sound.mp3 sample 2 kort
// 0003_sound.mp3 sample 3 kort
// 0004_sound.mp3 sample 4 kort
// 0005_sound.mp3 sample 1 lang
// 0006_sound.mp3 sample 2 lang
// 0007_sound.mp3 sample 3 lang
// 0008_sound.mp3 sample 4 lang
// OPSLAGMEDIUM VOOR DE MP3 BESTANDEN (0001-0007)
#define USE_FLASH
// VOLUME NA OPSTARTEN
#define STARTVOLUME 15
// define variables
int workState = 0;
int song = 0;
int currentSong = 0;
int nrofSongs = 0;
int soundLevel = 0;
long userData = 0;
void setup()
{
// enable serial debugger
Serial.begin(9600);
Serial.println("DEBUGGER CHANNEL ENABLED");
// enable input pins
pinMode(LED1, OUTPUT); digitalWrite(LED1, LOW);
pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW);
pinMode(LED3, OUTPUT); digitalWrite(LED3, LOW);
pinMode(LED4, OUTPUT); digitalWrite(LED4, LOW);
//pinMode(LED5, OUTPUT); digitalWrite(LED5, LOW);
pinMode(BTN1, INPUT_PULLUP);
pinMode(BTN2, INPUT_PULLUP);
//pinMode(PIR1, INPUT_PULLUP);
//pinMode(BTN4, INPUT_PULLUP);
//pinMode(BTN5, INPUT_PULLUP);
randomSeed(analogRead(0));
//** begin function
Serial.println("STARTING UP MP3 PLAYER");
mp3.begin(MP3FD_SOFTWARE_SERIAL); // select software serial
//** stop playing audio
mp3.stop();
//** set MP3 Shield mode, Use SINGLE, REPEAT, CYCLE or RANDOM as parameter
mp3.set_mode(MP3FD::SINGLE);
//** set volume, MIN = 0x00, MAX = 0x1F (=31)
mp3.volume(STARTVOLUME);
userData = mp3.check_user_defined_data();
Serial.print("User data = 0x");
Serial.println(userData, HEX);
workState = mp3.check_work_state();
Serial.print("MP3 player workstate = ");
Serial.println(workState);
soundLevel = mp3.check_volume();
Serial.print("MP3 soundlevel = ");
Serial.println(soundLevel);
#ifdef USE_FLASH
int nrofSongsSPI = mp3.check_nrof_spi_files();
Serial.print("Nr of audio files on SPI FLASH = ");
Serial.println(nrofSongsSPI);
#else
int nrofSongsSPI = 0;
#endif
//** use mp3 files on SPI FLASH
nrofSongs = nrofSongsSPI;
Serial.println("MP3 PLAYER READY FOR USE");
} // setup
void loop() {
Serial.println(BIN);
//int random; //setup random
//int wait = 90;
Serial.print("Idle Loop");
while (digitalRead(BTN1== HIGH && BTN2== HIGH)); {
int time(150);
digitalWrite(LED1, HIGH);
delay (time);
digitalWrite(LED4, LOW);
delay (time);
digitalWrite(LED2, HIGH);
delay (time);
digitalWrite(LED1, LOW);
delay (time);
digitalWrite(LED3, HIGH);
delay (time);
digitalWrite(LED2, LOW);
delay (time);
digitalWrite(LED4, HIGH);
delay (time);
digitalWrite(LED3, LOW);
delay (time);
}
if (digitalRead(BTN1) == LOW){
Serial.print("Kort programma ");
delay (100);
kort();}
if (digitalRead(BTN2) == LOW){
Serial.print("Lang programma");
delay (100);
lang();}
}
void kort() {
//int random
//random = random(1,5);
digitalWrite(LED1, HIGH);
delay (200);
digitalWrite(LED2, HIGH);
delay (200);
digitalWrite(LED3, HIGH);
delay (200);
digitalWrite(LED4, HIGH);
delay (200);
Serial.print("*** Kort *** ");
digitalWrite (LED1, HIGH);
mp3.play_spi_flash(0001); //** play music in SPI FLASH
delay(3000);
digitalWrite(LED4, LOW);
delay (200);
digitalWrite(LED3, LOW);
delay (200);
digitalWrite(LED2, LOW);
delay (200);
digitalWrite(LED1, LOW);
}
void lang() {
//int random
//random = random(1,5);
digitalWrite(LED1, HIGH);
delay (200);
digitalWrite(LED2, HIGH);
delay (200);
digitalWrite(LED3, HIGH);
delay (200);
digitalWrite(LED4, HIGH);
delay (200);
Serial.print("*** LANG *** ");
digitalWrite (LED1, HIGH);
mp3.play_spi_flash(0002); //** play music in SPI FLASH
delay(6000);
digitalWrite(LED4, LOW);
delay (200);
digitalWrite(LED3, LOW);
delay (200);
digitalWrite(LED2, LOW);
delay (200);
digitalWrite(LED1, LOW);
}
Alvast Bedankt!