GabrielM
Vytvořené odpovědi
-
AutorPříspěvky
-
Vojtěch Vosáhlo
ÚčastníkJá bych použil nějaké optické hradlo a takové to kolečko kde se střídá černá a průhledná. Vzor se dá sehnat na internetu a na laserovce vytisknout na průhlednou fólii. Hradlo můžete koupit a nebo i s kolečkem vytáhnout ze staré tiskárny. Asi by to mohlo fungovat dobře, nemusíte natahovat kablíky pro koncáky a můžete použít nějaký obyčejný motor. Pak se to dá ovládat prakticky jak servo.
Držim palceDavidTor
ÚčastníkAVR studio jsem zkoušel, bohužel mi přišlo moc těžkopádné. Je postavené na VS.
IDE arduino je nepoužitelné pro velké projekty. Aspoň pro mě. Mám kód který má už cca 11000 řádků. Neumím si představit jak bych to v něm dělal. Využívám také debuger který je součástí Visual Micro.posjirka
Účastníka co klasické AVR studio ?
Já teda používám Arduino IDE a jsem spokojený. Zatím jsem neměl důvod hledat něco jiného. Pro vyšší programovací jazky používám Visual Studio nebo Sharp Develop (VB.net nebo C#) ale v Arduino jsem pokojený s klasikou.Ladis_Kv
Účastníkjo servo by bylo lepší, ale nenašel jsem které by mělo průměr 25mm a dostatečný výkon aby to s tím otočilo.
Zatím jsem takový nenašel.Jen motor DC s převodovkou.
Ten motor by měl být schovaný v žaluzii.
No zkusím se s tím nějak poprat.
Díkypetan
ÚčastníkČemu nerozumíš? Zkus si projít kód řádek po řádku. Schválně jsem ho rozdělil na jednotlivý funkce, aby si mohl každou pochopit zvlášť. Navíc rozdělení na jednotlivý funkce (procedury) usnadňuje úpravy v programu.
Nebo zkus servo. To se umí jednoduchým příkazem otočit o 180°. Ráno nastavíš, aby se servo otočilo např. na 0° a večer na 180°. Servo má v sobě elektroniku, která si sama měří úhel, takže opravdu jenom pošleš hodnotu a o nic jinýho se nestaráš.
Pro servo by to mohlo vypadat takhle:
#include <Servo.h> Servo servopohon; //instance objektu (to neřeš) void setup() { servopohon.attach(8); //servo připojeno na pinu 8 } void loop() { //opakuj stále dokola intenzita = analogRead(A0); //načti intenzitu osvětlení if (intenzita > 500){ //pokud je tma servopohon.write(0); // nastavit úhel na 0 } else{ //pokud není tma servopohon.write(180); // nastavit úhel na 180 } }
Ladis_Kv
ÚčastníkNo trochu v tom bádám…a nevím..
asi to nebude fungovat,nebo tomu nějak nerozumím.
Budu mít na dvou digi výstupech zapojen budič pro morky.A tam se bude otáčet napětí.
Nemám koncáky a nic jiného.Chci to zkusit časově.Pokud to půjde.A chci jen zavřít a otevřít žaluzie -ne vytahovat je nahoru a dolu.
Prvně jsem tam chtěl dát krokový motor,ale nenašel jsem vhodný typ(jak výkonem,tak velikosti).
Máte někdo jiné nápady,které by mi pomohly?Děkuji
Budu rád za jakoukoli radu k danému problému.Ladis_Kv
ÚčastníkDíky moc,
je vidět že to dost umíte.
Já to promyslím vše,dopíšu jak má být a vyzkouším.
Pak se ozvu a napíšu jak to dopadlo.
p.s. jsem trochu pomalejší… 😀
ještě jednou díky
L.petan
Účastníkvoid loop(){ if (intenzita > 500){ //pokud je tma if(otevreno){ //pokud je tma (z předchozí podmínky) a žaluzky jsou otevřeny zavri(); } } else{ //pokud není tma if (!otevreno){ //pokud není tma (z předchozí podmínky else) a žaluzie jsou zavřeny otevri(); } } } void zavri(){ //zde napsat příkazy k zavření žaluzií (zapnutí výstupů apod) delay(5000); otevreno = false; vypni(); } void otevri(){ //zde napsat příkazy k otevření žaluzií (zapnutí výstupů apod) delay(5000); otevreno = true; vypni(); } void vypni(){ //příkazy k vypnutí pohonu žaluzií }
Asi takhle bych to viděl… Psal jsem to „poslepu“, ale mělo by to fungovat. Možná budou šatně velikosti písmen.
Ladis_Kv
ÚčastníkNa pinech 8 a 9 bude dc motorek,přes budič L298N.
A ten analog je A0.
Když se setmí tak hodnota zůstane (nad 500) ,takže potřebuji aby to jednou seplo na určitou dobu a pak se vlastně čeká až na ráno kdy se hodnota změní pod 500.Zbyšek Voda
ÚčastníkCo je připojeno na pinech 8 a 9?
Zkusím vás nasměrovat 🙂 Přidejte si ještě jednu proměnnou, ve které budete uchovávat, jestli je žaluzie zatažená, nebo roztažená.
Potom budete zkoumat:
-je hodnota nad určitou hodnotu a je roztaženo? -> zatáhni
-je hodnota pod určitou hodnotu a je zataženo? -> roztáhniTaké nesmíte zapomenout nastavit aktuální hodnotu proměnné po zatažení či roztažení.
PS. Asi v kódu myslíte analogový pin A0, ne jenom 0 🙂
posjirka
Účastníkovládání j epomocí smyčky v zemi, kam se pouští cca 34kHz. sekačka má 2 snímací cívky, které vyhodnocují zda nejsou na kraji a pokud ano tak otočísekačku.
co se týká desky tak tam první, která je i popsaná obsahuje v podstatě jen solární nabiječku a 2 filtry pro detekci té zemní smyčky.
Bohužel tam není popsána ta druhá deska, která ovládá motory.
Je to vcelku slušně navržené a i když mi některé hodnoty nevycházejí musím uznat, že je to slušná práce od původního tvůrce.
Co mi nevychází je , že baterie má kapacitu 2,1Ah, odběr je cca 2A, panel dobijí v optimálním případě cca 0,6A a má posekat zahradu 500m2 za 3 hodiny.
Když bude baterie plně nabitá, tak vydrží max 1 hod, při průběžném dobijení je to cca 1,5A a to bude totálně vyždímaná a bude se snižovat životnost baterie.
Ten nabijecí ostrov … nevím. Musel bys rozšířit i vybavení nebo program o návrat na původní pozici, kde skončil. jinak hrozí, že budeš sekat neustále tu samou část.
Fotovoltaický panel a průběžné dobijení mi přijde jako velmi dobré řešení.
Moc by se mi něco takového líbilo jen toho času se nedostává … počkám si na nový domeček a volný čas 🙂DavidTor
ÚčastníkBohužel jsem zjistil, že při kompilaci kódu který měl cca 160kB,to Code:Block nějak nezvládal. Musel jsem hledat náhradu. Přešel jsem na Visual Studio s doplňkem Visual Micro. To co píšeš by měl umět.
Vojtěch Vosáhlo
ÚčastníkZ mojeho pohledu tomu ten panel spíš přidává na ceně než cokoliv jiného 😉 myslím že když se to slušně navrhne tak by to na jedno nabití mohlo střední zahradu posekat a pak si to pro šťávu kdyžtak zajede jak říkáte. Můžu se zeptat jak budete sekačce vytyčovat ůzemí na kterém jezdit?
Držím palce ať uspějete.
Vojtap.maly
ÚčastníkJá právě hledám nějaký šikovný simulátor. Vyzkoušel jsem Virtonics, velice jednoduché a intuitivní, na první pohled je jasné co s tím. Bohužel ale, plné bugů. Code:Blocks mám nainstalováno, ale netuším co s tím. Chci jen nahrát jednoduchý kód pro Nano, spustit jej, a pak vidět „obrázek“ modulu, kde budu vidět úrovně výstupních pinů, a moci měnit hodnoty na vstupních pinech. Nic víc. Je někde pro Code:Block nějaký how-to-begin návod, nejlépe ve stylu kuchařky (step by step)?
Díky, Petrkamaov
ÚčastníkDěkuji za info, myslel jsem si to.
Lepší by bylo, vytvořit fotovolt ostrov a sekačka ať zajíždí pro šťávu.
Uvidím a díky za názor!posjirka
Účastníkdíky za doplnění …
petan
ÚčastníkJumperem se na desce spouští diagnostika (odesílá se stav zařízení na sérivou linku) – propojením dvou prostředních se na pin A2 přivede log. 1. jinak tam pull-down rezistor udržuje log. 0. Ostatní jumpery jsou nezapojeny.
LED je dodělávána dodatečně. Je připojena na pin č. 11. Tlačítko má v sobě LED a předřadný odpor na 12 V. Já to živím 5V přímo z Arduina. Svit je dostatečný a odměr minimální.
Schémata aktualizuji a až plně odladím program, tak na stránku asi umístím i ten. Zatím mě tedy nenapadá co na něm odlaďovat. Funguje, takže to asi jenom trochu „učešu“ 🙂
Šasi to už má. Na videu je vidět, že je to zabudováno do plechové krabice – nějaký starý rozvaděč. Půjde to jako celek zabudovat do linky, takže pro běžného smrtelníka by měla být viditelná pouze výčepní konzolka.
Zbyšek Voda
ÚčastníkDobrý den, je to krásná práce 🙂
Je super, když je projekt i vizuálně zajímavý a to se povedlo! 🙂
Plánujete i nějakou šasi?posjirka
Účastníkzajímavý projekt. Jen mě zajímají 2 věci, které jsem nenašel v popisu:
1, Na desce vpravo dole jsou napájeny pin, ale nenašel jsem nikde jejich zapojení, je to pro výběr nějákých přednast. režimů?
2, kde je výstup na tu LED diodu u ovl. panelů? Je to pralalelně ke spínači?Jinak klobouk dolu ….
Vojtěch Vosáhlo
ÚčastníkDobrý den,
ta deska je asi pouze jejich výrobek takže bych předpokládal že se dá koupit pouze u nich…
Kdyby jste nechtěl kupovat přímo jejich shield, dalo by se využít pár modulů k arduinu a cena by byla nejspíše mnohem nižší. Nebo si to postavit sám. O lepším návodu bohužel nevím ale i s tímhle si můžete vyhrát.
Držím palceLuke_CZ
ÚčastníkTo, co popisuješ, lze vyřešit:
a, rychlejším komunikačním protokolem např. SPI namísto I2C
b, optimalizací programu
c, rychlejším HW
Problém může být i zápisem na SD, Arduino v tomhle není žádný Ferrari.Na okraj, co potřebuješ tak často sledovat, respektive logovat?
bot
ÚčastníkDěkuji za Vaše rady.
Pomocí těchto návodů jsem to již předtím zprovoznil.
Teď bych si chtěl napsat něco svého jednoduchého, jelikož to poté chci přepsat do Cečka pro attiny13a. Potřebuji spínat vysílačem 3 nezávislé relé(každé bude mít svůj přijímač). Tedy dle sepnutého tlačítka se odešle patřičný paket, který dešifruje jeden zvolený přijímač (jedno relé). Vesměs jsem našel i hotové řešení a odzkoušené na attiny13a, ale mě zcela nefunguje korektně (vysílač musím držet v prstech ve správné poloze, až poté začne vysílat)
Co jsem tak zkoušel, tak je problém s funkcí delay(). Po odstranění, se již arduino „nezasekne“, ale i tak se chová divně. Nehledě na to, že by měla fungovat bez problému pokud se nepoužije přímo v ISR.
Zkoušel jsem vypnout i přerušení poté co přijme správný packet(„10011100“) a opět ho poté zapnout. To bohužel také nezabralo. Zdá se mi, že je problém s časovači, nejspíše někde přetečou, a proto se arduino chová divně(náhodně), ale vůbec se v tom nevyznám a nevím, kde může být chyba.
Vysílač je dle mě správný, oba signály (z vysílače i přijímače) sleduji na osciloskopu – paket se vždy odešle a přijme správně, ale problém je se zpracováním(u přijímače).Vojtěch Vosáhlo
ÚčastníkTak ať se zadaří 😉
Pulec
ÚčastníkČekám ještě na modul mp3,tak to pak vše odskouším.Moc vám děkuji hlavně za kód.Určitě se pak ozvu jak jsem dopadl.Moc moc zatím díky
Vojtěch Vosáhlo
ÚčastníkDobře. Pokud jsem to správně pochopil tak ten audio modul zahraje hudbu když dáte jeden z A pinů na zem (podle čísel pinů vybírá skladbu). Máte to ozkoušené? Pokud je to tak jak píšu, měl by fungovat kód dole. D0 toho senzoru jde na pin 2 arduina a nejspíš si budete muset pohrát s poťákem na senzoru aby jste nastavil detekční vzdálenost.
Držím palce.const int d0 = 2; // Pokud chcete používat přerušení musí to být pin 2 nebo 3 (na Unu, nanu a mini) const int prehravaciPin = X; //Pin připojený na spouštění toho songu, pokud správně chápu tak A1 - A10 na tom modulu void setup() { pinMode(d0, INPUT); pinMode(prehravaciPin, OUTPUT); digitalWrite(prehravaciPin, HIGH); attachInterrupt(0, detekce, FALLING); } void loop() { } void detekce(){ digitalWrite(prehravaciPin, LOW); delay(100); digitalWrite(prehravaciPin, HIGH); }
Pulec
ÚčastníkSenzor je to tento http://navody.arduino-shop.cz/navody-k-produktum/infracerveny-opticky-senzor.html
A mp3 tady http://www.banggood.com/Voice-Playback-Module-Board-MP3-Reminder-For-Arduino-p-1007593.html
Senzor funguje na přerušení překážkou tedy v mém případě mašinkou.Vojtěch Vosáhlo
ÚčastníkDobrý den,
nejlepší by bylo nějaké info, jestli ho sem můžete napsat. Důležitá je informace jak funguje váš senzor. Je snímač fotorezistor / fototranzistor nebo ještě něco jiného? A info o mp3 modulu by se taky hodilo. Pak to dáme dohromady.poprad
ÚčastníkUpravil jsem
private: byte Stav; static void Privatna(); ....... void Pokus::Verejna() { attachInterrupt(0,Privatna,CHANGE); }
a kompilace mi vyšla. Je toto řešením problému?
poprad
ÚčastníkPřiznám se, že jsem tomu neporozuměl. Ani ten příklad s class Foo nefunguje.
Zbyšek Voda
ÚčastníkDobrý den, problém je v tom, že attachInterrupt očekává jako druhý parametr referenci na funkci bez parametru. Metody objektů jsou ale implementovány tak, že jako první parametr mají „skrytě“ referenci na třídu, ke které patří. To vám vlastně říká i chybová hláška:
cannot convert 'Pokus::Privatna' from type 'void (Pokus::)()' to type 'void (*)()'
Problém řeší i s navrženými řešeními zde:
-
AutorPříspěvky