nicolasoto
Vytvořené odpovědi
-
AutorPříspěvky
-
marvik.jiri
ÚčastníkZkusil jsem udělat nástřel struktury programu.
int rozdilRezistoru(){
int R1 = analogRead(pinR1); //Přečtu napětí na prvním fotorezistoru
int R2 = analogRead(pinR2); //Přečtu napětí na druhém fotorezistoru
int rozdil = R1 – R2; //Rozdíl napětí
return rozdil; //Vrátím rozdíl napětí jako hodnotuvoid setup() {
pinMode(11, OUTPUT); //nastav pin 11 jako vystup = motor doprava – solar natáčí k východu
pinMode(12, OUTPUT); //nastav pin 12 jako vystup = motor doleva – solar natáčí k západu
pinMode(10, INPUT); //nastav pin 10 jako vstup = koncový spínač východ
pinMode(9, INPUT); //nastav pin 9 jako vstup = koncový spínač západ
pinMode(8, OUTPUT); //nastav pin 8 jako vstup = rele zapínání filtrace a transformátoru po motor solárního panelu
}pokud na teplotním snímači ovzduší je hodnota menší než 25 = zastav program
pokud na teplotním snímači ovzduší je hodnota větší než 25 = pokračuj dále // například 25°C
digitalWrite (8,HIGH) // zapne filtraci a napájení transformátoru (půjde zapínat i samostatně přes vypínač)
pokud (hodnota světla menší na „pinR1“ než 10 = nedělej nic //hodnota je informativní
pokud (hodnota světla větší na „pinR1“ než 10 = otáčej motor doprava až na koncový spínač K1 digitalWrite (11,true) //číslo pinu je informativní
pokud sepnuto pinK1 = digitalWrite(11,LOW); //na pinu 11 vypni proud = motor se zastavý
pokud na pinu R2 bude větší hodnota než na R1 = digitalWrite (12,true) – /* tady vycházím z toho že pin R1 je více na východ a R2 na západní stranu
je nutné určit rozsah (od – do) jalové hodnoty mezi R1 a R2, aby nedocházelo k tomu, že se bude chtít natáčet každých pár minut o milimetry.
Ještě k tomu snímámí hodnot z fotorezistorů by se měla dát určitá časová prodleva – třeba 30s z důvodu kdy půjde mrak a zastíní jeden z nich
*/
pokud sepnuto pinK2 digitalWrite(12,LOW); //na pinu 12 vypni proud = motor se zastavý
pokud na teplotním snímači vody je více jak 28°C = digitalWrite (12,true) až na koncový spínač K2 /* bude se snažit odstínit panel ze sluníčka
Ono by to chtělo zase nějak zprůměrovat a k večeru přetočit na východní stranu aby později večer a při západu na panel nesvítilo sluníčko, ale to
by se teď asi nemuselo řešit. To by se dalo až úplně nakonec v horším případě vynechat zcela. Tohle měli řešit ty další dva pevné fotorezistory*/
Pokud na teplotním snímači ovzduší menší teplota než na sníémači vody zastav filtraci digitalWrite (8, LOW)petan
ÚčastníkÚplně nejjednodušejc by to šlo udělat takhle:
Je tam delay, takže na stisk tlačítka to bude reagovat vždy až po zhasnutí výstupu. Ale to při krátkých časech nemá vliv.int time1 = 10; //čas svícení (počáteční nastavení 10 ms) int time2 = 10; //čas nesvícení (počáteční nastavení 10 ms) void setup() { pinMode (5, INPUT); //vstup 1 pinMode (6, INPUT); //vstup 2 pinMode (7, INPUT); //vstup 3 pinMode (8, INPUT); //vstup a tak dále pinMode (13, OUTPUT); //výstup } void loop() { //tady se řeší rozřazování if digitalRead(5){ //stisknuto tlačítko 1 //nastavit parametry 1 time1 = 10; time2 = 10; } if digitalRead(6){ //stisknuto tlačítko 2 //nastavit parametry 2 time1 = 20; time2 = 20; } //tady se řeší blikání digitalWrite(13, HIGH); delay(time1); digitalWrite(13, LOW); delay(time2); }
marvik.jiri
ÚčastníkNo… když to řeknu úsměvně tak jsem panic 🙂
S arduinem jsem začal cca před 2-mi měsíci a dostanu se k pc abych měl čas programovat jen po večerech a to jen někdy. Zatím jsem si hrál převážně s led. Dělal jsem synovi světelnou semafor pro auta s přechodem pro chodce. Ono se toho na Unu moc nedá udělat, když je k dispozici jen nějakých 18pinů. Toto bylo na 10 pinů. Dále jsem zkoušel infra přijímač s výpisem kódu z dálkového ovladače přes sériovou linku a následně jsem se snažil doprogramovat záměnu kódu a vyslání vysílačem jiný. Jednoduše řečeno pokud arduino přijme určitý kod (třeba ze starého ovladače od videorekorderu tak vyšle jiný kod, který přepne na televizi třeba kanál nebo zesílí zvuk. Má to být něco jako univerzální ovladač. Bohužel jsem to nedodělal. Dokážu pouze ovládat ledky na pinech dálkovým ovladačem.Ztroskotal jsem na zkušenostech. Použil jsem jiné programy, které jsem se snažil zkompilovat do jednoho.
Můj poslední výtvor je plně funkční mechanická přístrojová deska z auta kterou ovládá arduino a mám ji ke hře Euro Truck Simulátor. Zde jsem použil kód os Silase, kterou následně ještě někdo upravil a vytvořil plugin přímo pro hru. Zde jsem částečně upravil a částečně doprogramoval kód. Jelikož jsem použil místo Megy Uno a navíc místo led displeje 1602 připojenou přes ISP převodník (snad to píši správně).Vyhledávám podobné aplikace tomu čeho chci dosáhnout a snažím si je předělat nebo doprogramovat. Takže zkušeností jen málo… 🙁
Vojtěch Vosáhlo
ÚčastníkJá osobně bych u takového projektu volil DS18B20, dají se najít i v hezkých vodotěsných obalech a nikdy s nimy nebyl problém. Pojďme tedy na takovou reprezentaci programu slovy:
//definice pinů a proměnných smyčka{ pokud (cas = den){ pokud(chceme ohrivat){ //třeba 10, chce to nějaký prostor, testovat jestli se = 0 by nemělo význam dokud (rozdil fotorezistoru < 10){ otacejMotor(strana = x); //Otáčej motor na stranu kde je na fotor. víc světla } }nebo pokud(nechceme ohrivat){ otacejMotor(strana = x); //Otáčej motor tak aby na pannel svítilo co nejmíň světla - nebo nastav panel na jednu z konečných pozic } }pokud (cas = noc); // Nedelej nic }
Je to super zjednodušené ale pomůže to pro představu. Osobně bych začal „kódit“ trochu od prostředka. Pojďme zkusit třeba zrealizovat funkci co přečte rozdíl mezi fotorezistory.
int rozdilRezistoru(){ int R1 = analogRead(pinR1); //Přečtu napětí na prvním fotorezistoru int R2 = analogRead(pinR2); //Přečtu napětí na druhém fotorezistoru int rozdil = R1 - R2; //Rozdíl napětí return rozdil; //Vrátím rozdíl napětí jako hodnotu }
Tahle funkce vám jednoduše vrátí rozdíl mezi senzory. Ale pozor, není to hodnota napětí. analogRead(); totiž vrací hodnoty 0-1023 (10bit) které jsou vlastně namapované na referenci. Tzn. s referencí 5V znamená hodnota 0 0V a 1023 5V. Je to zatím srozumitelné? Můžete začít stavět základní strukturu programu podle toho co jsem napsal výše a pak přidávat funkce které vám ulehčí práci.
Ptejte se na vše co vám přijde na mysl. Taky si kdyžtak řekněte pokud popisuju něco co jsou pro vás už banálnosti, opravdu nevím jak jste na tom 🙂
marvik.jiri
ÚčastníkDobrý den Vojto,
děkuji za reakci a první připomínky a také za přijetí.
Hardwarově to vymyšlené mám. Mechanika je brnkačka 🙂
Již se projevuje má neznalost a málo zkušeností. V žádném případě netrvám na analogovém vstupu. Chtěl bych použít teplotní čidla například DS18B20. Jsou vodotěsná takže bych s jedním mohl měřit i teplotu vody.Samozřejmě před namontováním a zkušebním provoze program musím doladit na parapetu a výpisem na sériovou linku a s externím teploměrem vedle. Naměřené hodnoty pak zapsat do programu, tak aby fungoval dle představ a ne třeba o pár stupňů celsia jinak. Takjisto zkalibrovat světelné podmínky při použití fotodporů.
Použití 4 fotorezistorů s nichž jsou dva pevné jsem volil z toho důvodu, že by program hned věděl kde zhruba je a jakým směrem má natočit solární panel aby našel slunce. Fungovalo by to na principu rozdílu hodnot na fotorezistorech a zvolení směru natočení k tomu, který snímá větší intenzitu světla. Dále by fungovalo ovládání již jen podle těch dvou pohyblivých na panelu. Samozřejmě by vůbec nevadilo aplikovat pouze dva fotorezistory a napsat program jak uvádíte Vy. Funkce je naprosto stejná a funkční.
Vlastně máte pravdu. Slunce vychází pořád na stejné straně a tak by program věděl jakým směrem se má točit po zapnutí 😀
Zapomněl jsem uvést, že bych zařízení na noc nevypínal. Bylo by v provozu non-stop přes sezónu. Ideálně v programu dát podmínku při snížení intenzity světla zastavit program a pokračovat až ráno začne svítat znovu jej obnovit a natočit na východní stranu.Použití koncových spínačů mám v plánu jen jsem nechtěl v prvním příspěvku rozepisovat.
Vlastně tam budou na každé straně dva. Ideálně jeden pro impuls pro Arduino a druhý jako bezpečnostní, který odstaví napájení motoru kdyby motor nezastavil.Jirka
Vojtěch Vosáhlo
ÚčastníkMáte to super vymyšlené a to je hodně důležité u jakéhokoliv projektu. Zaprvé máte už nějak navržené schéma? Většinou je lepší nejdříve dořešit hardware a pak až software. Taky by mě zajímalo pár věcí ohledně vašich rozhodnutí. Psal jste o teplotních čidlech. Proč byste rád použil analogová? Nic proti nim nemám ale nevím jak to bude s přesností při použití ADC (analogově digitální převodník) u arduina. Nevím jestli bude tak jednoduché zjistit rozdíl mezi 25 a 28 stupni (u některých je rozdíl třeba 10mV na stupeň celsia), pak by možná bylo lepší něco digitálního nebo použít externí napěťovou referenci (externí „zdroj“ napětí s minimálním šumem se kterým se potom porovnává napětí na analogových pinech). Bohužel nemluvím z vlastních zkušeností tak mě tu snad opraví někdo kdo analogy používá pokud melu nesmysly.
Fotorezistory můžete taky použít jen 2 místo 4. Panel by mohl při spuštění programu „proskenovat“ oblohu a zjistit kde slunce je a podle toho určit jestli je ráno nebo večer. Možná máte jiný důvod pro používání i těch pevně přichycených fotorezistorů ale já ho nevidím.
Určitě bych počítal s použitím limitových spínačů které vypnou motory když se panel otočí na určitou koncovou pozici. Ušetří vám to hodně starostí a zabere jen 2 piny.
Co se týče kódu, řešil bych to teprv až budete mít opravdu vymyšlený hardware. Pokud to ale chcete přesně tak jak jste napsal tak můžem začít makat na prográmku 🙂
Mimo to vítejte, super že se to tu tak rozrůstá
Vojta
Vojtěch Vosáhlo
ÚčastníkNašel jsem je na PTshop.cz, nemám žádný zkušeností ale mají je skladem.
https://www.ptshop.cz/Dupont-c24_6_2.htm
Divím se že SOSelectronic, GES, HWkitchen ani žádný další to nemá. Tolik věcí nám v ČR chybí…MilosMerta
ÚčastníkĎakujem, cez víkend skúsim a dám vedieť.
posjirka
Účastníkpodívej se sem:
třeba to pomůže… je tam popsáno, že je vhodne použít pullup odpory pro vstupy, atd..posjirka
Účastníknevidím tam spojení zemí arduina a H-mustku … Tady bych si hledal chybu.
MilosMerta
ÚčastníkZ mojich súčiastok vo fritzingu chýba L298N,12V batéria. Ďalej tam mám použite Arduino UNO,DC motor,HC-05,batéria 9V.
Keby že zoženiem L298N do fritzingu tak tu schému spravím ináč.
Vodiče na vstup 1,2,ENA-8,7,9
RX,TX-10,11posjirka
Účastníktohle není schéma, ale vrabčí hnízdo. Promiň a le z toho opravdu nepoznám co je co. hlavně vůbec netuším co je to za IO u H-mustku = nevím jak má být zapojený, nedodržené barvy vodiču to totálně znepřehlednují.
Vůbec z toho nepoznám kde máš spojenou zem obou zdrojů. jinak ti H-mustek nemuže fungovat … atd.MilosMerta
ÚčastníkVo fritzingu nieje 12V batéria tak som to spravil takto. Alebo sa Vák nepáči niečo iné?
posjirka
Účastník??? to myslíš vážně?
MilosMerta
ÚčastníkTu by mala byť schéma.
Attachments:
posjirka
Účastníkbez schematu se těžko radí …
MilosMerta
ÚčastníkZnaky už prichádzajú tak ako majú, len teraz mám problém s motorom. Rozbehne sa iba ak je zapojený iba jeden pin smeru motora a je prepojený na GND.
Mirda0124
ÚčastníkDobrý den,
Rád vám to naprogramuji, napište mi na mir.novacek@gmail.comRo667
ÚčastníkNo ale keď potrebujem prečítať text a potom ho zobraziť na sériovom monitore.
Ro667
ÚčastníkĎakujem.
Zbyšek Voda
ÚčastníkKdyž chcete vstup pro heslo, tak použijete
<input type="password" ... >
Potom se místo zanků zobrazí hvězdičky.Ro667
ÚčastníkAaha Dakujem, no a keď potrebujem zadávať heslo tak mi ho bude vidno ?
Zbyšek Voda
ÚčastníkVe článku Programování webových rozhraní pro Arduino je v sekci Ovládání LED napsáno, jak se dá získat data z GET požadavku.
V můžete udělat HTML formulář a zvolit jako metodu přenášení dat právě GET. A potom už je to stejné, jak popisuji ve článku, jen nečtete jeden znak, ale více.
Jak udělat formulář s metodou get je popsáno třeba zde. Jen zaměníte vstup input za textarea.
Vojtěch Vosáhlo
ÚčastníkNejlepší bude číst data z url, tedy nastavit textbox jako formulářový a mít pod ním tlačítko nastavené jako submit. Po stisknutí tlačítka se data z formuláře „odešlou“ a vy je přečtete z url. Otázka je jakou přesně aplikaci potřebujete. Je o tlačítko na odeslání přípustné nebo chcete číst na jiný podnět?
Miro
ÚčastníkTak to ma riesene ten https://farmbot.io/
Miro
ÚčastníkAhojte, ja som nasiel na nete https://farmbot.io/. Mozno od veci ale ako inspiracia podla mna dobra vec.
PS: Som absolutny amater ale fascinuje ma to.
Oldřich Horáček
SprávceOmlouvám se že to trvá tak dlouho, firma co řeší převedení obsahu ze starého fóra na nové za to chce moc peněz a přehození svépomocí se nepodařilo. Proto to vyřešíme napojením na stará vlákna a zpřístupněním starého obsahu pro čtení. Díky i tak za nabídnutí pomoci, vážím si toho. Oldřich
mkolka
ÚčastníkDakujem, najskor skusim najst taky kondenzator. Ak to nepomoze, skusim tu nabijacku.
Dakujem za snahu.
Aleš
ÚčastníkMezi piny GND a VCC. Je možné, že při sepnutí relátka vznikne pokles napětí, a displej kvůli tomu zblbne. Kondenzátor by tomu měl zabránit. Případně zkusit externí napájení toho relé. Vzít např. nabíječku na mobil, odpojit VCC relátka od Arduina, a připojit ho na +5V z té nabíječky. GND nabíječky propojit s GND Arduina.
kejlicz
ÚčastníkTO Luke_CZ
Proč jako orat brambory Veyronem. To je jako by jsi napsal, že oheň jde rozdělal mlácením křemenů o sebe , tak proč používat zapalovač. Co získám navíc použitím NodeMcu? Vůbec nic. Zakladatel diskuze se baví o „chytrém domu“ ne o nějakém primitivním měření jedné veličiny.Já už mám vlastnoručně postavený systém přes 2 zimy v provozu a je to paráda. Za celou dobu odešlo jen jedno spínací relátko, jinak to šlape. Udělal jsem to tak, že mám „server“ na hostingu. První verze měla server lokálně na Arduinu a na hosting jsem to posílal jen kvůli logování dat a zobrazení grafů. Programovaní Arduina je ale opruz a nejsem v tom moc zběhlý, takže to byl Ctrl + C , Ctrl + V poslepovaný paskvil. Proto jsem se rozhodl udělat server na hostingu na internetu a naprogramovat to v PHP Nette/Doctrine2 což mi možnosti posouvá a několik levelů výš . Je to sice „závislé“ na internetu, ale čemu to vadí? Beru to prostě jako závislost elektrice. Doma mám 2 Arduina Mega a dvě Nano. Jedna Mega data přijímá od těch dvou Nano a posílá je na server na internetu. Na serveru se to vyhodnotí. Mám doma veřejnout IP a přesměrované porty a hosting přes to pošle povel druhému Arduino Mega, co má sepnout. Na hostingu mám naprogramovaný docela promakaný systém, kam jdou jednoduše přidávat místnosti, do nich ovládací prvky a ovládané veličiny. Když chci regulovat něco nového, stačí mi naklikat, že chci nějakou veličinu, nazvat jí a říct systému, název parametru, pod kterým tu hodnotu hosting dostane. Třeba teplota (i když tu už to samozřejmě umí). Pak si naklikám, že chci nový ovládací prvvek, vyberu si ze seznamu ovládanou veličinu, číslo PINu, na jakém je připojeno ovládání toho ovládacího prvku (třeba topení), vyberu zda prvek veličinu zvedá nebo snižuje (topení / klimatizace). U ovládacích prvků si můžu nastavit opožděný start, minimální doba běhu, závislosti na dalších veličinách, závislosti na denní době, dále to jestli je prvkem pod napětím vypnutý nebo zapnutý.
Pak jen nastavím, že chci např. teplotu v nějaké místnosti min. 21 stupňů. Pokud je teplota nižší, systém se podívá zda má v dané místnosti ovládací prvek, který zvyšuje veličinu „teplota“. Mám tam zadané jako ovládací prvky teploty radiátory. Na nich jsou termohlavice spínané 12V.Všechno se mi krásně loguje, mám nastavené automatické změny požadované teploty, dají se nastavit alarmy kdy mi to při překročení nebo poklesu nějaké veličiny třeba pošle email a podobně.
Taky proč by se neměl dostat do domu při výpadku netu??? Zaprvé tady nic nevidím, že by to používal na odemykání dveří a i kdyby jo, tak se to dá proti takovým věcem vždycky ošetřit.
-
AutorPříspěvky