Hei!
Veits puntras ühe koodi,või tegelikult konfiga.
Arduino UNO plaat, sellel seljas MP3 shield, kaardipesas 2GB kaart. Hetkel kaardil kolm pala: 0001.mp3, 0002.mp3, 0003.mp3 ja üks kaust, kus paar asjasse mittepuutuvat tekstifaili.
"Kilp" on hardware serialis, progemiseks pean selle UNO seljast maha kiskuma. Pole hullu, sunnibki asju korralikumalt tegema.
Unot toidan USB porti kaudu 5V USB adapterist. S.t toide on viks ja viisakas.
Uno küljes on kaks kellanuppu ja ühte pinni tuleb signaal ühest digitaalse 5V väljundiga allikast. Ka korras.
Küsimus on tegelikult üleüldisem, kood on selgituseks, postituse lõpus.
Kood on selline:
int digitaloutput = 13; //vaba väljund
unsigned char cmd_buf[10];
unsigned char i;
void ArduinoMP3Shield_SendCMD(unsigned char *cmd_buf, unsigned len)
{
unsigned i;
for(i=0; i<len; i++){
Serial.write(cmd_buf[i]);
}
}
void setup(void)
{
/** wait until arduino mp3 shield get ready */
delay(3000);
pinMode(digitaloutput, OUTPUT);
pinMode(12,INPUT); //RF-A, garaaziuksed
pinMode(11,INPUT_PULLUP); //Uksekellanupp
pinMode(10,INPUT_PULLUP); //Väravakellanupp
pinMode(9, INPUT); //RF-B, vaba
Serial.begin(9600);
}
void loop(void)
{
int sensor12Val = digitalRead(12);
if (sensor12Val == HIGH) {
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x02; // Length
cmd_buf[2] = 0xA4; // Command SET MODE
cmd_buf[3] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 4);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x15; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA9; // Command SET MODE
cmd_buf[3] = 0x00; // set mode parim on 0x00
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x04; // Length
cmd_buf[2] = 0xA0; // Command For U Disk change this line to 0xA2
cmd_buf[3] = 0x00; // file number high byte
cmd_buf[4] = 0x01; // file number low byte LOO TEGELIK NUMBER
cmd_buf[5] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 6);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x16; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x19; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1C; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1F; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(3000);
}
else {}
/////////////////
/////////////////
/////////////////
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
/////////////////
Teise pala sarnaneülesehitus, nagu esimesel, aga foorumi tähemärgipiirang sundis seda kustutama
/////////////////
delay(3000);
}
}
}
}
else {}
/////////////////
/////////////////
/////////////////
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x02; // Length
cmd_buf[2] = 0xA4; // Command SET MODE
cmd_buf[3] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 4);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x11; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA9; // Command SET MODE
cmd_buf[3] = 0x00; // set mode parim on 0x00
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x04; // Length
cmd_buf[2] = 0xA0; // Command For U Disk change this line to 0xA2
cmd_buf[3] = 0x00; // file number high byte
cmd_buf[4] = 0x03; // file number low byte LOO TEGELIK NUMBER
cmd_buf[5] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 6);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x14; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x17; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x19; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1B; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(3000);
}
}
}
}
else {}
}
Kui jätta kõrvale, et surunupu debounce on tehtud 4x10ms tsüklitega ehk üsna robustselt, siis iga pala kolmest esitatakse valjenevalt, ja selleks ka iga voluumi jaoks on oma konfimine.
Ilusus ilususeks, jama on selles, et süsteem ei kipu viimase proovimise järgi kümmet järjestkkust tundi toimima. Lihtsalt ei vasta enam.
Päris täpselt ei tea, kas kiilub Arduino, või kilp selle peal, aga vajas restarti. Siis jälle käis.
Niisama laual kõik on korras: kindel nupp, kindel pala jne.
Siis hakkasin veidi tudeerima: mingit krdi iSound.mp3 tahab saada.
Sellel siin on ka pmst sama serialiga, ja justkui see konfifail juurde pandud, aga tundub, et ta kopeerib need flashile.
Kas peab tingimata kopima? Minul on need kolm pala alla mega suured kokku, fläshi on aga võtta 8, aga pole mul kahju neid kaardil hoida.
Kas võib anomaaliaid isoundi puudumises leida ja peaks selle juurde toppima, ja üldse tegema nii, et kaardi teen tühjaks, formatin ära, panen korraga peale vaid need kolm mp3 pala, ja siis viimasena kopin selle iSoundi, mis on pmst sama sisuga, kui sellel viimasel sellil? Ja rohkem faile ei panegi, üldse.
Kood ise ju ei paista mingit hävitvat toimet sisaldavat?
Krt üks uksekell ja see ka ei või toimida
Aitähh lõpunilugejatele
Veits puntras ühe koodi,või tegelikult konfiga.
Arduino UNO plaat, sellel seljas MP3 shield, kaardipesas 2GB kaart. Hetkel kaardil kolm pala: 0001.mp3, 0002.mp3, 0003.mp3 ja üks kaust, kus paar asjasse mittepuutuvat tekstifaili.
"Kilp" on hardware serialis, progemiseks pean selle UNO seljast maha kiskuma. Pole hullu, sunnibki asju korralikumalt tegema.
Unot toidan USB porti kaudu 5V USB adapterist. S.t toide on viks ja viisakas.
Uno küljes on kaks kellanuppu ja ühte pinni tuleb signaal ühest digitaalse 5V väljundiga allikast. Ka korras.
Küsimus on tegelikult üleüldisem, kood on selgituseks, postituse lõpus.
Kood on selline:
int digitaloutput = 13; //vaba väljund
unsigned char cmd_buf[10];
unsigned char i;
void ArduinoMP3Shield_SendCMD(unsigned char *cmd_buf, unsigned len)
{
unsigned i;
for(i=0; i<len; i++){
Serial.write(cmd_buf[i]);
}
}
void setup(void)
{
/** wait until arduino mp3 shield get ready */
delay(3000);
pinMode(digitaloutput, OUTPUT);
pinMode(12,INPUT); //RF-A, garaaziuksed
pinMode(11,INPUT_PULLUP); //Uksekellanupp
pinMode(10,INPUT_PULLUP); //Väravakellanupp
pinMode(9, INPUT); //RF-B, vaba
Serial.begin(9600);
}
void loop(void)
{
int sensor12Val = digitalRead(12);
if (sensor12Val == HIGH) {
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x02; // Length
cmd_buf[2] = 0xA4; // Command SET MODE
cmd_buf[3] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 4);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x15; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA9; // Command SET MODE
cmd_buf[3] = 0x00; // set mode parim on 0x00
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x04; // Length
cmd_buf[2] = 0xA0; // Command For U Disk change this line to 0xA2
cmd_buf[3] = 0x00; // file number high byte
cmd_buf[4] = 0x01; // file number low byte LOO TEGELIK NUMBER
cmd_buf[5] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 6);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x16; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x19; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1C; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1F; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(3000);
}
else {}
/////////////////
/////////////////
/////////////////
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
delay(10);
int sensor11Val = digitalRead(11);
if (sensor11Val == LOW) {
/////////////////
Teise pala sarnaneülesehitus, nagu esimesel, aga foorumi tähemärgipiirang sundis seda kustutama
/////////////////
delay(3000);
}
}
}
}
else {}
/////////////////
/////////////////
/////////////////
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
delay(10);
int sensor10Val = digitalRead(10);
if (sensor10Val == LOW) {
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x02; // Length
cmd_buf[2] = 0xA4; // Command SET MODE
cmd_buf[3] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 4);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x11; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA9; // Command SET MODE
cmd_buf[3] = 0x00; // set mode parim on 0x00
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x04; // Length
cmd_buf[2] = 0xA0; // Command For U Disk change this line to 0xA2
cmd_buf[3] = 0x00; // file number high byte
cmd_buf[4] = 0x03; // file number low byte LOO TEGELIK NUMBER
cmd_buf[5] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 6);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x14; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x17; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x19; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(700);
/////////////////
cmd_buf[0] = 0x7E; // START
cmd_buf[1] = 0x03; // Length
cmd_buf[2] = 0xA7; // Command
cmd_buf[3] = 0x1B; // new volume 5 või 0x0F
cmd_buf[4] = 0x7E; // END
ArduinoMP3Shield_SendCMD(cmd_buf, 5);
/////////////////
delay(3000);
}
}
}
}
else {}
}
Kui jätta kõrvale, et surunupu debounce on tehtud 4x10ms tsüklitega ehk üsna robustselt, siis iga pala kolmest esitatakse valjenevalt, ja selleks ka iga voluumi jaoks on oma konfimine.
Ilusus ilususeks, jama on selles, et süsteem ei kipu viimase proovimise järgi kümmet järjestkkust tundi toimima. Lihtsalt ei vasta enam.
Päris täpselt ei tea, kas kiilub Arduino, või kilp selle peal, aga vajas restarti. Siis jälle käis.
Niisama laual kõik on korras: kindel nupp, kindel pala jne.
Siis hakkasin veidi tudeerima: mingit krdi iSound.mp3 tahab saada.
Sellel siin on ka pmst sama serialiga, ja justkui see konfifail juurde pandud, aga tundub, et ta kopeerib need flashile.
Kas peab tingimata kopima? Minul on need kolm pala alla mega suured kokku, fläshi on aga võtta 8, aga pole mul kahju neid kaardil hoida.
Kas võib anomaaliaid isoundi puudumises leida ja peaks selle juurde toppima, ja üldse tegema nii, et kaardi teen tühjaks, formatin ära, panen korraga peale vaid need kolm mp3 pala, ja siis viimasena kopin selle iSoundi, mis on pmst sama sisuga, kui sellel viimasel sellil? Ja rohkem faile ei panegi, üldse.
Kood ise ju ei paista mingit hävitvat toimet sisaldavat?
Krt üks uksekell ja see ka ei või toimida
Aitähh lõpunilugejatele
Comment