Close

JardaL

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 361. až 390. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: aktualizování firmwaru přes uart #11223
    Vojtěch Vosáhlo
    Účastník

    Oprava je na tomto linku. Stačilo jen pozměnit delay při posílání charakterů na 10us, viz. řádek 349.

    odpověď na: aktualizování firmwaru přes uart #11217
    michal123
    Účastník

    Ještě jedna drobnost, proč mi to nejde když tak dám hex od blink z arduina?

    odpověď na: CODE block na jeden radek #11209
    ferdo1
    Účastník

    Mne to robí tiež, ako neprihlásený, kód je v jednom riadku. Po prihlásení už je to ok.

    odpověď na: aktualizování firmwaru přes uart #11205
    Vojtěch Vosáhlo
    Účastník

    Tak bylo tam hned několik problémů. Zaprvé problém s konverzí toho ascii na hex a pak i se samotným zápisem v poli + pár smyček atd.
    Nebudu vysvětlovat vše co jsem změnil ale jen to co potřebujete vědět. Nejdůležitější je asi konverze kterou jste prováděl, v poli jste měl sice zapsané byty tak jak by měly být ale pak jste posílal prakticky jen polovinu. Příklad:
    Měl jste v poli byte 0x0C který by měl být v tomto tvaru odeslán do arduina ale vy jste ho posílal jako 2 byty, 0x00 a 0x0C, takhle tomu bylo u každého z nich.

    Upravil jsem tedy kód tak, aby jste do pole mohl zapsat jednu stránku, tzn 128B, ve vašem případě !!!256!!! charakterů, 256 kvůli tomu že jeden byte je reprezentován dvěma charaktery. Pokud budete tedy kopírovat data z intel hex souboru, odpovídá 256 charakterů přesně 8mi řádkům (pokud se odstraní :10 0000 00 ze začátků a poslední hex číslo což je checksum).

    Opět dávám odkaz na pastebin, ten kód co tam je je PLNĚ funkční a uploadne na arduino program který bliká led na pinu 13 jednou za 100ms. Zkuste si sám jestli vám poběží.

    Hezký zbytek dne.

    posjirka
    Účastník

    ok to chápu, ale o jaké vzdálenosti se bavime?

    Kubinna
    Účastník

    Postup bude následující:
    Uživatel umístí auto ke zdi a nastaví vzdálenost, kterou má vozítko udržovat od zdi (vzdálenost vozítka ke zdi). Auto zjistí jak daleko je od zdi a snaží se co nejrychleji dostat na danou vzdálenost a udržovat ji (i přes nerovnost stěny).
    Pro rychlost používám PWM, ve výše zmíněném kódě (PD regulátor) používám základní rychlost 100, pokud auto udržuje správnou vzdálenost. V případě špatné vzdálenosti je použito až 150.

    odpověď na: aktualizování firmwaru přes uart #11199
    michal123
    Účastník

    Mělo by to do druhého procesoru přes piny A2 A3 sw serial nahrát hex z proměné str.
    vypadá to, že procesor naváže synchronizaci, něco i do druhého naprgramuje ale druhý procesor po naprogramování a restartování nic nedělá.
    (doufám, že to takto stačí)

    odpověď na: aktualizování firmwaru přes uart #11198
    Vojtěch Vosáhlo
    Účastník

    Zkuste trošku přiblížit co to má dělat, pak na to můžu kouknout. Jak nebliká, jako sériová komunikace?

    odpověď na: aktualizování firmwaru přes uart #11197
    michal123
    Účastník

    Děkuji, mám další problém.
    Nejspíš jsem ze zamotal kolem 336 řádku, zdá se, že proces již proběhne celý ale někde v tatech musí bých chyba protože arduino pořád nebliká.

    odpověď na: aktualizování firmwaru přes uart #11196
    Vojtěch Vosáhlo
    Účastník

    No na začátku jste arduinu řekl že chcete proměnnou uložit do flash, teď mu tedy musíte říct že chcete číst z flash. Aby kód fungoval, musí vypadat takto:

     
    const  uint8_t strr[4][50] PROGMEM = {//tohle je pro ukazku, dale se bude nacitat postupne coz uz ale nebude problem
      "0123456789ABCDEF",
      "230000000000000000000000000000",
      "600000000000000000000000000000",
      "800000000000000000000000000000"
     
    };
     
    void setup() {
      Serial.begin(115200);
      Serial.println(strr[0][1]);
      Serial.println(strr[0][13]);//tady to jeste funguje
      for (int a = 0; a < 13; a++) { //3
        Serial.print(a);
        Serial.print(",");
        Serial.print(pgm_read_byte(&(strr[0][a])), BIN);//proc to ve foru nefunguje?
        Serial.print("\t,");
        Serial.println(pgm_read_byte(&(strr[1][a])), BIN);
     
      }
     
     
    }
     
    void loop() {
     
    }

    Důležité je právě pgm_read_byte();, to označuje že chcete číst z programové paměti.

    odpověď na: aktualizování firmwaru přes uart #11195
    michal123
    Účastník

    Tak jsem pořád zaseknutý na tomhle
    Proč to nefunguje? a jak na to?

    posjirka
    Účastník

    moc nechápu problém. přesnou vzdálenost od zdi. tím myslíš jako vzdálenost od startu nebo distance od překážky během jízdy? v jakém směru má být ta vzdálenost? o jaké hodnotě se baví me? jakou rychlostí se vlastně pohybuje to auto? ….

    odpověď na: Začátečnická chyba #11192
    pedyngro
    Účastník

    Právě jsem se dozvěděl o možnosti INPUT_PULLUP 😀
    Rád bych ale věděl, proč nefungovala první verze

    odpověď na: Začátečnická chyba #11191
    pedyngro
    Účastník

    Už jsem to vyřešil trochu šikovnějším kódem:

    byte led = 50;
    byte tlacitko = 52;
    void setup() {
    pinMode(led,OUTPUT);
    pinMode(tlacitko,INPUT);
    Serial.begin(9600);
    }

    void loop() {
    cteni = digitalRead(tlacitko);
    if(cteni == 0){
    Serial.println(„high“);
    digitalWrite(led,HIGH);
    }
    else if(cteni == 1){
    digitalWrite(led,LOW);
    Serial.println(„low“);
    }
    }

    Stejně ale nevím, kde jsem předtím udělal chybu…

    odpověď na: Arduino Print TX (433MHz) #11188
    Breitak
    Účastník

    Při hledání na inernetu jsem jeste narazil na zajimavou stranku.
    Ohledně 433MHz
    http://www.nemcon.nl/blog2/
    Třeba to někomu pomůže.

    odpověď na: aktualizování firmwaru přes uart #11185
    michal123
    Účastník

    Nějak mi trvalo dlouho než jsem se k tomu vůbec dostal, tady posílám nějak opravený neodzkoušený kód
    Zítra se k němu dostanu zase až pozdě, zatím kód funguje do funkce kolem řádku 311 taže už to snad brzy vyjde.

    odpověď na: aktualizování firmwaru přes uart #11177
    Vojtěch Vosáhlo
    Účastník

    No s typem pole problém nebude, jde o to co a jak do něj zapíšete.

    odpověď na: aktualizování firmwaru přes uart #11176
    michal123
    Účastník

    Děkuji, už to také vidím ale porád si nedovedu vysvětlit, že to vracelo blbosti i když tam HEX nebylo.
    Az přiijdu odpoledne domů tak to znovy vyzkouším s polem UINT_8 které by k tomu mělo být nejspíš nejlepší.

    odpověď na: aktualizování firmwaru přes uart #11170
    Vojtěch Vosáhlo
    Účastník

    No ono to je pochopitelné ale mě to nedošlo. Vy máte vaše pole zapsané jako stringy. Viz třeba 1. řádek:

    
    "0C9457000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C9469000C946900"
    

    To si ale arduino neinterpretuje tak jak potřebujete. Dal jste to jako string takže arduino to má za sérii charakterů, např. nula by se tedy přeložila na 48 DEC podle ASCII. Musel byste buď použít nějaký převodník který by předělal HEX čísla na znaky které byste pak zapsal jako string a nebo čísla zapisovat v jakémkoliv tvaru (hex, dec nebo jako char) po kolonkách – 0x0C, 0x94, 15, ‚P‘,…

    Možná jsem si nevšiml nějaké konverze, taky jsem tu zmiňovanou smyčku vůbec neviděl v kódu. Kdyžtak mě odkažte na řádky.

    odpověď na: aktualizování firmwaru přes uart #11169
    michal123
    Účastník

    Tak jsem opravil pár chyb a dostal jsem se k chybám v zapisdata(), to nefunguje vůbec.
    Když

     for(int i=0;i<100;i++){
          Serial.print(str[0][i]);
        }

    pak to vypíše nesmysly a když do toho napíšu HEX tak to taky není lepší, Takže vůbec netuším čím to je ale snad mi to dojde zítra.

    odpověď na: aktualizování firmwaru přes uart #11168
    Vojtěch Vosáhlo
    Účastník

    Kdyby něco nešlo tak pište, po ruce mám 4 arduina a RS232 převodník tak můžu kdyžtak odšpehovat co arduino pošle, pokud tohle nemáte dostupné.

    odpověď na: aktualizování firmwaru přes uart #11167
    michal123
    Účastník

    zatím teoretická verze, k arduinu se dostanu až večer (později) a jsem si téměř jist že to fungovat nebude (dělám dost chyb a máloco ufnguje na první pokus).

    Děkuji moc za vysvětlení, doufám že se mi to brzy podaří odzkoušet.

    odpověď na: aktualizování firmwaru přes uart #11166
    Vojtěch Vosáhlo
    Účastník

    Jen pár vysvětlení. V kódu jste se ptal proč jsem použil toto:

    for(int i = 0; i <= programator.available(); i++){
          prichozi[i] = programator.read();
      }
     
     
      //vyhodnoti jestli jsme dostali OK odpoved
      if(prichozi[0] == 0x14 && prichozi[1] == 0x10){
          return 1;
      }else return 0;
    

    A důvod je jednoduchý, bylo to jediné co mi 100% fungovalo. Pokud vám funguje metoda s if, nechte jí, to je určitě lepší ale pro mě nefungovala a nebo jsem ji měl možná špatně zapsanou.

    Tyto smyčky:

     while (!programator.available()) {
          ;
        }

    jsou problém a to už u mě protože program se v nich může zaseknout a jet do nekonečna. Zkuste implementovat kolik pokusů má na to aby získala data, pokud půjde přes limit, vyskočíme z ní. Mohlo by to vypadat třeba takto:

     
    int maxPokusy = 5000;
    int pokus = 0;
    
    while (!programator.available() && pokus < maxPokusy) {
          pokus++;
        }
    
    pokus = 0;
    
    

    Na toto:

     //ZAPIS DAT
      programator.write(0x46);//-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-nevim jak ste na to prisel
    

    jsem přišel ze zmíněné stránky, z vlastního odposlechu arduina a z datasheetu. 0x46 převedeno na charakter je F, to znamená že se uploaduje do Flash paměti. Je možnost použít E kdyby jste něco uploadoval do Eeprom.

    Jinak žádnou do oka bijící chybu nevidím. Zkoušel jste už program nebo je to pořád „teoretická“ verze?

    Vojta

    odpověď na: Arduino Print TX (433MHz) #11165
    Breitak
    Účastník

    Děkuji za reakce.
    už to běží.

    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();

    void setup() {

    Serial.begin(9600);

    // vysílač je spojen s Arduino Pin # 10
    mySwitch.enableTransmit(10);

    // Volitelná délka set puls.
    mySwitch.setPulseLength(320);

    // Volitelné set protocol (Výchozí hodnota je 1, bude fungovat pro většinu prodejen)
    mySwitch.setProtocol(1);

    // Volitelně sada počet přenosových opakování.
    mySwitch.setRepeatTransmit(15);

    }

    void loop() {

    /* Stejný přepínač jako výše, ale za použití kódu v desítkové soustavě */
    //mySwitch.send(1361, 24);
    //delay(1000);
    //mySwitch.send(1364, 24);
    //delay(1000);

    delay(2000);
    }

    odpověď na: Kapacitní klávesnice s větším dosahem #11164
    petouf
    Účastník

    Tak to byl zajímavý odkaz, pravda je, že je s tim dost velký problém „vyladit“ to. Ale na pokusy je to prima 🙂
    Ještě jsem objevil tohle http://www.ebay.com/itm/new-Touch-Sensor-Switch-Inching-Latch-Control-Capacitive-Touch-Button-Module-/152224875690?hash=item23714f44aa:g:rMEAAOSwi0RXxrWN
    ale cena je dost velká, i když balík 10 kusů pak vyjde levněji; zatím si koupím kus a budu experimentovat.
    Taky jsou plastová IP65 tlačítka v GM https://www.gme.cz/spinac-hbgq12b-10-w-j-a
    Čekám taky na ten čip na ovládání gesty http://www.ebay.com/itm/GY-9960LLC-APDS-9960-RGB-and-Gesture-Sensor-I2C-Breakout-Module-for-Arduino-new-/162129355147?hash=item25bfa9a18b:g:7pwAAOSwxg5XzloV – a uvidim, co umí…

    odpověď na: aktualizování firmwaru přes uart #11163
    michal123
    Účastník

    Konečně jsem se k tomu odstal, je tedy možné to napsat nějak takhle?
    samozřejmě pro fungování by to tímto způsobem bylo příloš dlouhé a náročné, možní nespolehlivé.

    https://pastebin.com/HxW5D4p1

    Budu rád když mi řeknete co všechno je špatně případně co by šlo lépe.

    odpověď na: VGA a Arduino #11162
    LeosP
    Účastník

    O tom jsem neuvažoval – puvodne jsem uvidel ten textovej rezim u VGA DUINA a zajasal jsem.
    Potrebuju hlavne vetsi zobrazeni prevazne textu, zabulky atd na nejakem vetsim zarizeni nez je 20×4 LCD display. VGA monitor se mi zda jako dostupne (kazdej ho ma doma) a dostacujici zarizeni.
    Díky za link, zkusim se tim probabrat (nejsem zadnej velkej vyzkumnik) 🙂

    odpověď na: VGA a Arduino #11161
    Luke_CZ
    Účastník

    Jak velké rozlišení potřebuješ? link

    odpověď na: Arduino Print TX (433MHz) #11160
    BlindP
    Účastník

    třeba pomůže – https://www.youtube.com/watch?v=ED-eUlwiN6I když je venku tak škaredě 🙂

    odpověď na: Arduino Print TX (433MHz) #11159
    posjirka
    Účastník

    tady je důležité nejen na jaké frekvenci chytáš signál, ale taky v ajké rychlosti a jakou knihovnou. já mám doma RC zásuvku a nepodařilo se mi to rochodit. nakonec by to měl zvládnout rc switch (https://github.com/sui77/rc-switch). Musíš i vyzkoušet správný protokol … bez kodu a dalších informací se velmi špatně radí ..

Aktuálně je na stránce zobrazeno 30 příspěvků - 361. až 390. (celkem z 2,779)