Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Idézet: „Arra a kérdésre, hogy miért nem működik a millis() sem kaptam világos választ”
Én egy kicsit másképp állnék a kérdéshez.
A reléket meg a hozzájuk tartozo LEDeket egy byteba gyüjteném. Ahol Byte 1 b0. Rele IN 1 b1. Relé IN 2 b2. Relé IN 3 b3. LED 1 b4. LED 2 b5. LED 3 Stb (lehet, hogy a felsorolás pontatlan, de ez most nem lényeges). A lényeg az, higy a bytenak van egy bizonyos értéke, és az EEPROMot csak akkor kell átirni, ha változik az érték. Azaz programba definiálod a kiindulási értéket, majd ezt átirod, olyankor ha ezen valami változik. Ehhez nem kell delay vagy millis, és tényleg csak akkor nyulsz az EEPROMhoz amikor változtatod a tartalmat, (ha bármelyik bit változik - azaz változik a byte is). Ez meg nem olyan gyakori, hogy ez gondot okozzon. Lehet mondjuk a Byte 1 a bemenetek állapota a Byte 2 meg a kimeneteké ( 16 port). Azaz a mode nyomogombbal bármikor bármelyik Bytetot beolvashatod és kijelezheted. Kikapcsoláskor meg az utolso àllapot marad az EEPROMban. Persze jobb lenne ha látnám a rajzot. Egy kép többet mond mint egy oldalnyi szöveg.
Köszi mindenkinek,készítem a rajzot, holnap feltöltöm ha kész. Ma segítenem kellett egy barátomnak,nem sok időm volt itt lenni.
Megpróbálom megfogalmazni, hogy mit értettem meg belőle. Tehát van egy erősítőd, 3 bemeneted és 2 kimeneted. Azt szeretnéd, hogy ki lehessen választani, hogy melyik bemenet és kimenet kapcsolódjon az erősítőre és és ezt LED-ek jelezzék. Mindezt úgy, hogy van 2 nyomógombod hozzá. Az áramkörben bistabil reléket használsz (miért? analóg multiplexer is jó lehet?), amiket bekapcsolsz, de visszaállítani őket csak egyszerre tudod. Mi a cb_output relé?
Néhány kérdés: Ragaszkodsz ehhez az áramkörhöz, esetleg szóba jöhet más megoldás is ugyanerre a feladatra? A LED-ek helyett esetleg jó lehet egy egyszerű LCD kijelző? Az drágább, de a bipoláris relék se olcsók és ha ott a drágábbik megoldást választottad, akkor lehet a kijelzésnél is szóba jöhet. Így felszabadulna néhány kivezetés. A millis() függvény megértéséhez megpróbálok egy példán keresztül segíteni. Úgy képzeld el, hogy van egy olyan változó, melynek az értéke az idő múlásával folyamatosan nő. A millis() függvény ennek a változónak a pillanatnyi értékét adja. Hogy ezt időmérésre lehessen használni, ahhoz a mérés kezdetekor el kell tárolni az értékét, majd folyamatosan figyelni, hogy mikorra lesz az aktuális érték és a korábban tárolt érték közötti különbség akkora, ami megfelelő neked. Ezt úgy is el lehet képzelni, hogy egy olyan stoppered van, ami nem nulláról indul, hanem egy valamilyen értékről és az eltelt időt az induláskori érték és a pillanatnyi érték különbsége adja. A változók típusával kapcsolatban pedig az lenne az észrevételem, hogy nem következetes. Két állapotú változót int-ben tárolni pazarlás, azon kívül van amelyik konstans, van amelyik nem az. Hiába működik így is, szerintem érdemes ezekhez bool típust használni. Az EEPROM használatánál lehet egyedül értelme, de az az utasítás, amit használsz, 1 byte-ot ír, a változó meg 2 byte-os. A fordító kezeli ezeket, de talán a következetesség miatt célszerűbb lenne megfelelő típust használni.
Szerkessz hozzá egy állapot táblázatot is minden lehetséges állapot legyen ott.
( melyik bemeneti relé és melyik kimeneti relé milyen állapotban van az adott helyzetben.)
Folyamatban. Lehet kézzel hamarabb végeztem volna, eagle-ben nincs 1 of 2 decoder, importálhatót se találtam és elment a délutánom arra hogy próbáltam alkatrészt rajzolni.
_BIG_: igen, jól érted, csak egy bemenet, egy kimenet és egy cb (ami a két panelból választja ki, hogy melyik) lehet kiválasztva egy időben. A cb váltásakor is jegyezze meg a be és ki állapotokat. Még nem tartalmazza a progi, csak lemásoltam a be vezérlés sorait a ki és cb-hez is, hogy majd legyen miből kiindulni. kapu48: köszi szépen, már világos, hol gondolkodtam rosszul. Javítom, ha megvagyok a kapcsolási rajzzal és az állapot táblázattal. Massawa: az eeprom jelenleg is csak akkor van átírva, ha változik az érték. Egyébként tetszik az ötlet,át fogom gondolni, hogy nyernék-e és mit, ha így átírnàm az egészet. Ugyanis lehet rövidebb, átláthatóbb kód vagy csak egy másik út ami ugyanolyan hosszú,bonyolult, stb. A programba definiált kiindulási értéket arra érted, hogy mikor szűz mcu-t felprogramozunk, nincs benne még semmilyen informácio? És a felprogramozás után már erre nem is lesz szükség ugye? A kép készül. Josi777: igen, jól érted. A cb az circuit board, ez válassza ki a kívánt pcb-t, áramkört. 2 panel lesz benne, melyek közt szeretnék majd váltani. Nem kötöm az ebet a karóhoz, de ha megoldható,megcsinálom. Azért használok bistabil relét, mert a projekt abból indult, hogy cimbora adott nagyon pöpec reléket jelhez. Ha elvetném a reléket, oda a kihívás és mintha a gulyásleves készülne hús nélkül. Nem baj az egyszerre visszaállitás, mert minden léptetéskor resetel és csinál egy set beállitást az aktuális relén. De a be-hez a ki-hez és a cb-hez is külön reset kell, ez csak 3 kimenet. Ha elfogynának az io pinek, akkor van expander ic-m is, de elméletileg pont elég lesz. LCD jó ötlet, de a doboz már elkészült (tudom fura helyzet, de a körülmények olyanok voltak, hogy azt kellett hamarabb megterveznem így ingyen volt) és a doboz ledre lett tervezve. Nekem személy szerint egyszerű dolgokra a LED jobban tetszik. A millis() függveny már világos,köszönöm a plusz infókat! A változók észrevételeit is nagyon köszi, átgondolom újra, mert teljesen igazad lehet. A bool típust nem ismerem, utánna olvasok.
Elég lett volna ha kézzel felrajzolod mit is akarsz. Nekünk nem a dekoderekkel van gondunk, hanem az összefüggésekkel.
Az EEPROM ilyenfajta használatának van egy trükkje. Az EEPROMnak nem sok köze van a chip felprogramozásához. A programot lehet ugy megirni, hogy az EEPROMban az elsö bekapcsolásakor már lehet valamilyen alapinformacio ( az alap jelút az esetedben) de lehet ugy is, hogy nincs benne semmi, és az elsö bekapcsolás alatt kell kézileg bevinni ( a gombokkal) az alapinformaciot. Azt te döntheted el, hqogy neked melyik jobb. Azután a használat folytán már mindig az utolso beállitás marad.
Sziasztok Mesterek!
Kis segítség kellene. Készítek egy barátomnak az apukája szervizébe egy sorszám nyomtatót de sajna a programozás az nem megy. Amire szükségem volna hogy valaki a programba beleírja hogy a sorszám kezdő értéke vagyis a 000 minden éjfél után visszaálljon erre az értékre,továbbá hogy az rtc által kiírt idő ne 0.Óra 0 legyen hanem 00:00,persze ha ez lehetséges. Előre is köszönöm a segítséget. Üdv.Józsi
üdv újra. Elnézést a késlekedésért, elég húzós volt az elmúlt két hét munka.
Készítettem valami Jackson ábra félét, remélem megteszi. A kapcsi rajzot is megalkotom a hétvégéig és feltöltöm. A hozzászólás módosítva: Júl 12, 2022
Szia.
Kicsit kiegészítettem a programodat, de mivel kipróbálni nem tudtam, így csak remélem, hogy jól működik. Kiegészítettem még 2 nyomógombbal, amivel az RTC idejét lehet korrigálni +/-. Nem gondoltál arra, hogy egy egyszerű kijelzőn lehessen látni az aktuális időt és/vagy a token számláló aktuális állását?
Annyit tegyél meg, hogy kiolvasod az eeprom tartalmát (ami legelőször 255 lesz, ez az alap értéke), és csinálsz egy if feltételt, miszerint: ha változó kisebb mint nulla, vagy nagyobb mint 3, akkor a változó legyen 0. Ha esetleg signed char-t vagy valami mást használsz, akkor a negatív értékre is reagálni fog, mondjuk eepromból unsigned char-t olvasol ki. Mindegy.
Ezzel megoldottad, hogy akármit olvas ki az eepromból, ami hibás érték lenne, azonnal visszarakja a változót 0-ra, ami már megfelelő neked.
Szia Josi777
Nagyon szuper lett köszönöm szépen. Hát igen az se lenne rossz ha lehetne látni az időt és számláló állását. Megmondom őszintén a programozáshoz nem értek pár dolgot át tudok írni,de kb ennyi a tudásom. Ennek is örülők és köszönöm még egyszer hogy megoldottad a gondom,ha van ötleted a kijelzőre is és időd is hogy velem foglalkozz akkor az is szívesen fogadom. Üdv.Józsi
Szuper, köszönöm. Azt hiszem hasonló feltételt valamelyik verzióba bele is tettem, de aztán valamiért törölve lett.
Az ábra egyébként szódával elmegy? A hozzászólás módosítva: Júl 13, 2022
Te tudod, hogy milyen kijelzőt szeretnél használni. A nagysága, szerelhetősége, láthatósága alapján. Talán egy általánosan használt 16*2 karakteres kijelző, I2C buszon lehetne a középút. Arra kényelmesen ráfér minden és a zöld változat elég olcsó is.
Szia
Igen én is arra gondoltam hogy valahogy így kéne neki állni. Szétnézek mi van itthon.
Szia Josi777
Na elkezdtem kalapálni a kódot hát nem tudok programozni,de az óra megy csak valamiért úgyan az van mint a nyomtatásnál pl: 12:01:01 helyet 12:1:1 ír ki a kijelző. Szerintem valamit nem jól csinálok de lehet hogy rossz a kódom is. Ha átnéznéd köszönném szépen. Üdv. Józsi
Továbbra sem tudtam kipróbálni, ismét csak remélni tudom, hogy jól működik
Remélem, érthető a működése. Nem látom, hogy milyen, ha váltogatja a kijelző a tartalmát, remélem, jó lesz. A váltogatás ideje állítható.
Szia
Minden szuper lett köszönöm szépen,most nézegetem a kódokat és átírogatom a feliratokat hogy lássam mi változik. További szép estét kívánok! Üdv.Józsi
Szia.
elkészítettem valamiféle kapcsorajzot is, a polaritásforgató IC-ket megrajzoltam diszkrét elemekből és sárga keretbe tettem őket. Ezzel és a hét elején feltöltött "Jackson" ábrával már lehet érthetőbb lesz mit szeretnék. Megcsináltam amiket javasoltál (eepromtartalomvizsgálat a setupban) és a korábban beszélt millis()-el késleltetem a programfutás közben az eeprom írást, így nem írja minden léptetésnél (mert ugye van amikor csak két léptetéssel érem el a kívánt bemenetet, pl 1-3). A millis egyébként nem úgy lett jó, ahogy itt javasoltátok, de most működik rendesen az is. Bekapcsoláskor frankón beállítja a reléket is. Mivel még mindig vannak delay "hegyek" a kódban, nem tudom ez hátrányos-e (a program mindig megakad itt) vagy érdemes inkább a millis()-el készítenem késleltetéseket monjuk a debouncer-nek? Vagy alapvetően nem gond a delay?
Az IC2A 1-es kivezetés hova csatlakozik? A kimenetekre hogyan jut jel? A bemenetekre csatlakozó jel csak akkor jut az IC2A bemenetére, ha mind a 3 relé át van billentve, mivel a kikapcsolt állapotú relé a GND-re kapcsolja a bemenetet. Nekem még most sem derült ki, hogy mi a szerepe a cb_relay-nek, ami nincs is bekötve. A kimenetekre hogyan jut jel, ha a relék az IC-k bemeneteire kapcsolják a kimeneti csatlakozót? Továbbra sem értem, hogy mi szükség a bistabil relékre (jó, azt hiszem azt mondtad, hogy az van, cserébe sikerült vele remekül megbonyolítani egy amúgy roppant egyszerű feladatot ), valamint elég lenne 3 darab relé is az 5 helyett (sima vagy bistabil).
szerk.: A relék működtetésének az értelmét sem látom, elég lenne 1-1 buffer mindegyik tekercskivezetéshez. 4 helyett 2 IC lenne csak. A hozzászólás módosítva: Júl 18, 2022
Bocsesz, a rajz valóban rossz, javítottam.
7db relé van. Azért szedtem szét a bemeneti reléket, mert mértem rajtuk némi áthallást, biztos ami tuti alapon inkább külön viszem a jelet. A kimeneten és a cb esetében valóban elég lehetne 1 relé is, ezen még gondolkozom, de már póbálgattam ma és működik. Az lenne talán ekkor fura, hogy mondjuk ha a relé set állapotban van, a kikapcs bekapcs reseteli, de aztán visszaáll mondjuk. Még ha reset állapotban van, akkor meg nem történik semmi, nincs kattanás. De ez végül is jelentéktelen. Az utolsó mondatodat nem teljesen értem, mit értesz buffer alatt és hogyan gondoltad, hogy elég lenne kevesebb IC? A hozzászólás módosítva: Júl 18, 2022
A nem használt bemenetek reléje még mindig GND-re kötik a jelet és most már a kimenetet is, ha csak az egyik kimenet van bekapcsolva.
A relé meghajtás továbbra is célszerűtlen, kevesebb alkatrésszel is megoldható, valamint 4 relé is elég az egészhez.
A relé meghajtáshoz tudnál segítséget nyújtani azzal, hogy elárulod mire gondolsz? Egy gyors skicc is elég.
A GND-re kötést is javítom holnap, már figyelmetlen vagyok.
Van 3 bemenet, azaz 3 féle állapot, az 2 bittel leírható, azaz 2 relé elég hozzá. 00-nincs használva, 01-1-es bemenet, 10-2. bemenet, 11-3. bemenet. És ugyanez a kimenetek is, csakhogy ott 4 állapot van, 1. IC1-Ki1, 2. IC1-Ki2, 3. IC2-Ki1, 4. IC2-Ki2, és ezek is leírhatóak 2 bittel, azaz ide is elég 2 relé. Szerencsére a relék dupla morzés érintkezősök, így meg lehet velük valósítani a kapcsolást.
Ha így nem eléggé érthető, akkor holnap lerajzolom neked.
Bistabil relék helyett elég lenne 4 port kimenet és a meghajtásuk is sokkal egyszerűbb lenne. De ha maradnak a bistabil relék, azt is lehet egyszerűsíteni, hogy nem 3 reset jel van, hanem csak 1 az összes reléhez.
Azt az egy reset jelet akkor ráküldöm az összes relére, ez jó ötlet, köszi!
A bemeneten megtartom a 3 relét, a többi meg így lesz végül, én is arra jutottam.
Sziasztok!
Legalább 6 de méginkább 8csatornás öntözés vezérlőt szeretnék építeni Arduinoval. Nem találtam olyat ami simán után lehetne építeni. Az nekem nem megy hogy programot tudjak írni rá, tudtok segíteni?
Nézz szét itt. hátha valamelyik megtetszik
Sziasztok!
Segítséget szeretnék kérni egy Arduino Nanoval kapcsolatban. Egy áramkörhöz kiegészítőként vettem de még a felprogramozás nem történt meg illetve nem tudom hogy álljak neki. Az USB csatlakozón összekötve számítógéppel életjelet ad a panel. A PON LED világít gondolom ez a tápfeszültséget jelzi, az L jelű LED a reset után kettőt villan aztán kis szünet és folyametosan villog. Megvan a HEX fájl (kb 37Kb) amit rá kell tölteni, csak ebben kérek segítséget, hogy hogyan milyen programmal. Teljes fejlesztőrendszert nem szeretnék telepíteni nem akarom se átírni se módosítani a programot. Remélem van rá egyszerű megoldás. A program mellékeli a mega az uno és a nanohoz való fájlokat gondolom ehhez a panelhez a nano file kell. Nem tudtam melyik topiba írjak mert ez a kiegészítő egy SDR vevőhöz van de talán ide jobban illik a téma. Két témába nem írunk itt problémás mert nem biztos, hogy mindenki olvassa mindkét témát. Köszönöm a segítséget. Üdv: Gábor |
Bejelentkezés
Hirdetés |