Close

GabrielM

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 2,101. až 2,130. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: I2C #6460
    rakocid
    Účastník

    vyskúšal som posielať 3 bajty, vzdialenosť minimálna, zdroj som zvýšil na 2 ampere, nikdy to nevydrží dlhšie ako hodinu.

    odpověď na: Podmínka IF s D3231 #6455
    rob.brno
    Účastník

    Nebo můžeš použít knihovnu time, která interpretuje čas a datum jako jedno číslo typu long a udává počet sekund tuším od 1.1.1970 0:0:0
    Má v sobě i funkce na převod z tohoto formátu na datum a čas i nazpět. Porovnával bys pak vlastně jen dvě long čísla s „vymaskovanýma“ vteřinama nebo i minutama.

    odpověď na: propojení 2 mikrokontrolérů #6454
    rob.brno
    Účastník

    Právě přemýšlím nad komunikací mezi dvěma arduiny(v domě a v rámci pozemku, tedy nějakých max.50m daleko), po drátech bych ji řešil po RS485. Vzduchem mě prvně napadl bluetooth, ale to je pro tento případ asi zbytečné.
    Tyhlety moduly RF: http://www.ebay.com/itm/433Mhz-WL-RF-Transmitter-Receiver-Module-Link-Kit-for-Arduino-ARM-MCU-Wireless-/380717845396?hash=item58a48d4b94:g:x9cAAMXQigBSMp4X jsou jen pro jednosměrnou komunikaci?

    Ted jsem viděl i moduly NRF24 na 2,4GHz, např.: http://www.ebay.com/itm/2PCS-Arduino-NRF24L01-2-4GHz-Wireless-RF-Transceiver-Module-New-/262150618543?hash=item3d0964fdaf:g:YP4AAOSwLzdWTYYk

    Chci dělat řízení nabíjení elektroauta z FVE na konektoru Mennekes podle volného výkonu z FVE. Měřící zařízení bude v rozvaděči na přípojce a nabíjení kdekoliv okolo domu. Jde o to, aby se např. každou vteřinu přenesla informace o volném dostupném výkonu ve Wattech(takže na to budou stačit 2B).

    Byl by pro tento účel modul NRF24 vhodný?

    odpověď na: Řídící jednotka pro peletový kotel #6453
    johnyhol
    Účastník

    No mělo by to prakticky reagovat jenom na prostorák. Kotlový termostat vypne pouze, když je teplota kotle vyšší než cca. 85°, takže je to během zapalování vyloučený. (proces zapalování začíná cca. při 75°)

    odpověď na: Řídící jednotka pro peletový kotel #6446
    oplocky
    Účastník

    Děkuji, – zkusil jsem poslat mail kolem možná budoucího projektu
    můj také dočasný mail – oplockyj@volny.cz

    odpověď na: Řídící jednotka pro peletový kotel #6444
    posjirka
    Účastník

    to oplocky:
    nechci sem dávat svuj soukromý mail, tak mi napiš na
    posjirka-arduino@seznam.cz
    je to dočasný mail a nebudu tam pořád, nicméně tě pak přesměruju na soukromý mail…

    odpověď na: Řídící jednotka pro peletový kotel #6443
    posjirka
    Účastník

    nedělal jsem s tím nic (tlačítko potvrzení poruchy).
    K tomu bodu 3.
    3) test vypnutí termostatu během zapalování
    na jaký termostat má reagovat a najaký nemá.
    Předpokládám, že kotlový termostat může vypnout i při žhavení a v tu chvíli bych měl se vším skončit a nechat dohořet.
    Prostorový termostat bude jak při žhavení?
    Na začátku aby vubec začal proces žhavení je třeba mít oba dva termostaty sepnuté.
    Po startu muže prostorový termostat vypnout.
    Jestli to chápu správně chceš aby zapálení už po startu nebylo na prostorovém termostatu závislé a na jeho vypnutí by reagoval až v procesu udržení hoření?

    odpověď na: Řídící jednotka pro peletový kotel #6442
    oplocky
    Účastník

    Je možné spojit se s POSJIRKOU ?, měl bych soukromý dotaz, který se netýká příspěvku, nenašel jsem nikde kontakt.

    Děkuji

    odpověď na: Řídící jednotka pro peletový kotel #6438
    johnyhol
    Účastník

    Tak jsem na to koukal a mám to přesně tak zapojený jako je to tam. Je zajímavý, že tam ta ztráta plamene funguje tak jak jsem požadoval: vypne dávkování, zapne/ohlásí to poruchu a doběhne ventilátor. Po stisknutí tlačítka to opět normálně naběhne. (tzn. začne proces zapalování) Ty už jsi s tím něco dělal? Jinak ten bod tři z posledního příspěvku je i tam stejný jak píšu v předešlým příspěvku. Jo a jak píšeš, že když kliknu na součástku tak se ukáže popis, tak to nefunguje, ale to nevadí, dá se v tom v pohodě vyznat.

    odpověď na: Řídící jednotka pro peletový kotel #6429
    posjirka
    Účastník

    zkus jestli se dostaneš sem:

    https://123d.circuits.io/circuits/1638547-regulace-pro-peletkovy-kotel

    Je tam celé zapojení + simulator včetně kodu.
    Autor jsem já, takže jen já mám právo změn, ale můžeš si to vyzkoušet a podívat se jak je co zapojený. Ať zbytečně zasaviníme toto forum …
    Když klikneš na součástku tak se ti ukáže co je to zač/co simuluje …

    odpověď na: Řízení kotle s akumulací #6428
    jurisek81
    Účastník

    Dobrý den,

    může být místo Arduina PLC ?

    Jirka

    krmasekjirka@gmail.com

    jurisek81
    Účastník

    Dobrý den,

    Arduino sice neumím ale mohl bych to udělat na PLC. Amit ADiR. Cena jednotky je ale 8.000 bez DPH. Programování velmi jednoduché. Je to PLC, má to dlouhou životnost a vysokou spolehlivost. Programově nic složitého. Uměl bych i navrhnout a vyrobit rozvaděč pro silové řízení. Jsem z Ostravy.

    S pozdravem

    Jiří Krmašek

    krmasekjirka@gmail.com

    odpověď na: Řídící jednotka pro peletový kotel #6425
    johnyhol
    Účastník

    Zdravím, tak jsem to vyzkoušel a poznatky jsou následující:
    1) test zapálení, rozhoření, hoření, vypnutí jednoho z termostatů, dohoření -> OK
    2) test ztráty plamene během hoření -> tady je něco špatně. Pokud fotobuňka nevidí plamen, tak správně vypne dávkování pelet, ale potom běží čas na dohoření 84s a až pak to začne znovu dávkovat pelety a začne nový pokus o zapálení (respektive dva a pak to jede od znova pořád dokola) a hlavně to nesignalizuje chybu „Alarm“ na výstupu 10 – tady bych to řešil pouze vypnutím dávkování, mohl by ještě doběhnout ventilátor a pak by to zapnulo/ohlásilo poruchu. Jak jsem psal už dřív, tak se tato situace stává pouze když dojdou pelety, proto bych se tím zbytečně moc nezabýval.
    3) test vypnutí termostatu během zapalování -> vypne to spirálu a začne běžet dohoření. Taky bych to trochu poopravil, aby to nechalo žhavit po nastavenou maximální dobu (10min.), nebo pokud to nezapálí a pak aby to dalo řekněme dvě dávky paliva a začal proces dohoření. Tím by se vyřešil případný problém s kopou pelet v komoře hořáku při dalším zapálení/zapnutí termostatu.
    Díky!

    odpověď na: Dotaz – spinani led – bezdratove #6424
    dejvicz
    Účastník

    Koukni na https://www.youtube.com/watch?v=ED-eUlwiN6I
    Je to více méně použití bezdrátového ovládání a posílání dat na frekvenci 433 jak zmiňoval posjirka

    odpověď na: Řídící jednotka pro peletový kotel #6422
    posjirka
    Účastník

    to je fakt zvláštní. Jak budu mít trochu času a prostředků, tak to zkusím na normálním arduinu. Teď jedu přes simulátor. v příloze je hrubý diagram funkce …

    odpověď na: Řídící jednotka pro peletový kotel #6421
    johnyhol
    Účastník

    Takhle by to asi šlo, vyzkouším a dám vědět. Jenom u toho nastavení max. zapalovací doby mně to tak jak píšeš nefunguje. Když dám pin přímo na zem tak to běží cca. 3,5min. a když ho dám na 5V tak to běží cca. 21,5min. Takže když jsem dal 10K trimr na střed, tak mi to běželo cca. 12min a proto jsem to musel honit abych tam dostal těch požadovaných 10min.

    odpověď na: Řídící jednotka pro peletový kotel #6420
    posjirka
    Účastník
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 20_3_2016
    
    // changelog
    // v20_3_2016
    // sloučení podmíněných funkcí  
    // vypnuti zhaveni pri rozepnutí termostatů (kotlový nebo prostorový)
    // rozdeleni funkci do vlastnich funkcnich bloku
    // zapojeni seriove komunikace pro odladeni funkci 
    // v16_3_2016
    // uprava podmínky smyček (zrušeno =)
    // posun zpoždění 5s z procesu zapálení na jeho konec
    // doplněna podmínka reakce na termostaty (kotlový/prostorový) v procesu zapálení
    // upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    // nastavení poruchy a její kvitance tlačítkem na pinu 9
    
    #define davkovaniPelet 6 //dávkování pelet – šnek
    #define spirala 5 //zapalovací spirála
    #define ventilator 3 //ventilátor
    #define alarm 10 //signalizace poruchy
    #define prostorovyTermostat 12 //prostorový termostat
    #define kotlovyTermostat 2 //kotlový termostat
    #define fotobunka 8 //fotobuňka pro kontrolu plamene
    #define trimr1 14 // nastaveni doby zapaleni  DI14 = A0 pro arduino UNO
    #define tlacitkoKvitance 9 // pin tlačítka kvitance poruchy
    
    long cas=13000;
    int smycka1 = 0; // pomocna smycka - zapálení
    int smycka1max = 600; // max.pomocne smycky - ted jiz nastavitelne trimrem na A1 60-600s
    int smycka2 = 0; // pomocna smycka - udržení hoření
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - počet pokusu o zapalení
    int smycka3max = 2; // max.pomocne smycky
    int porucha = 0; // proměnná pro záznam poruchy (zatím v režimu 0-1)
    
    void setup() {
    	// nastav seriovou komunikaci na rychlost 9600 bd 
    	Serial.begin(9600);
    	Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
    	pinMode(davkovaniPelet, OUTPUT);
    	pinMode(spirala, OUTPUT);
    	pinMode(ventilator, OUTPUT);
    	pinMode(alarm, OUTPUT);
    	pinMode(prostorovyTermostat, INPUT);
    	pinMode(kotlovyTermostat, INPUT);
    	pinMode(fotobunka, INPUT);
    	pinMode(trimr1, INPUT);
    	pinMode(tlacitkoKvitance, INPUT);
    	// vsechno vypni
    	vypniVse();
    }
    
    void loop() {
    	Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
    	smycka1max = map(analogRead(trimr1), 0, 1024, 60, 600); // nastaveni dobz zapaleni trimrem na A0
    	if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    		if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    			// startovaci davka pelet
    			//------------------------
    			zapalovaciDavkaPelet();
    			
    			// proces zapálení
    			//----------------
    			zapaleni();
    			
    			// test poruchy
    			// -----------------
    			testPlamene(); 
    			
    			// udržení hoření
    			//--------------
    			udrzujHoreni();
    			
    			// dohoření
    			//---------
    			dohoreni();
    		}
    	}
    	// kvitence pripadne poruchy
    	//-------------------------------
    	kvitancePoruchy();
    }
    
    void vypniVse() {
    	// funkce vypni vše
    	Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    	digitalWrite(spirala, LOW); //vypni žhavení
    	digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void zapalovaciDavkaPelet() {
    	// prvotni davkovani pelet pro zapaleni
    	Serial.println("Davkuji pelety pro zapaleni ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    	delay(12000); //po dobu 12s
    	digitalWrite(davkovaniPelet, LOW); //potom vypni dávkování
    	digitalWrite(ventilator, HIGH); //zapni ventilátor
    	digitalWrite(spirala, HIGH); //zapni žhavení
    }
    
    void zapaleni() {
    	// funkce zapaleni pelet
    	// 3 pokusy o zapálení
    	Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
    	for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
    		// smyčka "1-10" minut zapalování
    		for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
    			Serial.print("Pokus "); // ladici seriova komunikace
    			Serial.print(smycka3); // ladici seriova komunikace
    			Serial.print("/"); // ladici seriova komunikace
    			Serial.print(smycka3max); // ladici seriova komunikace
    			Serial.print(" stav: "); // ladici seriova komunikace
    			Serial.print(smycka1); // ladici seriova komunikace
    			Serial.print("s/"); // ladici seriova komunikace
    			Serial.print(smycka1max); // ladici seriova komunikace
    			Serial.println("s "); // ladici seriova komunikace
    			if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){	// prostorovy  nebo  kotlovy termostat vypne
    				digitalWrite(spirala, LOW); //vypni žhavení
    				smycka1 = smycka1max; // ukonči smyčku1
    				smycka3 = smycka3max; // ukonči smyčku3
    				Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
    			}
    			if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    				digitalWrite(spirala, LOW); //vypni žhavení
    				smycka1 = smycka1max; // ukonči smyčku1
    				smycka3 = smycka3max; // ukonči smyčku3	
    				Serial.println(" hori ...");	 // ladici seriova komunikace				
    			} else {
    				Serial.println(" nehori ...");	 // ladici seriova komunikace	
    			}
    			delay(1000);
    		}
    		delay(5000); //čekej 5s
    	}
    }
    
    void testPlamene() {
    	// test plamene
    	Serial.println("Test plamene ...");	 // ladici seriova komunikace
    	if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    		delay(1000); // pocekej jeste 1s a zkus to znovu
    		if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    			if(digitalRead(prostorovyTermostat) == HIGH){	// prostorovy termostat je zapnuty
    				if(digitalRead(kotlovyTermostat) == HIGH){	// kotlový termostat je zapnutý
    					// tzn. termostaty chteji topit, ale plamen se nezapalil
    					porucha = 1; // nastav poruchu	
    				}	
    			}
    		}
    	}
    	if(porucha == 1){
    		Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
    	} else {
    		Serial.println("Test plamene ... ok"); // ladici seriova komunikace
    	}
    }
    
    void udrzujHoreni() {
    	// funkce udržení hoření
    	Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
    	for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
    		smycka2 = 0; // vynuluj smyčku
    		if(digitalRead(prostorovyTermostat) == HIGH  && digitalRead(kotlovyTermostat) == HIGH){	// prostorovy + kotlovy termostat je zapnuty
    			if(digitalRead(fotobunka) == HIGH){	//pokud fotobuňka vidí plamen
    				digitalWrite(davkovaniPelet, HIGH); //dávkuj pelety
    				delay(1000); //počkej 1s
    				digitalWrite(davkovaniPelet, LOW); //vypni dávkování
    				delay(1000); //počkej 1s
    			} else {
    				delay(1000); // pocekej jeste 1s a zkus to znovu
    				if(digitalRead(fotobunka) == LOW){	//pokud fotobuňka nevidí plamen
    					smycka2 = smycka2max; // ukonči smyčku
    					porucha = 1; // nastav poruchu
    				}
    			}
    		} else {
    			smycka2 = smycka2max; // ukonči smyčku
    		}  
    	}
    }
    
    void dohoreni() {
    	// funkce dohoreni
    	Serial.println("Dohoreni ..."); // ladici seriova komunikace
    	digitalWrite(davkovaniPelet, LOW); //vypni dávkování pelet
    	digitalWrite(spirala, LOW); //vypni žhavení - pro jistotu
    	delay(84000); //počkej 84s
    	digitalWrite(ventilator, LOW); //potom vypni ventilátor
    }
    
    void kvitancePoruchy() {
    	// funkce kvitance poruchy
    	Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
    	if(porucha > 0 ){	// když je porucha aktivní
    		// vypni vse
    		vypniVse();
    		while (digitalRead(tlacitkoKvitance) == HIGH) {	// zapni alarm a cekej na stisk tlačítka
    			digitalWrite(alarm, HIGH); // zapni alarm
    			Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
    		}
    		Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
    		digitalWrite(alarm, LOW); // vypni alarm
    		porucha = 0; // vynuluj poruchu
    	} else {	// jinak 
    		Serial.println("Zadan porucha  ..."); // ladici seriova komunikace
    		digitalWrite(alarm, LOW); // vypni alarm
    	}
    }

    Je tam pro odladění nastavena komunikace po seriove lince.
    Po odladění jí můžeš smazat/zakomentovat. je dobře označena

    odpověď na: Dotaz – spinani led – bezdratove #6419
    duck130883
    Účastník

    Diky za tip s temi zasuvkami, neco takoveho by bylo taky reseni ale ja bych potreboval misto spinaciho tlacitka neco jako spinaci rele.

    Jinak, napisu to jako blb, protoze mi to asi nejde moc dobre vysvetlit.
    -idealni by byl nejaky vysilac a prijimac a vetsim dosahem
    -vysilac bych zapojil misto puvodni LED diody
    -prijimac bych zapojil nekde dal mezi baterii a led diodu
    -kdyz by vysilac dostal signal (puvodni proud pro LEDku) na dalku by sepl prijimac ktery by slouzil jako rele a pustil by proud z baterie do LEDky

    Myslim si ze neco takoveho musi prece uz existovat hotove, nebo se pletu?

    A ted k veci, proc to vlastne potrebuji a na co.
    – mam software v PC kde v realnem case striham video z kamer
    – do pc mam zapojene Arduino UNO R3 a v nem nahrama Firmata, ktere potrebuje soft v PC aby mohl s deskou komunikovat.
    – deska pak dle pokynu softu v PC pousti prou do ruznym pinu a spina ruzne pripojene LEDky, ktere jsou natazeny u jednotlivych kamer
    – kdyz v softweru v PC zvolim kameru1 tak clovek u kamery1 vidi rozsvicenou LEDku a tim padem vi ze ho vysilam a ma si davat majzla.

    V podtate se jedna o jednoduche tzv. TALLY LIGHTS

    Ted uz umim bezdratove prenaset obraz z HDMI a chtel bych i TALLY bezdratove, proto to resim.

    Nevim zda je to mozne cele zprovoznit jenom s prvky od ARDUINA protoze programarine ARDUINA vubec nerozumim a netusim co vsechno to umi nebo umi.
    Nebo spis zakhle, ARDUINO umi hodne, JA umim malo.

    Treba ani netusim kdyz budu mit jedno arduino s modulem nRF24L01+ tak zda je mozne ovladat s nim vice arduin s tim samym modulem soucasne.

    predem diky za info

    odpověď na: Řídící jednotka pro peletový kotel #6418
    posjirka
    Účastník

    1) Proces zapalování je zdá se v pořádku, včetně nastavení max. zapalovací doby trimrem (mimochodem super nápad, není to sice moc elegantní – musel jsem si s tím trochu pohrát abych tam dostal těch 10min., ale účel to splní)
    Právě že to máš vcelku jednoduché, buď ten pin dáš přímo na zem (1 minuta) nebo na +5V (10 minut)
    2) Zkoušel jsem simulovat během zapalování vypnutí prostoráku a tady to ještě bude chtít odladit -> po vypnutí to pořád žhaví a točí se ventilátor, ten se po 84s vypne, ale spirála žhaví dál. Hlavně to vůbec nereaguje na fotobuňku.
    Opraveno …
    3) Zkoušel jsem taky simulovat ztrátu plamene během hoření a tady je to celkem v pořádku – přestane to podávat pelety, počká to 84s, pak vypne ventilátor a začne proces zapalování -> tady by to možná chtělo řešit poruchou, protože plamen by pokud se nezasekne peleta v dopravníku, nebo nedojdou pelety neměl zhasnout nikdy.
    opraveno + doplněna porucha při ztrátě plamene při hoření.
    Zkusil jsem udělat takovou fintu: kontroluje že tam je plamen a pokud ne počká 1s a zkusí to znovu. Pak vyhlási chybu.

    Podívej se na to a vyzkoušej. Kod dám do dalšího příspěvku:

    odpověď na: I2C #6417
    posjirka
    Účastník

    co spíš použít formu dotaz/odopvěď.
    Můžeš si říct, že char(2) je dotaz na minutu, char(3) dotaz na hodinu, …
    tím pádem nebudeš posílat 18 bytů (bitu?) v základu je I2C (TWI) navržena pro komunikaci po 8 bitech + adresa + start/stop bity.
    Zkus si poslat jednoduché informace : … posílej si stále dokola číslo po každém přijmuti jej zvyš o 1.je to super pro monitorování stability komunikace. Při každé přijmuté odpovědi si můžeš ověřit, že jsi dostal správné data, případně si nechat rozsvítit LED diodu jako chybu .

    odpověď na: Dotaz – spinani led – bezdratove #6416
    posjirka
    Účastník

    existuje, třeba bezdrátově ovládané zásuvky na 433MHz:
    http://www.conrad.cz/bezdratove-spinaci-systemy-433-mhz.c0806012
    tím můžeš spínat spotřebiče na dálku pomocí ovladače. Ovladač se spáruje se zásuvkami, takže vlastně může 1 ovladač teoreticky ovládat na 1 tlačítko více zásuvek zároveň.
    Samotné arduino nemusí využívat vždy SPI rozhraní. Navíc analogové vstupy jdou také přepnout na digitální vstupy/výstupy.
    Pro komunikaci můžeš použít boduly jako Bluetooth nebo WIFI. Ty jsou připojené přes UART, takže zabírají pouze 2 piny.

    Jde spíš o to jaké potřebuješ finální řešení = co to vlastně bude dělat….

    odpověď na: I2C #6414
    rakocid
    Účastník

    musím použivať odpory?, keď mam na wire zbernicu pripojene ds3231? myslím že už ds3231 obsahuje odpory. Skúsil som to snimi aj bez nich ale správalo sa to rovnako. mohlo by pomocť vyradiť z ds3231 interne rezistory a pridať externe s nižsím odpor?

    Alebo som rozmýšľal neposielať naraz 18 bytov ale rozdeliť to. Pýtať si napríklad po troch postupne. Nieje to veľa? Ale neviem ako sa to robí, či sa to dá. DS3231 knižnica funguje tak že si pýta stále len to čo potrebuje s funkciami (getSecond(); getMinute();…). Dalo by sa takéto slave zariadenie urobiť aj z arduino nano?

    Ďakujem za radi

    odpověď na: Podmínka IF s D3231 #6411
    posjirka
    Účastník

    Koukám, že jsi použil tutorial odtud :

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


    Je to v pořádku, člověk se musí učit na něčem vyzkoušeném. Na mě je to zbytečně komplikované. Doporučoval bych použít tuto knihovnu + exampl:
    https://github.com/JChristensen/DS3232RTC/blob/master/examples/TimeRTC/TimeRTC.ino
    Ten kod se ti zpřehlední a bude pro tebe možná srozumitelnější. k jednotlivým informacím se dostáváš pomocí předdefinovaných funkcím. Např pro aktuální minutu použiješ :
    int AktualniMinuta = minute();
    Knihovna používá kombinaci sznchronizovaného času z RTC +knihovnu arduina Time pro přístup k aktuálnímu času.

    To s odopjením modulu od arduina: možná bych zkusil odpojit baterii a dát tam jinou.

    Pro nastavení zapnutí/vypnutí bych tě odkázal na forum, kde jsem něco podobného už řešil:
    http://duinozone.cz/index.php?topic=611.0

    odpověď na: I2C #6410
    posjirka
    Účastník

    ještě jak to máš od sebe vzdálené, Někdy to blbne když je to daleko. Pak se snižuje odpor PULL UP třeba na 2k2 nebo 1k0 … Kdyžtak to zkus a jak budu mít chvilku tak se na to já nebo někdo jiný podívá …

    odpověď na: Řídící jednotka pro peletový kotel #6396
    posjirka
    Účastník

    Je taková obecná poučka pro logické obvody.
    Rozděl si napětí zdroje na třetiny = 0 – 8 – 16 – 24V
    Takže 0-8V je logická nula
    16-24V je logická jednička
    8-16V je zakázáné/necitlivé pásmo = hazardní stav

    odpověď na: I2C #6395
    rakocid
    Účastník

    odkaz na fotky:
    zapojenie

    schema

    odpověď na: Podmínka IF s D3231 #6394
    LMXLuke
    Účastník

    To je právě ten problém, Já jsem v podstatě na začátku. našel jsem na netu nějaký kód, kterým můžu zapsat do obvodu a pak číst datum a čas. Ale potřebuju z toho obvodu času přečíst den v týdnu, hodinu a minutu a pak to použít v IFu. Když tak ten kód sem můžu dát a někdo mi vysvětlete kde se čtou tyhle hodnoty a kam se zapíšou, s kterou proměnnou můžu pracovat v podmínce. Já to v tom kódu prostě nevidím. Dál jsem taky zjistil, že zřejmě ten obvod, co jsem koupil, je vadný. Dám příklad: Zapíšu do něj 12:30 a pak čtu jestli tam je správnej čas, všechno běží jak má. Ve 12:35 odpojim arduino z usb abych zjistil jestli obvod tiká i na baterce. Ve 12:40 ho znovu připojím, znovu nahraju program do arduina, tentokrát ale BEZ zapisovací části a čtu, ale obvod začne znovu tikat od chvíle 12:35, tedy od chvíle odpojení, tudíž na baterce netiká, nebo nevím

    #include "Wire.h"
    #define DS3231_I2C_ADDRESS 0x68
    // Convert normal decimal numbers to binary coded decimal
    byte decToBcd(byte val)
    {
      return( (val/10*16) + (val%10) );
    }
    // Convert binary coded decimal to normal decimal numbers
    byte bcdToDec(byte val)
    {
      return( (val/16*10) + (val%16) );
    }
    void setup()
    {
      Wire.begin();
      Serial.begin(9600);
      // set the initial time here:
      // DS3231 seconds, minutes, hours, day, date, month, year
      // setDS3231time(30,42,21,4,26,11,14);
    }
    
    void readDS3231time(byte *second,
    byte *minute,
    byte *hour,
    byte *dayOfWeek,
    byte *dayOfMonth,
    byte *month,
    byte *year)
    {
      Wire.beginTransmission(DS3231_I2C_ADDRESS);
      Wire.write(0); // set DS3231 register pointer to 00h
      Wire.endTransmission();
      Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
      // request seven bytes of data from DS3231 starting from register 00h
      *second = bcdToDec(Wire.read() & 0x7f);
      *minute = bcdToDec(Wire.read());
      *hour = bcdToDec(Wire.read() & 0x3f);
      *dayOfWeek = bcdToDec(Wire.read());
      *dayOfMonth = bcdToDec(Wire.read());
      *month = bcdToDec(Wire.read());
      *year = bcdToDec(Wire.read());
    }
    void displayTime()
    {
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      // retrieve data from DS3231
      readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
      &year);
      // send it to the serial monitor
      Serial.print(hour, DEC);
      // convert the byte variable to a decimal number when displayed
      Serial.print(":");
      if (minute<10)
      {
        Serial.print("0");
      }
      Serial.print(minute, DEC);
      Serial.print(":");
      if (second<10)
      {
        Serial.print("0");
      }
      Serial.print(second, DEC);
      Serial.print(" ");
      Serial.print(dayOfMonth, DEC);
      Serial.print("/");
      Serial.print(month, DEC);
      Serial.print("/");
      Serial.print(year, DEC);
      Serial.print(" Day of week: ");
      switch(dayOfWeek){
      case 1:
        Serial.println("Sunday");
        break;
      case 2:
        Serial.println("Monday");
        break;
      case 3:
        Serial.println("Tuesday");
        break;
      case 4:
        Serial.println("Wednesday");
        break;
      case 5:
        Serial.println("Thursday");
        break;
      case 6:
        Serial.println("Friday");
        break;
      case 7:
        Serial.println("Saturday");
        break;
      }
    }
    void loop()
    {
      displayTime(); // display the real-time clock data on the Serial Monitor,
      delay(1000); // every second
    }
    odpověď na: I2C #6392
    rakocid
    Účastník

    MASTER:
    #include <DS3231.h>
    #include <Wire.h>

    DS3231 Clock;
    bool Century=false;
    bool h12;
    bool PM;
    byte ADay, AHour, AMinute, ASecond, ABits;
    bool ADy, A12h, Apm;
    byte year, month, date, DoW, hour, minute, second;
    int c[18] ;
    float humid, templ = 20, humid_2, temp2 = 20,humid_3, temp3 = 20,humid_4, temp4 = 20,humid_5, temp5 = 20, humid_6, temp6 = 20;

    void setup()
    {
    Wire.begin();
    }

    void loop()
    {
    Wire.requestFrom(44, 18);
    int x = 0;

    while (Wire.available())
    {
    c[x] = Wire.read();
    x++;
    }

    if(c[0] < 35 && c[0] > 5){
    humid_5 = c[2];
    temp5 = (c[0]*10)+(c[1]/10);
    temp5 = temp5/10;}

    if(c[3] < 35 && c[3] > 5){
    humid_4 = c[5];
    temp4 = (c[3]*10)+(c[4]/10);
    temp4 = temp4/10;}

    if(c[6] < 35 && c[6] > 5){
    humid = c[8];
    templ = (c[6]*10)+(c[7]/10);
    templ = templ/10;}

    if(c[9] < 35 && c[9] > 5){
    humid_2 = c[11];
    temp2 = (c[9]*10)+(c[10]/10);
    temp2 = temp2/10;}

    if(c[12] < 35 && c[12] > 5){
    humid_3 = c[14];
    temp3 = (c[12]*10)+(c[13]/10);
    temp3 = temp3/10;}

    if(c[15] < 35 && c[15] > 5){
    humid_6 = c[17];
    temp6 = (c[15]*10)+(c[16]/10);
    temp6 = temp6/10;}

    Serial.println(templ);
    Serial.println(temp2);
    Serial.println(temp3);
    Serial.println(temp4);
    Serial.println(temp5);
    Serial.println(temp6);

    Serial.print(Clock.getHour(h12, PM), DEC);
    Serial.print(‚ ‚);
    Serial.print(Clock.getMinute(), DEC);
    Serial.print(‚ ‚);
    Serial.print(Clock.getSecond(), DEC);

    delay(2000);
    }

    SLAVE:
    #include <Wire.h>
    byte c[18] ;

    void setup() {
    Wire.begin(44);
    Wire.onRequest(requestEvent);
    }

    void loop() {
    //…
    }

    void requestEvent()
    {
    Wire.write(c,18);
    }

    Program je dosť dlhý prepísal som základ toho ako využívam wire, dufam že len vtom budem mať neaku chybu, mam to zapojene na testovanie takto… používam aj ethernet modul, pretože udaje posielam po sieti. Odpory používam 4,7 kOhm

    Attachments:
    odpověď na: I2C #6391
    posjirka
    Účastník

    hod se kod a zapojení … ale to jak to máš opravduzapojené, né stažené z netu 🙂

    odpověď na: Řídící jednotka pro peletový kotel #6389
    johnyhol
    Účastník

    Chápu že bych to musel předělat na 5V když bych tam chtěl dát Arduino tak jak to je momentálně, ale jde mi o to jak se chová stávající zapojení. Konkrétně jestli musí být na konkrétním digitálním vstupu přesně 24V aby to vykonalo požadovanou věc, nebo jestli tam jde nastavit ať to dělá něco v případě že je na vstupu např. > 0V. Protože pokud měřím ostatní vstupy, tak tam je právě těch 24V a ani se to nehne, kdežto u fotobuňky to kolísá. Jinak pokud se nám to podaří rozchodit s Arduinem tak to plánuju stejně komplet předělat (přepojit).

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