Close

posjirka

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 15 příspěvků - 316. až 330. (celkem z 481)
  • Autor
    Příspěvky
  • odpověď na: Jak na název s automatickým posunem jména #7402
    posjirka
    Účastník

    souhlasím se Zbyškem. Asi jedinou variantou je udělat pole objektu (nikoliv proměnných …), které se nadefinuje jako rozěmr pole a poté se pro každý záznam/buňku pole vytvoří instance objektu. Vcelku hezká diskuze a vysvětlení je třeba tu:
    https://forum.arduino.cc/index.php?topic=80913.0

    Zbyšek to napsal velmi správně jen je to v tom textu těžko čitelné.
    v podstatě tě zajímá pouze tato část:

    int BUTTON[] = {2,3,4,5,6};  //button pins
    const int numButtons = 5; 
    
    Bounce bouncer[5];
    
    for( int i = 0; i < numButtons; i++){
       Bounce bouncer[i] = (BUTTON[i], 5);
    }

    Jinak doporučuju použít standardní řadu proměnných, už jen z důvodu omezené kapacity paměti RAM. Například v C# bych si toto dovolil a použil spíš kolekci než pole pro lepší manipulaci se záznamy. V poli musíš nadefinovat jak bude veliké a v případě zmany velikosti provést „přenesní hodnot“. s kolekcí můžeš dělat co chceš. Je však náročná na paměť a Arduino jinepodporuje. Chci tím říst, že stejně na začátku budeš muset nadefinovat kolik těch objektů budeš chtít vytvořt a ověřit si že máš dostatek volných prostředků. Navíc se budeš odkazovat na objekty jako na realtivní adresy, … Prostě mi to trochu v hlavě nabourává tu jednoduchost řešení případů, pro kterou bylo arduino navrženo…. tyto procesy bych spíš řešil na raspberry pi.

    odpověď na: arduino DRL modul pre dialkove svetla #7387
    posjirka
    Účastník

    otočení klíče do 2. polohy je nejjednodušší varianta a v podstatě je tam to arduino už zbytečné. jak jsem ti posílal odkaz tak to je analogová konstrukce za pár korun a bez programování. Jen pro pořádek dobrá rada: používej autorelé na 12V. Jsou veliké ale budou spolehlivé.

    odpověď na: arduino DRL modul pre dialkove svetla #7385
    posjirka
    Účastník

    tady je spoustu faktoru, které to můžou ovlivňovat:
    – rušení od řídících jednotek
    – načnutý alternátor
    – špatná zem
    – ….
    Máš 2 možnosti:
    1, neuvádíš jaký je to auto. Postaru se to řešilo tak, že místo sledování baterie se sledovalo zde je napětí za ořechem (spínací skříňka), která zapíná třeba autorádio atd. Pak bys nemusel sledovat nic analogového jen je/není napětí. jednoduchá konstrukce je třeba tady:
    http://paja-trb.cz/konstrukce/aut_svetla.html
    2, musíš to napětí , které přivádíš nejdřív oddělit (diodou) a pak vyfiltrovat (kondenzátor 100n + 470u proti zemi).

    odpověď na: FT232RL FTDI Basic USB #7366
    posjirka
    Účastník

    víš vubec na co se ptáš?
    Na začátku řešíš nahrání bootloaderu … to jde jedině přes ICSP.
    Když ti dám alternativní návod tak píšeš že je na jiný čip a ve výsledku zjistím, že řešíš komunikaci přes UART …

    odpověď na: FT232RL FTDI Basic USB #7344
    posjirka
    Účastník

    1. nejspíš nemáš nainstalovaný ovladač pro FT232
    2. zkontroluj si zda máš správný port COMxx
    3. zkontroluj si typ programátoru
    4. zkontroluj si výběr správné desky arduino
    5. nevím jestli arduino podporuje FT232 jako ISP programator
    6. pokud sis tam (do atmegy) zkoušel něco nahrávat mohl jsi nastavit špatné pojistky
    7. zkus jiné arduino.
    8. zkus jiný programátor – můžeš využit i jiné arduino s programem Aruino as ISP promammer a dáš kondenzátro 10uF mez reset a zem …

    Use Arduino as an ISP programmer to program non-Arduino AVR microcontrollers

    odpověď na: "Skládání" názvu proměnné v cyklu FOR #7262
    posjirka
    Účastník

    co takhle použít pole (array).
    Můžeš si nadefinovat pole o 15 hodnotách a ve smyčce for do něj zapisovat hodnoty jednotlivých čidel.
    Pole může mít i více než 1 rozměr, takže můžeš udělat i pole o např. 2 rozměrech pro zadání adresy jednotlivých čidel (takže pole 15×8 byte)
    podívej se tady:
    https://www.arduino.cc/en/Reference/Array
    a nejlépe na kapitolu Arrays and FOR Loops

    jenom pozor !!! indexace pole začíná číslem 0 nikoliv 1 !!!

    odpověď na: Osvětlení akvaria Led pásky #7251
    posjirka
    Účastník

    já bych řekl, že ty „chyby“ k kodu asi způsobuje fakt, že nepoužíváte místní značky pro vkládání kodu. Tady jsou použity apostrofy nikoliv párovná značka CODE .
    Ten můj program je jen rychlý návrh jak by to šlo udělat. Jak sjem psal nemám doma DS3231 jen DS1307 a to ve fromě IO = nemám volný hotový modul.
    Chtěl jsem ti jen nastínit jonou možnost řešení …
    Když používáš tu násobnou podmínku ve smyčce FOR doporučil bych spíš použít jednotlivé podmínky IF vnořené (kaskádově) v sobě. Lépe se pak chápe funkce a možnosti řešení z pohledu programátora „žáka“ .

    odpověď na: Osvětlení akvaria Led pásky #7242
    posjirka
    Účastník

    ještě máš chybu tady:

    for (byte brightness = 255; den == 0 && sviti == 1 && brightness >= 0; brightness –) {
    displayTime(); // display the real-time clock data on the Serial Monitor,
    analogWrite(svetlo1, brightness);
    if(brightness == 0) sviti = 0;
    delay(5000);}

    na konci definice smčky for patří 2x minus
    for (byte brightness = 255; den == 0 && sviti == 1 && brightness >= 0; brightness –-)
    jinak ti to nepujde odečítat …..

    odpověď na: Osvětlení akvaria Led pásky #7240
    posjirka
    Účastník

    napsal jsem jednoduchý příklad.
    Je to myslim dobře okomentovaný takže princip by měl být jasný:

    // priklad principu regulace osvetleni akvaria
    // v01
    // by JP 2016
    //
    
    // knihovny
    
    #include <Time.h>
    
    // promenne
    int jas = 0; // pomocna promenna pro vypocet jasu
    const int LED = 10; // pin s LED diodou
    // nasatveni casovace
    int casovac[24] = {0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
    // jednotlive polozky casovace predstavuji intenzitu jaku v celou hodinu
    // 1. cislice je intenzita osvetleni v 0:00
    // 2. cislice je intenzita osvetleni v 1:00
    // ...
    // 23. cislice je intenzita osvetelni v 23:00
    // cislice jsou v rozsahu:
    // 0 = 0%
    // 255 = 100%
    
    void setup() {
      Serial.begin(9600); // nastaveni seriove komunikace
      pinMode(LED, OUTPUT); // nastaveni pinu jako vystup
    }
    
    void loop() {
      // vypis na seriovy port
      Serial.print(hour()); // hodiny
      Serial.print(":"); 
      Serial.print(minute()); // minuty
      Serial.print(":"); 
      Serial.print(second()); // sekundy
      Serial.print("   Jas:");
      Serial.println(jas); // aktualni jas
      // kdyz je 23 hodin je treba porovnavat hodnoty cislice 23 a 0
      if(hour() == 23) {
        // nastav jas podle aktualni minuty a hodiny 
        jas = map(minute(), 0, 59, casovac[23], casovac[0]);
        // ochrana proti hazardnimu stavu prepoctu
        jas = constrain(jas, casovac[23], casovac[0]);
      } else {
        // jinak porovnej hodnoty cilice pole = aktualni hodina a vedlejsi cislice
        jas = map(minute(), 0, 59, casovac[hour()], casovac[hour()+1]);
        // ochrana proti hazardnimu stavu prepoctu
        jas = constrain(jas, casovac[hour()], casovac[hour()+1]);
      }
      jas = constrain(jas, 0, 255); // omezeni rozsahu regulace
      analogWrite(LED, jas); // nastav aktualni intenzitu  
      delay(1000); // pauza 1s
    }
    odpověď na: Osvětlení akvaria Led pásky #7235
    posjirka
    Účastník

    podle mých výpočtu by to mělo resetovat po 21 minutách 🙂

    Když se na ten program podívaáš, tak ve smyčce ( loop() ) ti neustále :
    – nastavuje vstup „svetlo1“ jako výstupní (pinmode)
    – pak ti zobrazí aktuální čas (displayTime)
    – počká 1 s
    – přečte si aktuální čas (readDS3231time)
    – zjistí jestli není náhodou den (if (h>=8 ….)
    – spustí sekvenci rozsvícení (podmíněnou dalšími faktory) a ta trvá 255 kroku * 5s zpoždění = cca 21minut.
    ….

    po tu dobu rozsvěcení vlastně cykluje sám v sobě a tím pádem nezobrazuje na „serialmonitor“ žádné hodnoty. jestli to chceš vypisovat tak musíš příkaz „displayTime();“ dát i do symček „for“.

    proč se ti resetuje / znovu načítá nevím, nekde je chybka v proměnných „den“, „sviti“, „brightness“. Když tak na to koukám, tak on ti vlastně nikdy nedojede v rozsvícení na „brightness = 255“, protože ve smyčce „for“ mu dáváš podmínku „brightness < 255“. Tzn. že ti skončí ve 254 kroku 🙂 .

    Já bych celou tuto situaci řešil asi trochu jinak. Na počátku bych si nadefinoval pole o 24 pozicích (0-23 hodin) do nich bych si zapsal jakou intenzitu mají mít v nulté minutě a pomocí fuknce „map()“ bych plynule přecházel mezi jednotlivými hodnotami.
    Ano trvalo by to 1 hodinu než by se rozsvítilo světlo naplno/zhasnulo ale bylo by to mnohem čistší řešení …

    nemám moc rád tyhle vnořené podmínky, člověk se v nich ztrácí.

    odpověď na: Osvětlení akvaria Led pásky #7229
    posjirka
    Účastník

    tak ti nevím. V popsiu je Battery input takže bych to bral jako vstup.
    Pak jsem našel v datasheetu toto:
    The device is UL recognized to ensure against reverse charging when used with a primary lithium battery.

    no a na netu jsou i moduly s baterii cr2030:

    vzheldem k tomu, že to má pouze 1 vstup a nikde nabijecí pin nevidím … chtělo by to sehnat schéma toho tvého modulu.

    ještě mě napadlo: to že tam je baterie napevno (tzn. připájena na páskách, neznamená, že je nabijecí….

    odpověď na: Osvětlení akvaria Led pásky #7220
    posjirka
    Účastník

    nechápu ???? Myslíš jako výměnu baterie nebo použití baterie jako primárního zdroje pro apliakci?

    odpověď na: Problém s připojením arduino klon CH340G #7216
    posjirka
    Účastník

    zřejmě čínská pomsta zahnívajícímu západnímu kapitalusmu 🙂
    Ne vážně, to se občas stane a je super že jsi na to přišel sám.
    Chybami se člověk učí. Hlavně že to funguje.

    odpověď na: Problém s připojením arduino klon CH340G #7211
    posjirka
    Účastník

    zkus to na jiném PC a pak zkus jiný kus arduina. CH340 mohla odejít do věčných digitálních lovišť. Kdyby odešel tak Arduino nemusíš vyhazovat. Můžeš jej naprogramovat přes ICSP port a použit v nějáké aplikaci.
    Napadá mě ještě chybný konektor (zapatlané piny na konektoru), vadný krystal pro Ch340g a pod.
    Když to Arduino zapojíš do USB portu tak předpokládám, že LED POWER svítí a LED „L“ na 13 pinu bliká (defaultní program blik). Pokud jo tak Arduino funguje a je to chyba jen komunikace. My máme 3 klony s tímto čipem a všechny fungují ….

    odpověď na: Osvětlení akvaria Led pásky #7210
    posjirka
    Účastník

    a co když zkusíš tenhle exampl.

    Tutoriál – užívání hodin reálného času DS1307 a DS3231 s Arduinem

    Ten funguje? Ten projekt osvětlení akvaria v podstatě jen rozšiřuje tento tutorial.

    Pak mě napadá jen pár věcí proč to nefunguje:
    – špatné zapojení (např prohození SDA a SCK)
    – špatný modul/čip DS3231
    – chybná adresa modulu (na modulu se dá nastavit tak můžeš mít nastavenou jinou než defaultní)

    DS3231 bohužel doma nemám a nedostává se mi času s tím experimentovat ….

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