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: „van 9-db relé abból 8-db szelepeket kapcsol és a maradék 1 pedig egy kis villanymotort. És a lényeg az, hogy egy kiválasztott italhoz tartozik egy szelep és egyszerre kell kapcsolnia a villanymotor reléjének és az adott ital reléjének . Egészen addig amíg el nem éri a megadott mennyiséget súlyban átszámítva” Ezt azért nem lett volna rossz ha a nyitó hozzászólásban elárulod! Még annyit árulj el légyszi, hogy a kezelőfelület miből áll, mert csak tippelem a kódból hogy van egy tekerőd amivel kiválasztod a piát, meg egy nyomógomb amivel indítod? Ez a része rendben működik amúgy?
A menü az jól működik, rotary encoder-t használok a menü léptetéséré.
Nakérem!
Kigyomláltam, újraírtam, remélem így gondoltad! Mivel nekem nincs ilyen gépem mint neked, ezért a visszajelzést a soros monitorra írtam, hogy lássam hogy működik. Ezt értelemszerűen majd írd át lcd-re! Kivettem a mérleg kezelését, ha gondolod majd visszaírod, szerintem az amúgy sem működött jól. Sok értelmét amúgy sem látom, mert úgysem lesz pontos. Ahhoz sokkal mélyebben bele kellene mászni a vezérlésbe, nem ezen a szinten ahol most mi állunk. Van egy modifier nevű változó, ezzel tudod korrigálni a kitöltött mennyiséget. Ebben a kódban a soros monitoron tudod tesztelni a működést, u és d az enkóder tekergetése, és b a gomb megnyomását jelenti. A többit gondolom már hozzá tudod masszírozni az igényeidhez! Használd egészséggel!
Köszönöm az eddigi segítségedet! Abba tudnál még segíteni, hogy hogyan írjam át LCD be?
Program elején:
Elejen az lcdnek megfelelo konyvtar betoltese az lcd buszának (paralel 4/8 bites /I^2C ... stb) megfelelo fizikai port labak definialasa. Ez kb 1 vagy 2 sor az adott lcd vezérlő könyvtárától függ miként kell ezt neki megmondani. Lásd arduino.cc oldalon az LCD vezerlésről szóló minta kódok. Bővebben: Link lcd vezerles Aztán Ahol serialprint van oda kellene az lcd vezerlo konyvtarba levo karakter / valtozo megjelenitésére szolgáló utasitás sorokat beírni. Kb ennyi a lenyeg ... ha belefer a forditasba(uC progratarolo teruletbe) akkor hagyhatod benne a "sorosporti monitor + billentyűkezelést is". A hozzászólás módosítva: Aug 30, 2020
Folyt kov:
Igy aztan akar sorosmonitor programmal is kezelheted a gepet... nem csak rotaryrol Avagy plusz debug/ futaskozbeni belso allapotok valtozok ertekeit is ki kuldheted a soros portra. Ha meg ugyesebb a soros debug/ monitor resz akkor onnan atdefinialhanad a mennyiseget, tipusat a folyadeknak stb ... , nem kell az egesz forrast ujra forditani ![]() Persze ekkor a belso eeprom teruletet kellene a futo progibol es a soros portrol elerni. A hozzászólás módosítva: Aug 30, 2020
A jelenleg meglevo LCDd tipusa hatarozza meg milyen softveres vezerlest kell melle beallitani a forraskodban.
Ha minden igaz akkor ez egy I2C buszos kijelzo lesz legalabbis azzal kezded 2 oldallal visszább a forraskododat. Annak az i2c konyvtarnak megvannak a kijelzest megjelenito egyedi utasitasai. Azokat kell hasznalni ( torles, pozicionalas , kiiras ...stb.) A hozzászólás módosítva: Aug 30, 2020
Ahogy kolléga is mondja!
Elejébe belerakod ezt (lehet hogy nem kell mind, nem tudom melyik a mérlegé):
A setup()-ba ezt:
Aztán ahol Serial.print("CLR") van oda lcd.clear(); kell, ahol Serial.print oda meg lcd.print. Még az lcd.setCursor() sorokat kell beraknod ahova gondolod, hogy megfelelő legyen a kijelzésed. Ennyi. Én is benne hagynám a soros mutatványt, és mellé írnám az lcd-t. Elfér. Pár sorban van csak kiírás, ellenőrízd hogy jól jelenik-e meg. A hozzászólás módosítva: Aug 30, 2020
Na most sikerült megcsinálni, hogy normálisan írja ki. Mielőtt írtad azelőtt próbálkoztam ezekkel.
Meg az lcd.clear(); -el csak egy kicsit másképpen de az nem sikerült valami jól.
De most már így jó, már csak az encodert kell valahogy "szóra bírni" mert hiába tekerem nem csinál semmit.
Ezt tedd be a setup()-ba, és elvileg működni fog az is!
A gombnyomásra még nem reagál de a tekerésre már igen.
(Az előző programhoz képest sokkal gyorsabb lett a menüben az italok közötti ugrálás.) A hozzászólás módosítva: Aug 30, 2020
A 147. sorban van egy ilyen:
Cseréld le így:
Így már működik, köszönöm a segítséget.
A súlyérzékelőt ehhez a programhoz hozzá lehet még adni úgy, hogy jól is működjön?
Az a gond a súlyérzékelővel, hogy amikor megindul a töltés, akkor túl fog lőni, és hintázni fog a mért érték. Amikor ilyesmivel foglalkoztam, akkor nekem sosem sikerült egyszerű módszerrel működőképessé tenni. Itt jönnek a Fuzzy, PID rendszerek, de ez neked szerintem már nagyon nem érné meg a befektetett munkát. Ettől még meg lehet oldani, de ebben már nem fogok tudni segíteni. Ebben az alkalmazásban bőven elég lesz ha az idővel arányosítod a kitöltött mennyiséget. Szerintem engedd el a mérleget!
A mostani programban lehet italonként arányosítani a folyadék súlyát és arányát?
Mert ugye más a fajsúlya a különböző italoknak.
Hm.. Jelenleg az összesre ugyanaz. De nem nagy kunszt.
Kell az elejére a float modifier helyett egy ilyen:
Aztán a fill() -ben van egy ilyen sor:
Ehelyett pedig ezt:
Ezt nem próbáltam most ki, de elvileg ennyi kell hozzá. Így minden italhoz külön külön be tudod állítani a korrekciót.
Sziasztok!
Beszereztem néhány LGT8F328P SSOP20 MiniEVB panelt, de kicsit kevesebb infót találtam róla, mint amire szükségem lenne. Három kérdésem lenne ezzel kapcsolatban: - hogyan kell értelmezni azt, ha egy lábhoz két felirat is tartozik, az egyik lábnál pl. 8, alatta 9~, a másiknál 11~, alatta 9~, vagy csak egyszerűen 3~? - a hátoldalon szereplő SWC, SWD, DTR lábak melyik portnak felelnek? meg? - A MISO, MOSI, SCK lábakat szeretném használni, de nem tudom melyek azok. Köszönet!
Ha ki tudod sípolni, akkor nézd meg, hogy pl. ahol a 8 alatt 9 hullámvonal van, az több lábhoz csatlakozik-e. Ha igen, akkor program írása közben választhatsz, hogy a nyák azon kimeneti pontján a uC melyik lábát használod (a másik láb high-Z állapotban marad!).
Az A4 SDA egyértelmű, két funkció van egy pöttyön. A szám utáni hullámvonal pedig PWM kimenetet jelent.
Szoftveresen választhatod ki, hogy melyik kimenetet kapcsoljad az adott lábra. Lehetséges az is, hogy mindkettőt. Ebben az esetben akár zárlatot is tudsz csinálni és főzöd a kontrollert.
Az SWC, SWD, DTR lábak a programozáshoz kellenek, ha nincsen bootloader a csippen, vagy ha nem akarod, hogy legyen. Larduino HSP néven keressél rá. A MISO, MOSI, SCK lábak ugyanúgy a 11, 12 és 13-as jelű kimeneten vannak, mint az arduinónál. A teljes értékű használathoz telepítened kell a szükséges könyvtárakat. (32 MHZ, 12 bit ADC, 8 bit DAC, 4 timer, stb...) A hozzászólás módosítva: Szept 6, 2020
Arduino UNO-t megtáplálhatok úgy a tápegység csatlakozásán keresztűl, hogy közben a PC-re USB-n keresztűl van feldugva? Van egy nagy teljesítményt igénylő LCD, és debugolás közben az USB 500mA-e kevés neki.
Encodert szeretnék használni, de olyan programban, ahol több serial print is van nem működik. Próbáltam megszakítással, de azt vagy rosszul csinálom, vagy nem tudom, de nem működik.
Az alapötlet ebből indult ki: Bővebben: Link Erre lett átalakítva: Bővebben: Link A hiba, hogy nem ír ki semmit sem.
Hali!
Az isr szerintem soha nem fut, valamilyen irq-hoz hozzá kéne rendelni a setup()-ban... Egy jótanács még, interrupt kiszolgáló rutinba nem illik Serial.print-et tenni, az interruptban billents pl egy flag-et, és a főprogramban figyeld a flag állapotát
Íme egy kód enkóderre. Sajnos egyszerűbbre az én sekélyes tudásommal nem tudtam megírni. PCinterruptot használ, bármely lábra konfigurálhatod. Ez most a PORTD 4-es és 5-ös lábán van. A nyomógomb nincsen a programban, azt bármely módon le tudod programozni.
Az enkóder lábaira tegyél egy-egy 47 nanós szűrőt.
A hozzászólás módosítva: Szept 6, 2020
Nem, ne csinálj ilyet. Vagy az LCD-det cseréld le valami másra debug alatt, vagy az LCD menjen külön tápról, és csak a táp legyen közös. Illetve meg lehet próbálni azt is, hogy az USB kábelen elvágod az 5V vezetéket.
Az UNO-nál egy komparátor figyeli a tápcsatlakozón lévő feszültséget. Ha ez magasabb, mint 6,6-7 volt, akkor lekapcsolja az USB-ről érkező 5 voltot. A tápcsatról érkező feszültséget egy áteresztő stabilizátor stabilizálja 5 voltra. Amíg a tápcsatin bejövő fesz 6,6-7 volt alatt van, addig mindkét táp rákerül a Vin-re. Az ilyenkor létrejövő esetleges túláramokat egy biztosíték védi ki. De mivel a stabilizátornak kell 1-1,5 volt többlet feszültség, hogy a kimenetén megjelenjen a terhelhető 5 volt, így ilyen átmeneti állapotban sem történik semmi gond.
Átraktam a 3 és 4-es lábra, mivel a megszakítás UNO esetén csak a 2 és 3-as lábon működik.
Egy irányba tekertem, de a képen látható eredmény született:
A PCMSK2 regisztert viszont hagytad ott, ahol volt. Ott is át kellene írni, hogy másik lábra kéred a megszakítást.
Köszi, félig értem.
De nem kellene a "PCICR"-t is átírni? És hol látom, hogy mire kell átírni? PCICR = 0b00000100; PCMSK2 = 0b00110000; |
Bejelentkezés
Hirdetés |