beetje hulp voor een beginner (wacht voor input)

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 :frowning:

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!

blink without delay

Hoi adminsmithee, welkom.

Het advies dat shooter je gaf, is altijd wel juist, en als je goed kijkt zie je ook dat ik dat advies ook geef bij elk bericht dat ik plaats.

Je hebt verteld wat je wil.
Je hebt de code op juiste wijze geplaatst.

Maar je vertelt eigenlijk niets over het probleem dat je hebt.
"het werkt niet" of "ik krijg het niet voor elkaar" vertelt alleen dat er iets is dat jou niet lukt, maar niets over wat er fout gaat.
En "van alles geprobeerd" helpt ook niet erg veel in het krijgen van een inzicht in je vorderingen.

Vertel eens wat er wel werkt.
En wat niet.
En dus wat je dan al geprobeerd hebt, en of dat überhaupt een resultaat heeft gehad.

En probeer vooral niet alles wat fout gaat op 1 hoop te gooien en in 1 keer op te lossen, gaat je niet lukken.

Hallo Bedankt voor je uitgebreide reactie,

Mijn excuses hiervoor, zoals ik al zei ben ik redelijk nieuw hierin, dus juiste vragen stellen is ook al een kunst op zich :wink:
Ik zal de volgende keer wat contructiever proberen te zijn met mijn vraagstelling/ probleem omschrijving.

Ik ga nu eens ff flink stoeien met blink without delay.

thnx!