Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

Uno ja MP3 shieldi konfifail?

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    Uno ja MP3 shieldi konfifail?

    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
    Erilahendused.
    PS või mail.

    #2
    Vs: Uno ja MP3 shieldi konfifail?

    Esmalt postitatud W@ldur poolt Vaata postitust
    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.
    Restart on korraks pinge maha või ainult programm, nuppust.

    Tuleb kuidagi tuttav ette.
    Kas see kinnijooksmiseni aeg on konstantne?
    Kellega see serial juttu ajab? MP3?

    Mul kaob USB kuskil korra nädalas-kahes, juhuslikult.
    Loll mis loll.
    Paneks topelt toite, aku lisaks.

    Comment


      #3
      Vs: Uno ja MP3 shieldi konfifail?

      Restart on senini käinud mööda toidet, s.t pinge nulli, ja siis tuleb tagasi.
      Proovitud vähe aega, mingit kindlat rutiini pole olnud. Viitad mingi puhvri ummistusele? Ei näe sellist kohta ainult, kuhu ummistus võisk tekkida...
      Küllap serial MP3-kilbiga suhtleb, või s.t sinna juttu saadab. Teeb mingi jupi käsupeale valmis, kui selleks aeg on, ja saadab ära.

      Tegin praegu niipalju ümber, et formattisin kaardi, panin esmalt otse peale kolm pala, ja siis selle konfifaili, viimasena. Seal enne mudisin selle ära, et kohe ei hakkaks niisama mängima.
      Igaksjuhuks tegin selle copy-tsükli ka läbi, kuigi lugema jääb kaardilt.
      Ja hetkel toimib. Proovin jälgida, kas ja millal ja milletõttu anomaaliaid peaks esinema.
      Lisaks panin loop'i ka ühe 13. LEDi plõnnima, millis()'ega, ega veidigi debugida. Kui see võbeleb, ja muu ei käi, siis on kas serialiga jama või kilp ei vasta.
      Aga loodame, et sellega lahenes.
      Hoian näppu nupul
      Erilahendused.
      PS või mail.

      Comment


        #4
        Vs: Uno ja MP3 shieldi konfifail?

        Esmalt postitatud W@ldur poolt Vaata postitust
        Kui see võbeleb, ja muu ei käi, siis on kas serialiga jama või kilp ei vasta.

        Aga loodame, et sellega lahenes.
        Hoian näppu nupul
        Kahju, viga otsida on lõbus
        Lootsin et on keegi kellel on sarnased probleemid.
        Siis oleks soovitanud võtta takt alla, 1200, ja teha log fail
        kus kõik siia-sinna jutt kenasti kirjas.
        Ja siis oleks vast kuulnud sealt veel mõne kena nipi.

        Aga mine tea mis elu veel head toob.
        Las ta käib, kui käib.

        Comment


          #5
          Vs: Uno ja MP3 shieldi konfifail?

          Väga kahju ei tohi olla
          Päris-viga on teine tera, aga kui lihtsalt sammud 1-2-3 sassi ajada, siis on rohkem põrgu lahti kui viga süsteemis.
          Usun, et kui konff oli pekkis või olemata, siis lihtsalt MP3-kilp ei vastanud päringutele, ja ei muud võlu.
          Praegu, ptüi-ptüi-ptüi käib nagu uksekellavärk
          Erilahendused.
          PS või mail.

          Comment


            #6
            Vs: Uno ja MP3 shieldi konfifail?

            Mnjah, loota ju võis, et viga ei kordu, aga näed, ikka tuli ilmsiks taas.
            Oli vist päev või paar käinud nagu pidi.
            Millis()'tega loop'is olev vilkuv LED oli täna lõunaks kustunud ja nupuvajutustega muusikat ei mänginud. Kõik muud tuled põlesid, s.t süsteem oli toitega varustatud.
            Tegin toitele reseti, jälle töötab.

            Milles viga kahtlustada?
            Kui loop'i alguses on millis()'tega LEDi vilgutamine, ja see lõpuks ei põlenud, pidi kood kuskil järgmises punktis võssa jooksma.
            Serialiga suhtlus on praegu ju selles mõttes ühesuunaline, et Arduino ainult saadab käske välja, mida mp3-shield tegema peab.
            Seal on delay'd sees.
            Kui kilp ise hanguks, siis Arduino jooksutab ju koodi ikka edasi. Või suudab kilp juhtkoodi ka lämmatada?

            Arduino plaat ise on hetkel vuhvel. Samas, netis kobades pole kohanud, et kellelgi vuhvel streigiks. On kas kohe tulnuna mingi meh. viga, või annavad stabikad valesid pingeid, aga kui juba töötab, siis jääbki töötama.

            Jube nõme, üsna lihtne osa, aga ikka suudab hanguda.

            Kas on mingi nii lihtne äpu, mis jääb kahe silma vahele, või ongi prose-tasandil hangumine sissekirjutet?
            Hakka või arvama, et peaks LCD juurde panema ja logi pidama, näiteks viimast saadetud käsku ja millis()'t kuvama. Samas, mis see niiväga aitab, ikkagi ju ei tohiks kuskil kinni joosta.

            On keegi äkki serialiga mingeid anomaaliaid ise kohanud?
            Erilahendused.
            PS või mail.

            Comment


              #7
              Vs: Uno ja MP3 shieldi konfifail?

              Viga otsida on ju lõbus. Eriti kui viimaks kätte saad.

              Mul oli hooldada mitu kromatograafi ja seal oli ka RS side.
              Töötasid pikalt.

              PIC tundis ära kui ma käe ta juurde panin. Katsin maandatud foolioga - mõjus.

              Kui paneks selle Arduino lisaks võrgule veel ka aku toitele - saaks võrguhäireid maha.
              Ja pistaks kõik veel metallkarpi - saaks raadiohäiretest ka lahti.
              Kas nii midagi muutub?

              Ja siis võiks ju teha nii et ta räägiks väjappoole mida ta teeb.
              Pärast LOG failist paistab kus kinni jäi.

              On veel võimalus tõsta programm suurele PCle ja vaadata mis siis saab.

              Comment


                #8
                Vs: Uno ja MP3 shieldi konfifail?

                vabandan, et viitsi väga sügavale teemasse süübida, aga kas millis()'te nulli jooksmine mingi aja tagant ei või probleemi tekitada?

                Comment


                  #9
                  Vs: Uno ja MP3 shieldi konfifail?

                  Millis võib põhjustada, aga selle tulemusena tekib äärmisel juhul LEDi vilkumises väike ebakorrapärasus, seda ka vaid korraks, ja alles u. 50päeva pärast.
                  Millis() on ilusasti longina olemas, seega see ei tohiks kuidagi rolli mängida.

                  Väga isoleerimine ei tohiks ju ka vajalik olla, kõik datasiinid on plaatidel ja üsna olematu pikkusega.
                  Ma arvan.
                  Erilahendused.
                  PS või mail.

                  Comment


                    #10
                    Vs: Uno ja MP3 shieldi konfifail?

                    Esmalt postitatud W@ldur poolt Vaata postitust
                    Väga isoleerimine ei tohiks ju ka vajalik olla,
                    kõik datasiinid on plaatidel ja üsna olematu pikkusega.
                    Ma arvan.
                    Kõik on tehtud, kõik on parimas korras.
                    Ja ta oskab lolliks minna.
                    See on elektroonika.

                    Aga mida teeb protsessor siis kui ta enam midagi ei tee?
                    Kas takt jookseb?

                    Comment


                      #11
                      Vs: Uno ja MP3 shieldi konfifail?

                      Alguses mõtlesin, et küllab millis()'e kasutamine LEDi vilgutamisel annab aimu sellest, mis toimub, ja laias laastus andis ka.
                      Aga kui näiteks delay juures toppama jääb, siis vilgutamiseni ei jõua ka.
                      Kui aga vilgub, siis siiani on alati ka nupud toiminud.

                      Kuidas takti mõõta kõige mõnusamalt?
                      Erilahendused.
                      PS või mail.

                      Comment


                        #12
                        Vs: Uno ja MP3 shieldi konfifail?

                        Esmalt postitatud W@ldur poolt Vaata postitust
                        Kuidas takti mõõta kõige mõnusamalt?
                        Pole Arduinot nii lähedalt kiusanud aga kuskil peaks olema generaatori "väljundipool".
                        Kvarts ka olemas?
                        Paneks sinna optroni, kõrgeoomise sisendiga.
                        Väljundis oleks kaks LEDi - vastu pinget ja maad.
                        Kui käib, põleksid mõlemad natuke.
                        Või üks ei põleks.

                        Nii võiks ju saada teha?
                        Korraks vaataks ka ossiga.

                        Comment

                        Working...
                        X