x20fan Creative Commons License 2015.04.01 0 1 1065

Kb. 100 ezerszer fut le a loop másodpercenként egy egyszerű led villogtatással, az 10 mikrosec, 16 relé kiírása 160 mikrosec, a relé sokkal lassúbb ennél, mire összeérnek az érintkezők.

 

Töb gomb nyomása semmi gond, akár 16-ot is nyomhatsz egyszerre, 160 mikrosec alatt beolvassa és újabb 160 mikrosec után bekacsolja a reléket. Mivel nem mátrixban vannak a gombok, hanem mindegyik egy egyedi ic bemenethez csatlakozik, egymástól függetlenek, csak a beolvasás soros.

 

A rövid nyomás egyszerűbb. Nekem 50 msec a legrövidebb gombnyomás időm, ezalatt 100-szor beolvassa a 16 gombot és kiírja a relék állapotát, tehát tetszőleges gyorsasággal csattoghatnak a relék.

A hosszút le kell kezelni, hogy a következő ciklusban ne vegye egyből gombnyomásnak. Delay nincs, hanem jelzőváltozó van, ami a gomb állapotát mutatja, és amíg nem engedték föl, addig azzal a gombbal csak vár.

csak vázlatosan:

gomballapot=0

loop

{

  if(gomb benyomva && gomballapot==0)

  {

    relet valtani

    gomballapot=1

  }

  if(gomb felengedve){gomballapot=0}

}

 

A loop pörög, amíg a gomb nincs benyomva a gomballapot valtozóba 0-t ír.

Ha benyomom a gombot, akkor az első if feltétel teljesül, kapcsol a relé és a gombállapotba 1-et ír. Amíg nyomom a gombot a továbbiakban nem teljesül a feltétel egyik ifben se, de a loop pörög tovább.

Amint fölengedem a gombot, a második if teljesül, 0-t ír a gomballapotba, és visszakerültünk az eredeti állapotba, jöhet a gombnyomás.

 

Áramszünetnél reset van. Egyrészt ha bootloader van, akkor 1-2 másodpercig inicializál, közben villog a 13-as pinen a led, ki tudja a többi pinen mi történik, ezért valószínűleg a bootloader nélküli használat tanácsolt. Másrészt a pinek bemenetek lesznek az inicializálás után, tehát nem hajtanak meg semmit, relét se. Harmadrészt én shiftregiszterben gondolkodok, mert 6 kapcsoló kevésnek tűnik, tehát nem az arduino kimenetei számítanak, hanem a shiftregiszter ic. Fogalmam sincs, hogy pl. a hc595 mit csinál táp rákapcsoláskor, de más portbővítő megoldás is lehet, ezt mindig egyedileg meg kell vizsgálni, hogy az hogyan viselkedik. Ha nincs bootloader, akkor elég hamar elindulhat a program, és előírt állapotba kapcsolja a reléket, de pártized másodpercig akár ismeretlen számú relé meg is húzhat. De lehet egy kis monostabillal a G-t lehúzni fél másodpercre, és akkor nem kapcsol be semmi, utána meg már a program beállította tetszőlegesre.

Előzmény: Danixy (1064)