Vojtěch Vosáhlo
Vytvořené odpovědi
-
AutorPříspěvky
-
Vojtěch VosáhloÚčastník
Pauza by se přidávala před nastavováním pinu na low
Tzn: `void detekce(){
delay(XY); // sem můžete přidat čas mezi 1 na ir a přehráváním
digitalWrite(prehravaciPin, LOW);
delay(100); //čas na který je pin spuštěný, zde přidáváte
digitalWrite(prehravaciPin, HIGH);
}`
Chcete tedy něco jako po přehrání musí být pauza 30s a pak až se může zapnout znova? Kapku mi to nedochází 😀Vojtěch VosáhloÚčastníkVy jste tedy zkoušel jak A0 tak D0. D0 by se měl dát nastavovat poťákem, tím nastavíte hranici kdy je 1 a kdy 0 zatímco A0 se bude měnit dynamicky podle vzdálenosti.
Mimochodem do attachInterrupt má jít b0 a né jen 0 jak je nahoře v kódu ale to jste zjistil pokud to funguje.Možná musí být větší časová prodleva mezi 1 a 0 na pinu přehrávače a taky by se nejspíš hodilo ještě trošku času po nastavení pinu na 1.
Hodně tipů ale kdo ví…Vojtěch VosáhloÚčastníkTo fakt nevím ale CH340 není v originálních arduinech pokud vím. To by teda vysvětlovalo jak to pozná (nejspíš). Jako se v arduino IDE u COM portu ukáže třeba Arduino UNO když máte originál ale když kopii tak je tam pouze název portu. Alespoň mě to takhle funguje. Na druhou stranu Makelangelo je open source ne? Kdyby někdo uměl s javou asi by nemuselo být tak komplikované ten block odstranit.
Vojtěch VosáhloÚčastníkPodle pár článků má Makelangelo ochranu proti klonům. Tzn neukáže vám arduino pokud není originální takže originál by to měla si vyřešit…
Vojtěch VosáhloÚčastníkAhoj
Kdybych nenašel vůbec nic na internetu o podobném problému, zkusil bych takovou divno věc. Stáhnul bych nějakej program pro emulaci COM portů a zkusil bych vytvořit virtuální COM port který by přeposílal data na port kde je arduino. Třeba by Makelangelo tenhle port vidělo. Ale to je jen tip, s macem jsem nikdy nedělal a nevím co by se mohlo pokazit…Vojtěch VosáhloÚčastníkTo vypisování by nemělo být potřeba měnit, v té verzi co jsem posílal je to univerzální funkce. Pokud není zapnutý coolon ani dryon tak by se měla vypsat ta teplota na kterou topíte. Tzn funkce by měla vypadat takto:
else if (CILOVATEPLOTA > 0 && !COOLON && !DRYON) { /// Pokud je cilova teplota > 0 a nebezi zadny z ostatnich programu, vypiseme cilovou teplotu
client.println(„<span style=’color:red; font-weight:bold;‘>Topim na “ + String(CILOVATEPLOTA) + „*C</span></font>“);
}na ní nic neměňte, stačí když bude existovat jednou a to tam kde byla. Pokud to nebude vypisovat nic, dejte tam toto:
else if (CILOVATEPLOTA > 0) { /// Pokud je cilova teplota > 0 a nebezi zadny z ostatnich programu, vypiseme cilovou teplotu
client.println(„<span style=’color:red; font-weight:bold;‘>Topim na “ + String(CILOVATEPLOTA) + „*C</span></font>“);
}Kódování asi UTF-8 ale počíst si můžete zde: https://www.jakpsatweb.cz/cestina.html
Vojtěch VosáhloÚčastníkJá se ze sebe asi klepnu 😀 zase ta závorka. Pokud nebude fungovat tohle tak musíme vymyslet jiný způsob ať tu nezaspamujem celý fórum.
Attachments:
Vojtěch VosáhloÚčastníkZkuste tohle, byla tam špatně závorka… Musíte si zase pozměnit proměnné atd…
Attachments:
Vojtěch VosáhloÚčastníkDnes bohužel moc času nemám, mohl by jste hodit screenshot stránky?
Vojtěch VosáhloÚčastníkOops,musí tam být String(CILOVATEPLOTA) místo té teploty a opět na konci chybí }
Vojtěch VosáhloÚčastníkKód vracím, doufám že funkční.
Všechny věci co jsem přidal jsou vyznačeny dlouhou řadou //// aby jste se zorientovalJediné co by mělo být potřeba přidávat při přidávání dalších teplot by měli být tyto části:
// kod ovladače pro Topím na 19 stupnu unsigned TEPLOTAXY[] = {8800,4350, 550,500, 600,500, 550,500, 550,500, 600,500, 550,500, 600,500, 550,500, 550,1600, 600,1600, 550,1600, 550,1600, 550,1600, 600,1600, 550,500, 550,1600, 600,500, 550,500, 550,500, 600,500, 550,1600, 600,500, 550,500, 550,500, 600,1600, 550,1600, 550,1600, 550,1600, 600,500, 550,1600, 550,1600, 600,1600, 550 };
Zde stačí vždy jen změnit název a IR kódy
else if (readString.indexOf("L=Z") > 0) { if(CILOVATEPLOTA != XY){ /// Pokud teplota kterou chceme zapnou jeste neni zapnuta => pustime dal irsend.sendRaw(TEPLOTAXY, sizeof(TEPLOTAXY) / sizeof(int), khz); CILOVATEPLOTA = XY; ///Nastavime promenne aby se nepodelala orig cast programu a cilovateplota na teplotu kterou jsem nastavili COOLON = false; DRYON = false; }
Tahle funkce musí existovat pro každou tepotu, kolik teplot, tolik těchto funkcí. Jediné co je potřeba změnit tady je TEPLOTAXY za název pole ve kterém jsou uloženy kódy pro danou teplotu a do proměnné CILOVATEPLOTA zapisovat hodnotu teploty kterou jste nastavil.Důležité je nastavit čemu se rovná L, koukal jsem že už tam máte vložených pár teplot takže pro každou z nich je L jiné… Jak máte napsáno L=4 by mělo topit na 20*C a proto funkci upravíte tak aby se spustila když L=4 tzn nahradíte Z tímto číslem a aby vysílala vše správně.
Zbytek by měl být připravený na více teplot a měl by vypisovat na webu danou teplotu na kterou je nastaveno.
PS: Píšu měl protože nemám na čem to otestovat takže pište jakýkoliv feedback
Attachments:
Vojtěch VosáhloÚčastníkNepoužíval jste náhodou v poslední době s arduinem processing nebo jiný ser. monitor než ten od arduina?
Vojtěch VosáhloÚčastníkSorry za menší odmlčení.
1 věc, TEPLOTA je hen obrazná, musíte místo ní deklarovat proměnnou ve které budou ir kódy pro jednu z teplot, jako u coolon atd.
2 jak to píše očekává to závorku takže ta někde chybí, nejspíš právě uplně na konci ale musel bych vidět kód kam už jste vložil teplotu.
O knihovnách už tu napsal Nasranek
Vojtěch VosáhloÚčastníkJak to píše je obsazený com port. Neinstaloval jste v nedávné době něco co ba s porty pracovalo? Zkoušel jste IDE spustit jako admin?
Vojtěch VosáhloÚčastníkPlně souhlasím, uno mám sice originální ale z číny mám několikrát Nano a funguje excelentně. Dokonce jsem nedávno kupoval i Atmega88 procesory což je trošku risk. Naštěstí fungují a 5€ za 10ks je krásná cena… 😀
-
AutorPříspěvky