Close

Korcagin

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,371. až 2,400. (celkem z 2,779)
  • Autor
    Příspěvky
  • odpověď na: Které Arduino #5611
    MifkoKE
    Účastník

    pre 16ks servo:

    http://www.ebay.com/itm/New-16-Channel-12-bit-PWM-Servo-Shield-16-CH-Servo-Driver-Board-IIC-For-Arduino-/381430244708?hash=item58cf03a564:g:EXcAAOSwunJWFJHY

    K tomu stačí aj Arduino Nano, ak nevieš programovať efektívne, kvôli väčšej pamäti zober radšej Arduino Mega2560 a máš pokoj.

    Môžeš ich pripojiť 6ks na jedno Arduino cez I2C zbernicu.
    Knižnice, príklady, kompletná dokumentácia sú na stránke originálneho výrobcu Adafruit
    https://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield/using-the-adafruit-library

    Ak nepotrebuješ riešiť nonstop zapnutý režim, tak RTC modul nepotrebuješ – vystačíš si s interným časovařom napr. millis()

    odpověď na: Které Arduino #5610
    daflik
    Účastník
    odpověď na: Které Arduino #5607
    daflik
    Účastník

    Mám podobný problém: které Arduina?
    Dělám Betlém a potřebuji oživit 20, možná více krokových motorků. Zatím mám jeden ale bude jich mnoho a proto jsem zakoupil samotné čipy, ale při ceně Ard. do 100,- kč nemá cenu je vyrábět. Potřebuju ale vědět které Ard. umí zvládnout nejvíce krokových motorů. Jestli se nepletu tak uno dva krokové, a dva lineární.

    Další věc je muzika která tam hraje: Letos jsem tam nechal starý počítač. Ten to mastil pořád dokola. Sounduino by se hodil parádně, ale ta cena! /Prodělečný projekt/

    PoraĎte …./motory 12V/
    Díky

    odpověď na: Buzzer YL-44 obrácené hodnoty #5543
    Soci
    Účastník

    Moc děkuji.

    odpověď na: Buzzer YL-44 obrácené hodnoty #5542
    taunt
    Účastník

    Dobrý den,
    jak říká klasik: „Tak je to spravne soudruzi, tak to ma byt“.
    viz tady
    s pozdravem taunt

    odpověď na: volání funkce pomocí pole #5488
    Zbyšek Voda
    Účastník

    Dobrý den,
    to do čeho se pouštíte už je trochu obtížnější. Nějak by to ale jít mělo.
    Zkuste použít postup pomocí ukazatelů na funkce: http://physics.ujep.cz/~mmaly/vyuka/oporaPrgB/032.html. Tyto ukazatele si pak nastrkejte do pole menu.

    Problém použití funkce jako argumentu jiné funkce řeší třeba zde: http://stackoverflow.com/questions/1789807/function-pointer-as-an-argument

    Snad by šlo použít něco jako:

    
    void scr1(){
        digitalWrite((LEDzl), !digitalRead(LEDzl));
        delay(30);
    }
    ...
    void **menu = {&scr1, ...};
    
    void showMenu(void (*a)()){
        a();
    }
    
    showMenu(menu[0]);
    

    Zkuste a uvidíme 🙂

    odpověď na: Arduino UNO napájanie #5484
    Vojtěch Vosáhlo
    Účastník

    Ahoj,
    Podle fóra na které jsem koukal by Vin měl zvládnout 1 ampér ale doporučuje se to nedělat kvůli přehřívání regulátoru. Nicméně pin Vin slouží jako vstup Voltage in takže nebude fungovat jako výstup 😀

    odpověď na: Sensor Shield v5.0 #5459
    Zbyšek Voda
    Účastník

    Dobrý den.
    Předpokládám, že otázka zní „Jak programovat pro sensor shield v5.0?“. Je to tak?
    Pomohlo by, kdybyste poslal odkaz na sensor shield. Pak se možná posuneme dál 🙂

    Aleš
    Účastník
    Aleš
    Účastník

    Teď ale koukám, že ten příklad je pro w5100/w5200 🙁

    Aleš
    Účastník

    Aha. Tak to je jasné. DHCP server má nastavený Lease time na 10minut. To je doba na kterou ti DHCP server přidělí IP adresu. Když se těch 10 minut nic neděje, tak ji odpojí, a může ji přidělit jinému zařízení. Na 10 minut se nastavuje jenom v místě, kde se připojuje hodně lidí na krátkou dobu – třeba free WiFi na nádraží apod. Běžně je nastavujena na 1440 minut, já ho mám doma nastavený na 0 – neomezeně. Takže buď přenastavit lease time, nebo to vyřešit tak, jak je to popsané v jednom z příspěvků z toho fóra:

    Then try this code. It connects to a server every 30 seconds. See how long it goes.
    https://playground.arduino.cc/Code/WebClient
    It has the dhcp begin call commented out, but the code is there to use it.

    Místo čekání x minut tam udělat smyčku, která každých 30s stáhne něco odněkud z webu. Potom by měla i vydržet ta pronajatá IP adresa.

    Nebo nechat nastavenou pevnou IP adresu.

    mape
    Účastník

    Já mám ten malej ethernetovej modul, nikoliv ethernet shield. Se statickou IP adresou to funguje normálně. Ale proč s DHCP ne? Píše se o tom i tady
    https://forum.arduino.cc/index.php?topic=302559.0
    ale týpek to „vyřešil“ tim, že si koupil rovnou nový modul.

    Aleš
    Účastník

    To je divné. V meteostanici http://xanadu.khnet.info/meteo.php mám ethernet shield nastavený na pevnou IP adresu, data se odesílají každou minutu, a běží to naprosto bez problému asi 2 roky. To samé přes WiFi s ESP8266 se data odesílají na ThinSpeak každých 5 minut, a také to jede v kuse třeba měsíc.
    Zkusil bych nastavit pevnou IP adresu. Když to nepomůže, tak zkusit vytvořit krátký prográmek, který bude odněkud stahovat (GET) nějaká data v intervalu např. 2 minut, a sledovat, jestli to také vypadne.

    mape
    Účastník

    Vypadne to po 10ti minutách, takže výsledků bude 5-6. Když udělám interval 30s, bude výsledků víc, ale zase pouze 10minut.

    Aleš
    Účastník

    Zkoušel jsi ten interval zkrátit třeba na 2 minuty? Jak se to bude chovat ?

    mape
    Účastník

    Ahoj borci; v první řadě bych vám chtěl poděkovat, že jsem díky vám zprovoznil logování teploty na ThingSpeak. Kompilátor mi neustále házel chyby a po promarněném víkendu, kdy už jsem chtěl moduly vyhodit z okna :)) jsem si všimnul, že Ondra78 používá verzi 1.6.3 a přitom web arduina mi vnutil 1.6.5, která ten kód vyhodnotí s chybami. Takže to bych chtěl napsat pro všechny ostatní, aby neztráceli naději 😀
    A teď k mojí otázce: mám takovýto testovací program

    
    #include <EtherCard.h>
    #define APIKEY  "ZMH0T5WDETDGCY67"
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 3
    
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
      
    byte mymac[] = { 0xDE,0xAD,0xBE,0xEF,0xFE,0xED };
    const char website[] PROGMEM = "api.thingspeak.com";
    byte Ethernet::buffer[700];
    
    uint32_t timer;
    Stash stash;
    
    void setup () {
      Serial.begin(9600);
      Serial.println("\n[webClient]");
      sensors.begin();
      if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) 
        Serial.println( "Failed to access Ethernet controller");
      if (!ether.dhcpSetup())
        Serial.println("DHCP failed");
    
      ether.printIp("IP:  ", ether.myip);
      ether.printIp("GW:  ", ether.gwip);  
      ether.printIp("DNS: ", ether.dnsip);  
    
      if (!ether.dnsLookup(website))
        Serial.println("DNS failed");
        
      ether.printIp("SRV: ", ether.hisip);
    }
    
    void loop () {
      sensors.requestTemperatures();
      ether.packetLoop(ether.packetReceive());
      
      if (millis() > timer) 
      {
        Serial.println(millis());
        timer = millis() + 660000; 
        delay(200); 
        byte sd = stash.create();
        stash.print("&field1=");
        stash.print(String(sensors.getTempCByIndex(0), DEC));     // print the value (0 to 1024) as string
        stash.save();
    
        Stash::prepare(PSTR("POST /update HTTP/1.1" "\r\n" 
                            "Host: $F" "\r\n" 
                            "Connection: close" "\r\n" 
                            "X-THINGSPEAKAPIKEY: $F" "\r\n" 
                            "Content-Type: application/x-www-form-urlencoded" "\r\n" 
                            "Content-Length: $D" "\r\n" 
                            "\r\n" 
                            "$H"),
                website, PSTR(APIKEY), stash.size(), sd);
    
        ether.tcpSend();
      }
    }
    

    Funguje to, ale pouze 10 minut, pak se musí přípravek resetovat, proč? Přes sériovou linku vidim, že program žije a v intervalech nastavených v programu problikne i ethernetový modul a dioda na routeru. Vygooglil jsem, že TCP protokol má timeout 10 minut, ale moc tomu nerozumim, je to pravda? Jak tedy upravit program? A jak je možný, že vám to funguje bez problému? Neni případně problém na mojim routeru? Řeším to teď teda tak, že mám časové relé, které mi zapíná modul (nano + mini ethernet modul HR911105A) jednou za 30minut na 1minutu. Děkuji za každou radu.

    Zbyšek Voda
    Účastník

    Dobrý den,
    to asi záleží spíše na účelu.

    Když koukám na ten kit, naleznete tam ledky, rezistory a tlačítka. Na začáteční hraní to stačí, ale myslím, že po chvilce (v řádu hodin) už moc nemáte s tímto kitem co dělat.

    Asi bych raději sáhnul po nějakém obsáhlejším kitu – například tomto: http://www.hwkitchen.com/products/kit-workshop-base-level/

    Podle mě asi úplně nejlepší kit je oficiální Arduino Starter Kit. V něm už je opravdu spousta komponent (Servo motor, DC motor, LCD displej…).

    Trupik
    Účastník

    Tak problém vyřešen. Z nějakého důvodu tohle ProMicro nefunguje v USB portu, kam normálně připojuji ostatní Arduina. Stačilo přehodit jinam, nainstalovat driver a funguje…?!?

    Trupik
    Účastník

    Dovolím si vetřít se do tohoto tématu se stejným problémem. Koupil jsem Arduino ProMicro od Sparkfunu, po připojení mi Win napíší že zařízení nebylo rozpoznáno a ve správci zařízení se hlásí jako „USB IO Board“. Přitom s jinými Arduiny založenými na stejném ATMega 32u4 problémy nemám…

    Jak zjistit jestli je to zmetek na reklamaci, nebo jestli je chyba u mně?

    T.

    odpověď na: zapojenie bs18d20 #5340
    Aleš
    Účastník

    Já mám takovou zkušenost, s DS18B20 a phantomovým napájením. Obvod snese velmi zdeformované pulzy a pořád to chodí. Jen jedno nesnese a to zápornou polaritu. Ta ale vzniká odrazem na delším kabelu. Pomáhá následující úprava: do série s výstupním pinem MCU dát rezistor cca 50 ohmů, aby nebyla tak strmá sestupná hrana a na oba konce (u MCU i teploměru) dát schotkyho diodu, která svede záporné napětí.

    CJ190133
    Účastník

    Ahoj, už som ich objednal niekoľko s CH340G a doteraz až na jednu výnimku žiaden problém. Ten problémový kus sa správal tak, že po nahraní kódu vypisoval CRC error. Je to naozaj zlý kus CH340.
    Čo sa týka driverov – pozri si najskôr vo Windows v sériových portoch pod akým portom sa ti CH340 prezentuje, to je pri každom kuse iné a potom si nastav v IDE taký istý port. Windows 8 nepotrebuje žiadne ovládače, zariadenie nie je vidieť pod USB zariadeniami, ale iba na sériovom porte.
    Do budúcna si daj pozor, CH340G je iba prevodník USB to serial, nie je to natívne USB zariadenie (nevie simulovať klávesnicu apod.) Ak chceš hardwérový ekvivalent originálu, tak na Aliexpresse je to napr. Funduino. Alebo aj noname, ale musíš opticky skontrolovať čip.

    odpověď na: zapojenie bs18d20 #5338
    Zbyšek Voda
    Účastník

    Dobrý den,
    to by mohl být i problém načasování. V tomto fóru: https://forum.arduino.cc/index.php?topic=20574.0 řeší podobný problém, který vyřešila právě změna časování v knihovně OneWire.cpp (je to příspěvek označený #5).

    odpověď na: EBook – nelze stáhnout #5319
    mac112
    Účastník

    Nedostanu žádný odkaz na stáhnutí knížky na můj email info@macha.info

    odpověď na: Posílání dat do mysql databáze #5294
    Vojtěch Vosáhlo
    Účastník

    Tak jo. Chvíli jsem na tom pracoval a už to funguje. Tvůj problém byl nejspíše v tom že DS posílá data tak rychle že se procesor přehltí a zasekne se. Tady je kód který jsem použil na testování. Doplň si do něj vše co používáš na daná místa a pak ho zkus spustit.

    //#include <DS3232RTC.h>        //http://github.com/JChristensen/DS3232RTC
    //#include <Streaming.h>        //http://arduiniana.org/libraries/streaming/
    //#include <Time.h>             //https://playground.arduino.cc/Code/Time
    #include <Wire.h>             //https://arduino.cc/en/Reference/Wire
    #include <avr/sleep.h>                                 
    
    #define SQW_PIN 2
    boolean sleep = false;
    
    void setup(void)
    {
        Serial.begin(115200);
        
        //setSyncProvider() causes the Time library to synchronize with the
        //external RTC by calling RTC.get() every five minutes by default.
       /* setSyncProvider(RTC.get);
        Serial << "RTC Sync";
        if (timeStatus() != timeSet){
            Serial << " FAIL!";
        }
        Serial << endl;
    
        printDateTime( RTC.get() );
        Serial << " --> Current RTC time." << endl;
    
        //Disable the default square wave of the SQW pin.
        RTC.squareWave(SQWAVE_NONE);
    
        //Attach an interrupt on the falling of the SQW pin.
        //digitalWrite(SQW_PIN, HIGH);    //redundant with the following line*/
        pinMode(SQW_PIN, INPUT_PULLUP);
        
    
        //Set an alarm at every 20th second of every minute.
      /*  RTC.setAlarm(ALM1_MATCH_SECONDS, 20, 0, 0, 1);    //daydate parameter should be between 1 and 7
        RTC.alarm(ALARM_1);                   //ensure RTC interrupt flag is cleared
        RTC.alarmInterrupt(ALARM_1, true);*/
    
    }
    
    //volatile boolean alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    
    void alarmIsr()
    {
        
        sleep_disable();
        sleep = false;
        Serial.println("Probudil jsem se!");
        detachInterrupt(0);
        
    }
    
    void sleepNow() {  
        sleep_enable();
        sleep = true;
        set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // sleep mode is set here 
        
        attachInterrupt(0, alarmIsr, CHANGE);
        sleep_mode(); 
        
     
    
        if(sleep) sleep_disable();         
        Serial.println("Muj kod...");
        delay(1000); ///!!!!!!!!!!!!!!!DULEZITE!!!!!!!!!!!!
       
    
       
       
    }  
    
    int i = 1; //abych zjistil, kolikrat probehl loop
    
    void loop(void)
    {
    // alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    delay(100);
    Serial.println(i);
    printDateTime();
    delay(100);
    i++;
    sleepNow();
    }
    
    void printDateTime(/*time_t t*/)
    {
        /*Serial << ((day(t)<10) ? "0" : "") << _DEC(day(t)) << ' ';
        Serial << monthShortStr(month(t)) << " " << _DEC(year(t)) << ' ';
        Serial << ((hour(t)<10) ? "0" : "") << _DEC(hour(t)) << ':';
        Serial << ((minute(t)<10) ? "0" : "") << _DEC(minute(t)) << ':';
        Serial << ((second(t)<10) ? "0" : "") << _DEC(second(t));*/
    
        Serial.println("Vypis cas.");
    }

    Mělo by to fungovat tak že když se na interupt pinu něco změní – DS pošle data
    tak se dostaneš do smyčka alarmIsr() —> zpět do sleepNow() na pozici „Můj kód…“ —> loop() —> výpis času printDateTime() a zpět na sleepNow()

    Takhle to jde pořád dokola. Zkus to a napiš jak to funguje. 😀

    odpověď na: Posílání dat do mysql databáze #5288
    novakkry
    Účastník

    Tady je můj kód, kterej jsem poslepoval z nějakejch kódů. Je to zatím asi nejdál, co jsem se dostal. 😀
    Problém je, že proběhne loop, potom se to uspí, probudí, uspí, ale už neprobudí. :/ Možná ten kód je blbost, já nevím…

    #include <DS3232RTC.h>        //http://github.com/JChristensen/DS3232RTC
    #include <Streaming.h>        //http://arduiniana.org/libraries/streaming/
    #include <Time.h>             //https://playground.arduino.cc/Code/Time
    #include <Wire.h>             //https://arduino.cc/en/Reference/Wire
    #include <avr/sleep.h>                                 
    
    #define SQW_PIN 2
    
    void setup(void)
    {
        Serial.begin(115200);
    
        //setSyncProvider() causes the Time library to synchronize with the
        //external RTC by calling RTC.get() every five minutes by default.
        setSyncProvider(RTC.get);
        Serial << "RTC Sync";
        if (timeStatus() != timeSet){
            Serial << " FAIL!";
        }
        Serial << endl;
    
        printDateTime( RTC.get() );
        Serial << " --> Current RTC time." << endl;
    
        //Disable the default square wave of the SQW pin.
        RTC.squareWave(SQWAVE_NONE);
    
        //Attach an interrupt on the falling of the SQW pin.
        //digitalWrite(SQW_PIN, HIGH);    //redundant with the following line
        pinMode(SQW_PIN, INPUT_PULLUP);
        
    
        //Set an alarm at every 20th second of every minute.
        RTC.setAlarm(ALM1_MATCH_SECONDS, 20, 0, 0, 1);    //daydate parameter should be between 1 and 7
        RTC.alarm(ALARM_1);                   //ensure RTC interrupt flag is cleared
        RTC.alarmInterrupt(ALARM_1, true);
    
    }
    
    //volatile boolean alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    
    void alarmIsr()
    {
        Serial.println("alarmIsr"); //abych zjistil, jestli tahle funce byla zavolana
       // alarmIsrWasCalled = true; myslim, ze to nepotrebujeme
    
    }
    
    void sleepNow() {  
        set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // sleep mode is set here  
        sleep_enable();                         // enables the sleep bit in the mcucr register  
          // use interrupt 0 (pin 2) and run function 
          attachInterrupt(0,alarmIsr, CHANGE);// here the device is actually put to sleep!!   
          sleep_mode(); 
          Serial.println("SleepNow"); //abych zjistil, jestli tahle funce byla zavolana
          
        // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP  
       
    
      //  sleep_disable();         // first thing after waking from sleep: disable sleep...  
       // detachInterrupt(0);      // disables interrupt 0 on pin 2 so the wakeUpNow code will not be executed during normal running time.  
    }  
    
    int i = 1; //abych zjistil, kolikrat probehl loop
    
    void loop(void)
    {
    // alarmIsrWasCalled = false; myslim, ze to nepotrebujeme
    delay(100);
    Serial.println(i);
    delay(100);
    i++;
    sleepNow();
    }
    
    void printDateTime(time_t t)
    {
        Serial << ((day(t)<10) ? "0" : "") << _DEC(day(t)) << ' ';
        Serial << monthShortStr(month(t)) << " " << _DEC(year(t)) << ' ';
        Serial << ((hour(t)<10) ? "0" : "") << _DEC(hour(t)) << ':';
        Serial << ((minute(t)<10) ? "0" : "") << _DEC(minute(t)) << ':';
        Serial << ((second(t)<10) ? "0" : "") << _DEC(second(t));
    }
    odpověď na: Posílání dat do mysql databáze #5287
    novakkry
    Účastník

    To by bylo žůžo. Díkes! 😀

    odpověď na: Posílání dat do mysql databáze #5286
    Vojtěch Vosáhlo
    Účastník

    To jsou takový malý věci, který člověk neví, zaberou mi celej den a potom člověk zjistí, že má přehodit jenom dva drátky…

    Já jsem s tím měl jako začátečník taky problémy.

    Hele dnes už nemám čas ale zítra to dořešíme, zkusím ti to pomoct sprovoznit. 😀

    odpověď na: Posílání dat do mysql databáze #5285
    novakkry
    Účastník

    Jinak díky moc za objasnění TX a RX. To jsou takový malý věci, který člověk neví, zaberou mi celej den a potom člověk zjistí, že má přehodit jenom dva drátky… 😀

    odpověď na: Posílání dat do mysql databáze #5284
    novakkry
    Účastník

    No já bych nepoužíval arduino na samotné buzení. Postavil bych si bareduino (bez všech regulátorů, ledek a těchto zbytečností) a budil bych ho přes ten rtc ds3231 modul. Ten má na sobě atmel 24c32n a běží na vlastní baterce, takže arduino může spát a mít spotřebu v micro amperech.
    Na internetu jsou k tomu tuny návodů, ale já jsem prostě takový kopyto, že to neumím zprovoznit… 🙁

    odpověď na: Posílání dat do mysql databáze #5280
    Vojtěch Vosáhlo
    Účastník

    Ahoj,
    upřímně bych nepoužíval arduino samotné k tomu aby se budilo. Nevím kolik mA ti arduino bere ale alespoň 1mA i při spánku to bude. Já bych zainvestoval nějakých 30Kč 😀 a koupil si Attiny13A. Tenhle procesor používám hrozně dlouho a na buzení ostatních zařízení je dokonalý. Má spotřebu 190uA při práci a 24uA při spánku což by ti např. s 2000 mAh baterijí vydrželo asi 3000dní (i když počítám se sepnutím arduina, měřením…)
    Být tebou bych udělal tohle:

        Nastav si v DS3231 alarm. Ten dovolí aby ti DS každý den (nebo jakýkoliv interval co nastavíš) poslal data o čase.
        Napsat program který s využitím interuptů zbudí attiny13 když DS pošle data.
        Attiny zapne na určitý čas arduino.
        Arduino si přeměří všechny data, pokud je potřeba přečte si čas z DS a odešle vše na web.
        Poté Attiny znovu vypne arduino a uspí se. To se opakuje pořád dokola.

    Takhle bych to udělal já ale chápu že to je docela komplikované. Zvaž všechny pro a proti a kdyby ti to nevyhovovalo tak napiš a vymyslíme něco jiného.
    Hodně štěstí.
    Mimochodem RX na TX a TX na RX je standardní zapojení sériové linky. Funguje to tak že 1. zařízení něco odešle ze svého TX (transmit) pinu a tyhle data musí 2. zařízení přijmout svým RX (receive) pinem.

    Doufám že to pomůže. 😀

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