Close

Zbyšek Voda

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 15 příspěvků - 46. až 60. (celkem z 203)
  • Autor
    Příspěvky
  • odpověď na: Čtení hesla z #10302
    Zbyšek Voda
    Správce

    Pojďme tedy pokračovat dál 🙂 Koukám na dokumentaci, tak snad ji dobře chápu. (http://playground.arduino.cc/Code/Keypad)

    Prozkoumejme pořádně funkci keypadEvent.

    void keypadEvent(KeypadEvent eKey){
      for (int i =0; i = 5; i++){
        admpw[i] = keypad.getState();
        Serial.println(admpw[i]);
      }
    }

    Ta je zavolána kdykoliv, když dojde ke změně stavu klávesy (uvolnění, stisknutí).

    Funkce getState() vrací hodnotu podle toho, co se s keypadem děje – vrací hodnoty
    IDLE, PRESSED, RELEASED a HOLD. Vy tedy budete ve funkci keypadEvent testovat, jestli je getState() rovna PRESSED a poté zapisovat hodnotu stisknuté klávesy do pole admpw[] na patřičné místo (další v pořadí).

    Takže bych postupoval následovně: vytvořte si na začátku programu proměnnou int pos = 0;, která bude udávat pozici načteného znaku. Při stisknutí tlačítka dojde k uložení stisknutého tlačítka do pole admpw na index pos a navýšení proměnné pos o 1. Musíte si také pohlídat, aby pos měla hodnoty 0 – 4. To se dá zařídit operátorem modulo – %.

    void keypadEvent(KeypadEvent eKey){
      if(keyboard.getState == PRESSED){
        admpw[pos] = keyboard.getKey();
        pos = (pos + 1) % 5;
      }
    }

    Takhle by to podle mě mohlo jít 🙂

    odpověď na: Čtení hesla z #10294
    Zbyšek Voda
    Správce

    Dobrý den, ve funkci keypadEvent máte podivnou ukončovací podmínku cyklu for.
    Máte tam: for (int i =0; i = 5; i++)
    Tedy cyklus probíhá, dokud i = 5. V každém průchodu se tedy do i přiřadí hodnota 5, je vyhodnocena jako true a cyklus opakuje znova – tedy se zacyklí.

    Asi je to překlep a chtěl jste napsat i < 5 🙂

    Pokud byste chtěl testovat rovnost, tak musíte použít operátor ==, = je přiřazení hodnoty do proměnné.

    odpověď na: Due #10253
    Zbyšek Voda
    Správce

    Dobrý den, já mám dobrou zkušenost s tímto převodníkem http://www.hwkitchen.com/products/logic-level-converter/. Použil jsem ho v několika projektech a funguje bez problému.

    Zbyšek Voda
    Správce

    Řešení: V době programování Arduina odpojit cokoliv, co je připojeno na piny RX a TX (0 a 1). Jak psal Dreamer.

    Zbyšek Voda
    Správce

    Popřípadě ten přeposílač mezi sériovými linkami (Serial a Serial1) vypadá takto:

    void setup()
    {
        Serial.begin(9600);
        Serial1.begin(9600);
    }
    void loop()
    {
        while (Serial1.available()) {
            Serial.write(Serial1.read());
        }
        while (Serial.available()) {
            Serial1.write(Serial.read());
        }
    }

    ESP pak nepřipojujete na piny RX a TX, ale RX1 a TX1 – RX a TX jsou totiž napojené přímo na převodník z PC. Více linek ale mají jenom některé desky – jak jsem psal – Arduino Mega, Leonardo…

    Zbyšek Voda
    Správce

    Dobrý den,
    musíte mít připojené RX na TX a TX na RX (ne RX na RX apod.)

    Potom už jenom přes sériovou linku (Serial.println…) posíláte do ESP AT příkazy (za předpokladu, že máte v desce původní firmware). At příkazy viz: http://www.pridopia.co.uk/pi-doc/ESP8266ATCommandsSet.pdf.

    Pokud máte Arduino s více sériovými linkami (Mega, Leonardo, …), můžete do něj nahrát program, který bude sloužit jenom jako přeposílatel mezi PC a ESP, kterému přes Serial Monitor můžete posílat AT příkazy, ozkoušet si je a až potom je natvrdo napsat do programu. Pěkný návod je například zde: http://dalpix.com/blog/connecting-your-arduino-wifi-esp-8266-module

    odpověď na: Sparkfun mpl115a1 breakout #10063
    Zbyšek Voda
    Správce

    Dobrý den,
    zrovna Sparkfun má dokumentaci zpracovanou opravdu kvalitně 🙂
    Tady je například stránka produktu: https://www.sparkfun.com/products/9721

    Najdete tam odkaz na Datasheet i ukázkový kód.

    odpověď na: ESP8266 server/klient #9957
    Zbyšek Voda
    Správce

    O té možnosti ovládání zařízení vzdáleně jsem psal tady: https://bastlirna.hwkitchen.cz/programovani-webovych-rozhrani-pro-arduino/.

    Zařízení vystupuje v roli klienta a periodicky se připojuje na stránku a zkoumá například nějaký text – když narazí na L, tak motor vypne, když na H, zapne apod.

    Stejně může fungovat informování o jeho stavu – když se stav změní, zaloguje se změna na stránku.

    Zbyšek Voda
    Správce

    Postup je sepsaný v odkazech, které jsem vám poslal.

    Zbyšek Voda
    Správce

    Máte dvě možnosti. Buď ESP budete používat ve stavu, v jakém vám přišlo, nebo ho přeprogramujete.

    Pokud ho chcete používat v původním stavu, ovládá se ESP pomocí AT příkazů. AT příkazy se do ESP posílají přes sériovou linku a můžete jimi například říct, kam se má modul připojit, v jakém módu má pracovat a další. Tato metoda vám dovolí s modulem dělat všechny potřebné základní operace.
    Docela pěkně je tento postup popsán například zde: http://www.instructables.com/id/Using-ESP-01-and-Arduino-UNO/?ALLSTEPS, popřípadě tady: https://create.arduino.cc/projecthub/ROBINTHOMAS/programming-esp8266-esp-01-with-arduino-011389.

    Druhá možnost je programovat přímo ESP, ale to pak nepotřebujete Arduino a nevím, jestli to ve vašem konkrétním shieldu lze 🙂
    Jak na to je vidět například zde: https://www.youtube.com/watch?v=P_ecAFpUADU.

    Zbyšek Voda
    Správce

    Dobrý den, asi bude problém v tom, že není WiFi shield jako Wifi Shield 🙂
    On totiž oficiální Arduino WiFi shield (https://www.arduino.cc/en/Main/ArduinoWiFiShield) je úplně jiný než ten, který jste použil.

    Na vašem shildu je modul ESP8266, takže spíš hledejte „Arduino and ESP8266“ 🙂

    odpověď na: RS 485 #9771
    Zbyšek Voda
    Správce

    Dobrý den, jakou desku máte?
    Nemůžou se vám tlouct piny použitých periferií?

    Třeba deska Arduino Leonardo používá pin 2 pro I2C komunikaci.

    odpověď na: Problém při nahrávání #9166
    Zbyšek Voda
    Správce

    Jestli se nepletu, tak se toto u Leonarda občas stane.
    Zkuste do něj nahrát nějaký jednoduchý kód, třeba jenom

    void setup(){}
    void loop(){}

    a to tak, že před stisknutím „Upload“ v IDE zmáčkněte na desce tlačítko Reset, až poté dejte Upload v IDE. Jakmile se dole ve stavovém řádku IDE objeví Uploading, tak tlačítko reset pusťte.

    odpověď na: Rotační enkodér a OLED displej #8877
    Zbyšek Voda
    Správce

    Dobrý den, tak ještě zkuste nasdílet váš kód 🙂

    odpověď na: Rotační enkodér a OLED displej #8831
    Zbyšek Voda
    Správce

    Není zač. Pokud se vám teď nechce prokousávat teorií, můžete použít kód z té sekce Interrupt Example (the Encoder interrupts the processor). Uses both Interrupt pins. Proměnná encoder0Pos udává polohu enkodéru – ve vašem případě plní funkci vaší proměnné counter.

Aktuálně je na stránce zobrazeno 15 příspěvků - 46. až 60. (celkem z 203)