Sketch opschonen

algemene C code
Berichten: 50
Geregistreerd: 12 Mrt 2016, 23:38

Re: Sketch opschonen

Berichtdoor Pexy » 25 Apr 2019, 08:52

shooter schreef:kijk op switch case.
dan hoef je niks te doen als alleen maar dus afhankelijk van een getal ga je naar een state toe.


Hallo shooter,
Ik heb een poging gedaan met switch case en ik vraag mij af, is dit correct geïmplementeerd?

cpp code
// Arduino IDE 1.8.5

/*
Copyright: DFRobot
name: DFPlayer_Mini_Mp3 sample code
Author: lisper <lisper.li@dfrobot.com>
Date: 2014-05-30
Description: connect DFPlayer Mini by SoftwareSerial, this code is test on Uno
Note: the mp3 files must put into mp3 folder in your tf card
*/
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySerial(10, 11); // RX, TX


// Include the required Wire library for I2C
#include <Wire.h>

int n = 0;


void setup () {
Serial.begin (9600);
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
mp3_set_volume (20);
delay(2000);
mp3_play (0); //Play the first mp3

// Start the I2C Bus as Slave on address 9
Wire.begin(9);
// Attach a function to trigger when something is received.
Wire.onReceive(receiveEvent);
}
void receiveEvent(int bytes) {
n = Wire.read(); // read one character from the I2C
}


//
void loop () {

switch (n)
{
case 1:
mp3_play (n);
break;

case 2:
mp3_play (n);
break;

case 3:
mp3_play (n);
break;

case 4:
mp3_play (n);
break;

case 5:
mp3_play (n);
break;

case 6:
mp3_play (n);
break;

case 7:
mp3_play (n);
break;

case 8:
mp3_play (n);
break;

default:
break;
}
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Sketch opschonen

Berichtdoor nicoverduin » 25 Apr 2019, 10:15

De switch case is op zich goed maar zinloos. Je kan net zo goed testen of n tussen de 0 en 8 ligt en dan een x mp3_play(n); doen
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Sketch opschonen

Berichtdoor shooter » 26 Apr 2019, 13:16

en ergens onthouden wat de laatste was, zodat je die niet nog een keer doet.
maar de switch ziet er goed uit.
paul deelen
shooter@home.nl

Berichten: 50
Geregistreerd: 12 Mrt 2016, 23:38

Re: Sketch opschonen

Berichtdoor Pexy » 05 Jun 2019, 11:50

Goedenmorgen forumleden,

Ik heb nog een aanvullende vraag over arrays.
In dit geval wil ik graag als variabel 'n' nummer 1 is bijvoorbeeld, random keuze tussen twee mp3 tracks af laten spelen, dus track 1 of 101.
Nu heb ik zelf een opzetje gemaakt maar vind dit teveel ruimte in beslag nemen.
Dus mijn vraag in de trant van sketch opschonen en arrays, is het mogelijk om nummer_1 t&m 8 die een array bevat, ook weer in een array te zetten?

Hieronder een voorbeeldje.
cpp code
// Arduino IDE 1.8.9

/*
Copyright: DFRobot
name: DFPlayer_Mini_Mp3 sample code
Author: lisper <lisper.li@dfrobot.com>
Date: 2014-05-30
Description: connect DFPlayer Mini by SoftwareSerial, this code is test on Uno
Note: the mp3 files must put into mp3 folder in your tf card
*/

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySerial(5, 4); // RX, TX

// Include the required Wire library for I2C
#include <Wire.h>

const int Nummer_1[] = {1, 101}; // mp3 track 1 and 101
const int Nummer_2[] = {2, 102};
const int Nummer_3[] = {3, 103};
const int Nummer_4[] = {4, 104};
const int Nummer_5[] = {5, 105};
const int Nummer_6[] = {6, 106};
const int Nummer_7[] = {7, 107};
const int Nummer_8[] = {8, 108};

volatile byte n = 0;
byte last_n = 0;

void setup () {
Serial.begin (9600);
mySerial.begin (9600);
randomSeed(analogRead(A0));
mp3_set_serial (mySerial); // set softwareSerial for DFPlayer-mini mp3 module
mp3_set_volume (30);

// Start the I2C Bus as Slave on address 9
Wire.begin(9);
// Attach a function to trigger when something is received.
Wire.onReceive(receiveEvent);
}
void receiveEvent(int bytes) {
n = Wire.read(); // read one character from the I2C
}



void loop ()
{
if ( n != 0 && n != last_n) // a new track to play ?
{
if (n == 1) {
mp3_play (Nummer_1[random(0, 2)]); // random mp3 track 1 or 101
}
if (n == 2) {
mp3_play (Nummer_2[random(0, 2)]);
}
if (n == 3) {
mp3_play (Nummer_3[random(0, 2)]);
}
if (n == 4) {
mp3_play (Nummer_4[random(0, 2)]);
}
if (n == 5) {
mp3_play (Nummer_5[random(0, 2)]);
}
if (n == 6) {
mp3_play (Nummer_6[random(0, 2)]);
}
if (n == 7) {
mp3_play (Nummer_7[random(0, 2)]);
}
if (n == 8) {
mp3_play (Nummer_8[random(0, 2)]);
}
last_n = n; // remember this track to ignore it
}
}

Berichten: 50
Geregistreerd: 12 Mrt 2016, 23:38

Re: Sketch opschonen

Berichtdoor Pexy » 08 Jun 2019, 10:22

De oplossing is om een tweedimensionale array te gebruiken.
Dank voor het meedenken.

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten