- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Apple MacBook
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Milyen széket vegyek?
- Egérpad topik
- Teljesen az AI-ra fókuszál az új AMD Instinct sorozat
- Fejhallgató erősítő és DAC topik
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
vegyszer
addikt
Szervusztok!
Az a kérdésem, hogy ESP32 (M5Stack) vonalon van lehetőség külső szerverre (EzData, MQTT) írni adatot, de ha egy ciklust csinálok, hogy 60 másodpercig gyűjtse az adott pin-en az on/off jeleket, majd írja ki, és olvassa vissza a szerverről a gyűjtött, akkor ez elég lassú.
Konkrétan azt nem látom, hogy hogyan kell úgy csinálni a dolgokat, hogy több ciklus is úgy menjen, hogy az egyik várakozása nem akadályozza a többit.
Pl az írás olvasás a szerverre ne akadályozza a pin olvasását.
Mert most, hogy egyben van, addig, míg vissza nem olvasta az adatot, addig nem számol... -
Tomika86
senior tag
Sziasztok!
Építenék egy szélessávú lambda szonda áramkört ( [link] )
Teensy2.0 ++ AT90USB1286 uC-vel [link]
Másik uC is tudná ezt a rövidke programot? PID szabályozás, lookup tábla, átlagolás semmi bonyolult. Ki-Bemenetek száma szerint választanék kisebb IC-t, kevesebb lábszámmal.
3db analóg be, 3db pwm kimenet, 2db digit kimenet kellMilyen speciális funkciókat kell tudnia az ic-nek? időzítők pl, a pidhez?
Köszönöm!
-
autrcsab
csendes tag
válasz
Janos250 #17797 üzenetére
Köszönöm szépen az értékes megjegyzéseket és tanácsokat.
Pillanatnyilag a hardver összerakása folyik, gondot okozott, hogy a teensy 4.1 kártyából tévedésből az ethernet nélküli változatot rendelték, pedig az ethernetesre van szükség, hogy a GPS modul egység UDP-n keresztül tudjon kommunikálni a PC-vel.
Amikor elkészülünk, akkor szereljük fel a cuccokat egy traktorra.
Majd beszámolok róla, amikor eddig jutottunk.
-
Janos250
őstag
válasz
autrcsab #17796 üzenetére
Nekem a fő gondjaim a következők voltak, ami miatt végül el is akadt egy időre a dolog.
A bázis állomás.
Az egyik videóban mutatja is, hogy 8 cm a visszatérési pontosság, vagyis aznap pontosan tartja magát egy adott útvonalhoz, de másnapra ugyanez az útvonal már 8 cm-el arrébb lesz.
Ezért én úgy gondolom, hogy muszáj saját bázis állomást üzemeltetni. Ha elég közel van a célhoz - pl. egy fűnyírónál ez simán megoldható - akár WiFi-vel is mehet, nem kell internet se. Én jelenleg a fűnyíróm akkujával bajlódok, még a kipróbálásig sem jutottam, de valószínűleg nem is az AgOpenGPS-t fogom használni, a Windows igénye miatt. Pedig az tényleg nagyon sok mindent tud.
Elérhető ugyan Magyarországon hivatalos, pontos RTK korrekció, de elég drága, és nem tudja mind a négy rendszert.
Nem is mertem használni, mert féltem, hogy ha valamit elrontok, vagy feltörik, akkor hó végén százezres, vagy milliós használati díjat fizetek, mert nincs náluk "prepaid" lehetőség, hogy csak a fizetett korlátig lehessen elmenni.
A bázis állomást egy ISMERT koordinátájú pontra kell tenni. Ilyet úgy tudunk szerezni, hogy vannak nyilvánosan elérhető pontok, amiknek megtudható (persze pénzért) a pontos koordinátái. Ha a bázisunkat ideiglenesen erre a pontra helyezzük, akkor pontosan be tudunk mérni egy saját bázis helyet a roverrel. A GPS-EOV konverzió elvégezhető, ha - szintén némi pénzért - regisztráltunk.
Én úgy gondolom, célszerűbb EOV alapon dolgozni, mert az derékszögű, metrikus koordináta-rendszer. Már csak azért is, mert itt a következő probléma:
Honnan veszed a föld táblád koordinátáit? Én erre a Földhivataltól - szintén pénzért - megszerezhető helyrajzot tartom célszerűnek, ami némi tornamutatvány után, már használható adatokat ad.
Én másik típusú GPS chipet használok, nem elvi okokból, hanem így alakult az idők folyamán.
Mindenképpen célszerű olyan chipet használni, ami a nálunk elérhető mind a 4 hold rendszert (amerikai, orosz, kínai, EU) tudja használni, és mindkét freki tartományt.
Ezek az én tapasztalataim, de persze mindenki a saját bejárt útját választja, én is. -
autrcsab
csendes tag
Ez egy nyitott rendszer, a szoftverek és a hardverek is publikusak, ha rakeresel a github-on az AgOpenGPS-re, akkor megtalálod a szükséges szoftver forrásokat, van hozzá tartozó fórum is, illetve a youtube-on az AgOpenGPS kulcsszóhoz tartoznak videók, van magyar nyelvű is.
A hardver lényege: arduino kompatibilis kártyák biztosítják az illesztést a fő feladatokat ellátó PC-s szoftvernek:-) -
autrcsab
csendes tag
Sziasztok!
Nem foglalkozott már valamelyiktek AgOpenGPS rendszerrel?
Ez egy mezőgazdasági gépek automatikus kormányzását végző rendszer, én éppen most rakok egyet össze. -
-
Janos250
őstag
válasz
Undoroid #17788 üzenetére
"Még akkor is, ha kendácsolt! "
Nem annyira kendácsolt módszer. Például az autó ablaküveg mozgató is így működik. Nem azt figyeli, hogy felment-e teljesen, hanem, hogy elakadt-e. Ezzel az is megoldódik, hogy ha a gyerek keze ottmaradt, attól is megszoruljon, és megálljon. -
válasz
Undoroid #17788 üzenetére
Egyébként jobban belegondolva, valahogy úgy van megoldva a mechanika abban az 5V stepperben, hogy az áttétel ellenére - emlékeim szerint! - kézzel el lehet tekerni, tehát valahol csúszik valami benne. Szóval ez alapján ki lehet hagyni a végállás érzékelést, és a mechanikára hagyatkozni, ha úgy alakul.
-
Undoroid
őstag
válasz
Janos250 #17769 üzenetére
Szia Janos250!
Köszönöm a segítséget!
Igen, az Ördög nem alszik, de maga a vezérlő is csak akkor fog tápfeszt kapni, ha szükség lenne az elmozdításra!
A biztonság kedvéért megrajzolom a fém közlőkerék tervét és legyártatok párat belőle...az majd néhány grammos szorulás után nem engedi majd át a forgató erőt! Már ott tartok, hogy magát a kamerát fixre tenném és előtte egy tükröt mozgatnék! Így nem kellene a vezetékelését figyelni és akár 360 fokban is körbe lehetne forgatni a látószöget!
* * *
Ez a Lib már megvan!
Igen, sejtettem, hogy lesz benne valami "nem kerek" áttételi arány, ezért is írtam korábban, hogy nincs szükség a precíziós elfordulás mérésére és detektálására!
EZ az áramszenzoros megoldás még érdekes lehet...
...egy későbbi projektben még jól jöhet! Még akkor is, ha kendácsolt! Azokból szoktak a remek dolgok kisülni!
* * *
Dißnäëß
Ha esetleg finomabban szeretnéd szűrni a trafóból kijövő egyenirányított és pufferelt feszültséget, akkor a Graetz-híd belső diódáival (mind a néggyel, egyenként) köss párhuzamosan egy legalább 50V-os és max. 100nF-os kerámiakondit! Nagy adag 'zajt' tud leszedni a pufferelt feszültségről! Onnan mehetne a precízen beállított 317 ---> biztosíték ---> a tápfesszel párhuzamosan kötött Zener (Jól méretezd!!! Előbb lője ki az előtte lévő biztosítékot, mielőtt saját maga elpatkol!) -
-
fpeter84
senior tag
Sziasztok ismét!
Írtam egy saját lib-et kwp1281 protokol olvasáshoz, ami egymaga tökéletesen működik. A szépséghibája, hogy úgy tudtam megoldani a nem blokkoló és timeout-ot is figyelő adatgyűjtést a sorosportról, hogy egy globális rxbufferbe gyűjtögeti az információkat. Emiatt viszont ha egy második instance-ot is szeretnék inicializálni belőle, akkor az ugye ugyanabba az rxbufferbe dolgozna és szétgányolnák egymás adatait...
Csináltam egy egyszerű tesztlibet, amiben látszik hogy mi a problémám... Ezt hogyan illik feloldani, hogyan kellene úgy gyűjtenem egymástól függetlenül az adatokat hogy ne írjanak egymásra?
test_lib.ino
#include <test_lib.h>
test_lib instance0;
test_lib instance1;
void setup() {
Serial.begin(115200);
instance0.test_print();
instance1.test_print();
instance0.test_input(1,2,3,4,5,6,7,8);
instance1.test_input(8,7,6,5,4,3,2,1);
instance0.test_print();
instance1.test_print();
}
void loop() {
}
test_lib.h
#include <Arduino.h>
class test_lib
{
public:
void test_input(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
void test_print();
};
test_lib.cpp
#include "test_lib.h"
uint8_t testbuff[8];
void test_lib::test_input(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) {
testbuff[0] = d0;
testbuff[1] = d1;
testbuff[2] = d2;
testbuff[3] = d3;
testbuff[4] = d4;
testbuff[5] = d5;
testbuff[6] = d6;
testbuff[7] = d7;
}
void test_lib::test_print() {
Serial.print(testbuff[0]); Serial.print(" ");
Serial.print(testbuff[1]); Serial.print(" ");
Serial.print(testbuff[2]); Serial.print(" ");
Serial.print(testbuff[3]); Serial.print(" ");
Serial.print(testbuff[4]); Serial.print(" ");
Serial.print(testbuff[5]); Serial.print(" ");
Serial.print(testbuff[6]); Serial.print(" ");
Serial.println(testbuff[7]);
}
A program eredménye ugye az, hogy 2x kiírja a 8 7 6 5 4 3 2 1 sort ahelyett, hogy 1 2 3 4 5 6 7 8 és 8 7 6 5 4 3 2 1 lenne a végeredmény...
-
biker
nagyúr
De jót szívtam ma. Tegnap felprogramoztam egy Uno-t, ma elővettem egy másikat, nem lát usb portot az alaklmazás. restart, gép restart, kihúz bedug, anyázás, hogy bazzeg tegnap jó volt de jött frissítési üzenet, én hülye minek frissítettem, stb
Aztán hirtelen ötlet, másik usb, és tadaam, megy. A rohadt gyári kábelben az egyik data szál szakadt volt, a táp átment, panel feléledt, csak program nem kommunikált -
válasz
Dißnäëß #17780 üzenetére
Azért, ami miatt a diótát mint műfajt kitalálták ?
Nem tudom mire gondolsz.
Amikor a DTR pin alacsonyra vált, a kondi kisül, majd feltöltődik az ellenálláson keresztül. Mikor újra magasra vált, a kondi RESET láb felőli oldalán egy 10V-os tüske keletkezik, ha jól értem a kondi működését. Ezt a többlet feszültséget hivatott a dióda a táp felé elvezetni.
Javítsatok ki, ha tévednék!
-
válasz
gordonfreemN #17778 üzenetére
Nem mindegy, ahhoz, hogy az elvárt módon működjön, CH340 DTR kimenetére, sorba egy kondival ês a 328 tápjára 10k-val.
Állítólag utóbbi felesleges, mert van belső felhúzó ellenállás a RESET lábon, de a gyári lapra se véletlenül került rá, szóval a stabilitás érdekében én biztosan rátenném. A diódát se hagyd ki, az meg a kondi miatt kell.
-
gordonfreemN
addikt
Igen, rossz kereső szavakat használtam.
kérdés még: Ilyen esetben a RESET pin-t mire kössem? A CH340 DTR kimenetére, sorba egy kondival vagy mehet a 328 tápjáráa 10k-val, vagy mindegy? Ha jól sejtem ez csak egy induláskori reset ha tápon van és a CH340-en pedig minden felprogramozás indításánál egy resettel indít vagy fejezi be azt. Akkor célszerű a CH340-re kötni.
-
Dißnäëß
nagyúr
Obazz elveszett amit irtam.. szoval roviden:
6V AC graetz es pufferkondi utan 8.46V DC lenne kb, de nekem nem pontos 6V szekunderem van, hanem valamivel felette. Ez sztem trafo tervezesi dolog, mert maximalis terheles mellett kell hoznia a specifikaciokat, nem uresen.
Szoval ugy 8.85 vagy mennyi voltra tettem ra a mindent, es 7.3-8V kozott ugrandozott a fesz. Lehet h mikroszinten 5V ala is beesett, mindenesetre erdekes viselkedes.
Direktben a kondira teve sem akarta az igazat.
Ezert is gondolom azt, hogy aramban fogy el.
-
válasz
Dißnäëß #17775 üzenetére
Ha már 6V trafó, ne 5V-ra konvertáld, mert 6V-ból stabilizált 5V-ot nem is igen lehet, hanem konvertáld rögtön 3,3V-ra és add neki direktben! A kettős konverzió miatt elfűtöd az összes teljesítményt. Arra vigyázz, hogy a 3,6V-ot semmilyen körülmények közt ne lépd át, mert megsül a flash chip az esp-n, használj zener diódát.
Azt sem értem, hogy bírtál belőle bármeddig is 5V-ot kivenni. Valószínűleg a trafó üresjárati feszültsége jóval 6V fölött lehet. 6V-ból a Graetz-híd maga levesz 1,2V-ot, marad 4,8V. A stab kockán is esik kb ugyanannyi, marad ~3,6V. Mire ez eljutott az ESP-ig, az jó, ha 2,4V-ot kapott. Azzal nem csoda, hogy nem indult el.
-
válasz
Dißnäëß #17773 üzenetére
Nem tudom miért alakult így, de az a hobbim, hogy megpróbálok a lehető legminimálisabb hardverből a lehető legtöbb funkciót kihozni, avagy hogyan lehet egy feladatot megoldani egy olyan hardverrel, ami teljesen alkalmatlan az adott feladatra.
Például hogyan lehet 4 pin-re 9 különböző funkciót tenni port extender nélkül...
Vagy amikor attiny85 helyett attiny12-t küldtek Kínából, amit kizárólag assembly-ban lehet programozni, és voltam olyan fakír, hogy megtanultam, hogy ne kelljen kidobni (10 darab jött belőle), úgy csináltam belőle töltöttségjelzőt li-ion akkumulátorhoz, hogy nincs rajta analóg bemenet.Nem tudom amúgy minek kínlódsz azzal a trafóval, használj 5V/12V dugasztápot, mint mindenki más.
-
Dißnäëß
nagyúr
Igaz.. látszik, hogy a logikai (logikus) gondolkodás jobban Benned van. A rutin
Köszi az észrevételt, megfogadom.
- - - - - - - - - -- - - - -- - - - -- - - - -- - - - -- - - - -- - - - -Érdekeset tapasztaltam 10 perce.
Van a kis trafóm, HEStore-os Makrai nyák trafó, 6V szekunder, 4.5VA (750mA). Mögötte egy 6800-as kondi, amögött egy LM317T és a Texas Instruments szerinti bekötés, trim poti, satöbbi. Becsavarva jelenleg 5V-ra üresen. Úúú mondom de jóóó, a NodeMCU-mat ráaggatom, VIN lábán úgyis tud 4.x V-tól egészen 10V-ig fogadni (belső stabin megy át), hát ez kiváló.
Meg se moccan.
Ráakasztom a multimétert, hát úgy cibálja mint az állat a feszt.
Felcsavartam üresen maxra a potival a feszt, 8.7 körül vagy hol álltam meg (még a stabi fesz. ejtése is benne a szekunder után), ez üresen terheletlenül. Ráakasztom az ESP-t (azon meg az OLED kijelző, de ez nem osztott nem szorzott már), megint semmi. Lehúzom, várok pár mp-et pufferkondi teljen meg csurig
, oké, rákötöm, na beröffent. Szépen megy az animáció, de a multiméteren a számok csak úgy cikáznak
és csak úgy nulláról bekapcsolva nem indul.
Egy szó mint száz, nagyon-nagyon-nagyon határértéken minden és meg nem álmodtam volna, hogy ez a picike nyák trafó max egy Arduino micro-hoz lesz elég (ő azonnal indul vele, 5V-ra betekerve a stabit), úgyhogy most néznem kell valami "vadabb" kistrafót
Szóval most ez van (csak Makrai 750mA-es) és azon filózok, hogy ezek közül melyiket szerezzem be: ESP8266 Wifivel, 256x64 OLED, 3 szilárdtest relé (ezek elhanyagolhatók áramban), RTC+EEPROM kombó, illetve 4-5 DS1822+ hőmérő, hát kb.
Arra gondoltam, mivel az ESP-nek van saját belső stabija, és nagyjából minden említett motyót meghajt, nemigen lesz külön áramkörre szükségem, ergo választhatok 6V szekunderest ismét, LM317T nem is kell, meg semmi.. az ebből előállított-simított DC-t úgyis lentebb veszi még a teljes csomag terhelése, a stabizást ő belül elvégzi.. de akkor lehetne mondjuk egy 1667 mA-es ?
Vagy lövök egy 12V-os rendes kis pici toroidot és abból tudom stabistul mindenestül etetni az ESP-t is, egyéb kis fogyasztókat is (3.3-on), mindent, amit akarok.
-
válasz
Undoroid #17768 üzenetére
A LiquidCrystal library, amit Te keresel. A library példaprogramjai közt pedig biztosan találsz választ a kérdésekre. Ha elakadsz, segítünk.
Arra figyelj, hogy az 5V stepper motornak olyan lehetetlen belső áttétele van *, hogy nem fogsz egész számú osztót találni mondjuk 1° kitéréshez.
* A belső áttétele papíron 1:64, ami a valóságban 1:63.68, ez a gyakorlatban azt eredményezi, hogy 2048 lépés helyett 2037.5 lesz egy 360°-os teljes fordulat -
Janos250
őstag
válasz
gordonfreemN #17756 üzenetére
Én a hasonló dolgokat úgy oldottam meg, hogy olyan kész mikrokontrolleres panelt tervezek rá az én panelomra, amin minden szükséges dolog rajta van. Mivel én csak ESP32-t használok praktikus ok miatt, nem teszek fel panel képet, de korábban párat már tettem fel. Ha megnézzük az Easyedán lévő megosztott panelokat, többnyire ott sincsenek a kontrollerek egyedileg ráforrasztva, hanem kész panel van beleillesztve a user panelbe.
-
Janos250
őstag
válasz
Undoroid #17768 üzenetére
Én Aryes javaslata mellett vagyok! Hirtelen jött áramszünet, stb. miatt bármikor előfordulhat, hogy ismeretlen lesz a helyzete. A végálláskapcsolót én mindenképpen betenném. Vagy egy egyszerű mikrokapcsolót, ami például a 3D nyomtatóknál is prímán működik, vagy egy szintén könnyen kezelhető opto kaput. Persze lehet nélküle is megoldani, ha nagyon akarod, de akkor, ha valami miatt elvész a szinkron, bajlódni kell vele.
-
Undoroid
őstag
Nem fog előfordulni! Ez a motor egy kb. 20-30grammos kamerát fog irányban tartani egy búra alatt! A mozdítás pedig kizárólag horizontális irányban lesz (ha lesz) +- 5fokban! Ennél rosszabban, ha akarnám sem tudnám jobban melléállítani! Az utcaajtómban levő történéseket akarom vele látni!
Ami megvan hozzá:
- a kód a mozgatáshoz
- 16x2-es kijelző és a szükséges anyagok.Ami szükség lenne:
- az a kód, ami lehetővé tenné azt, hogy az elmozdítás mértékét kijelezze. Nincs szükség precíziós mérésre!
Nem várom el, hogy Vasárnap este ezzel foglalkozzon valaki pihenés helyett! Elég, ha valami példafeladatot kapok és abból ki tudnám bogarászni a végleges kódot!
Az ok, hogy a "kugli" a barátom, de ebben az esetben mi lenne a helyes keresőszó?
-
válasz
Dißnäëß #17764 üzenetére
Ha ennyire egyszerű a menü, oda tényleg kár egy gombnál többet pazarolni
Annyit akartam még megjegyezni, hogy írtad, hogy rövid meg hosszú gombnyomás mellett dupla meg tripla nyomással is operálnál, de utóbbi kettő felesleges, mert rövid és hosszú gombnyomással teljes mértékben meg lehet oldani az összes funkciót, amit felsoroltál. -
Dißnäëß
nagyúr
válasz
vegyszer #17753 üzenetére
Köszi a visszajelzést, még fúrhatok neki egy lyukat, semmibe nem kerül.
Elgondolkodom rajta.Annyi, hogy ez végfok-erősítő, azaz nincs hangerőszabályzója, az elé tett DAC-on szabályoz az ember hangerőt. Hacsak nem gondolom meg magam.. Magyarul a poti tényleg csak a menühöz kellene, abban viszont gyakran nem túr az ember, mert amúgy státuszt mutat csomó mindenről - és ennyi.
Akkor kellhet menüzni, mikor csőcsere van és az eltelt, gyárilag javasolt életciklus órák száma belement a 3 csőfajtába, mikor melyikbe mennyi.. ezt a számlálót lehet majd nullázni (csere alkalmával), illetve ha másfajta cső (katonai például, long life) kerül bele, akkor a treshold-ot is akár átállítani, hogy mikortól jelezzen cserét újra. Szóval sokmindent nem kell amúgy a mindennapokban túrni a menüben - igazából semmit. Zéró.
-
válasz
gordonfreemN #17762 üzenetére
Véletlenül én sem
Szerencsére alaposan körbe van dokumentálva minden open source Arduino lap. -
válasz
gordonfreemN #17758 üzenetére
Nyilván felhasználói oldalról - ha van rá felesleges szabad helyed a panelen, akkor - az a legegyszerűbb, ha teszel rá FT232-t meg usb csatlakozó aljzatot. Ha spórolni szeretnél vagy helyszűke miatt nincs rá lehetőség, akkor ISP.
Köztes megoldás lehet, ha csinálsz a panelre egy custom csatlakozót, amire kivezeted a RX,TX,GND,RESET lábakat, a kód feltöltéséhez pedig egy külön panelre teszed a FT232 chipet. Készen is lehet venni ilyen usb-uart konvertert.Hogy milyen kiegészítő alkatrészek kellenek, azt jól vissza lehet követni a bekötési rajzokról, például ezen 10k felhúzó ellenállás van a RESET lábon (330R feleslegesen kicsinek tűnik).
-
válasz
Undoroid #17759 üzenetére
Tehát nem fordulhat elő, hogy valaki kikapcsolt állapotban kézzel elmozdítja, vagy véletlenül nekimegy, vagy csak a gravitáció vagy más miatt elmozdul? Vagy véletlenül úgy veszed el a tápot, hogy nem a végálláson áll meg a mechanika, hanem valahol félúton?
Ok, ha Te mondod...Tulajdonképpen milyen kód az, ami hiányzik? A stepper mozgatására joystick segítségével már van kódod. Az LCD kijelzőhöz kell kód?
-
Undoroid
őstag
Szia!
Ez a motor egyszer lesz pozícionálva és lehet, hogy soha többet! Ha igen, akkor is csak maximum +- 5fokot. Ezért írtam, hogy nincs szükség a végállások figyelésére! Lehet, hogy elsőre pazarlásnak tűnik, de ezzel is tanulhatok/tapasztalhatok. Bármikor leszerelhetem a helyéről és építhetek majd más célú dolgot belőle!
-
gordonfreemN
addikt
Attól függ, hogy szeretném-e hogy kell-e? vagy jó-e ha van?
Tehát akkor ujra: a nano-ról leforrasztottam az atmega328-at (ellátási problémák miatt) és ezt fogom beültetni egy általam tervezett panelba, amit úgy látom sok féle képpen fel tudok majd programozni.
Azért nem programoztam fel még akkor a 328-at, mikor fent volt a nano-n, mert szeretném magán a beültetett panelon felprogramozni.
Tehát fel tudom programozni ISP-vel is, de ez plusz eszköz vagy az arduino uno-val is megoldható.
oks, ennek a bekötése hogyan nézne ki, milyen alkatrészek kellenek az atmega328 köré, hogy ez működjön?
Aztán lehet még gondolom FT232 chip-el is, ha mondjuk a panelomba ültetett 328 mellé teszek egy ilyen chipet.
Szóval keresem a legegyszerűbb de legpraktikusabb megoldást is, ahol a praktikussákot azon a síkon értem, hogy ha kell valamit módosítanom majd az programon, akkor a lehető legegyszerűbben tudjak ismét programot tölteni rá. Nyilván ezzel ki is lyukadtunk az USB kábelnél, FT232-t beültetve csak egy USB kábelre van szükség, de mondjuk az UNO-t se nagy szám mellé tenni, ha valamit írni kell rajta (ami lehet hogy soha nem fog megtörténni)ui.: például egy másik kérdés, kell-e a RESET pin-t felhúzni tápra? Ha igen, akkor 330R vagy 10k? Találtam mindenélre értéket is, meg azt is, hogy nem muszály ezt felhúzni.
-
válasz
gordonfreemN #17756 üzenetére
Nem feltétlenül szükséges USB a feltöltéshez, használhatod az ICSP csatlakozó lábait is a feltöltéshez:
Ehhez persze kell egy ISP programozó, ha nem akarsz ebbe beruházni, akkor egy másik UNO-t is lehet használni (Arduino as ISP). Ehhez még bootloader sem kell.
Szükséges külső 16MHz-es oszcillátor vagy elhagyható?
Hát a Nano-n eleve van külső oszcillátor, te anélkül szeretnéd használni? Asszem van rá mód, hogy belső oszcillátort használjon, de ahhoz, hogy átállítsd, kell egy külső oszcillátor. -
gordonfreemN
addikt
Sziasztok!
Mivel a programom elkészült, szeretném elkészíteni hozzá a panelt. Egy atmega328p TQFP tokot ültetnék majd be. Ezen már van bootloader, mivel egy arduino nano-ról lett leszedve.
A segítségeteket abban szeretném kérni, hogy ha tudjátok, leírnátok milyen alkatrészeket hova kell bekötni és hogyan kell ezután feltolni rá a programomat?
A neten nézelődök, de annyi az infó, hogy elveszek bennünk mindahányszor. Például lehet az arduino panelt használni is? Annak FT232 chip-jét is, de ezt akár be is ültethetem, ekkor már csak egy USB csatlakozóra lenne szükség?
Szükséges külső 16MHz-es oszcillátor vagy elhagyható?
Mik a szokások és mik az ajánlások? -
válasz
Undoroid #17754 üzenetére
Az a baj az elképzeléseddel, hogy nem tudod megúszni a végállás figyelést semmiképpen. Mivel a stepper motor pozíciója bekapcsoláskor ellenőrizhetetlen, ha te egy feltételezett pozícióhoz képest szeretnéd irányítani a motort, az előbb-utóbb szinte biztosan károsodáshoz fog vezetni.
Legalább 1 végállás kapcsolóra szükséged van, ha nem is kettőre, ennek hiányában vmi optikai módszerre a pozíció figyeléshez. -
Undoroid
őstag
válasz
Tankblock #17728 üzenetére
Szia!
Sajnos nincs meg minden infóm, mert teljesen nulláról kezdtem ezt az egész Arduino-témát! 2020 év végén vásároltam itt egy használt, hiányos készletet, amit idő hiányában nagyobb kihagyásokkal tudtam csak próbálgatni azokkal a mintafeladatokkal, amit kaptam az egyik ismerősömtől. Ezek csak ilyen "basic" feladatok voltak (LED-villogtatás, DHT11 szenzor használata, RGB ledes fényjáték, ULM2003 driver egyszerű használata, stb...) Az eddigi összes programutasítást azokból ismertem meg. Az azokkal való kísérletezgetésből "tudtam meg" a feladatukat. Bonyolultabb feladatok felé még nem mentem el, mert a megfelelő tudásom/ismeretem még az alapokhoz is nagyon kevés!
A mikrokapcsolós végállásfigyelést eleve elvetettem, mert nincs elegendő hely ezeknek és a motor illetve az Arduino között 6-10Méter távolság lesz. Mechanikus közlőkerékkel akartam megoldani az erőátvitel korlátozását, de sajnos csak műanyaggal rendelkezem és fémből egyediben legyártatni egy vagyon lenne...ezt is elvetettem. Ekkor láttam meg azt a videót, amit linkeltem!
A kódja nélkül sajnos ezt nem tudom megvalósítani.
EZ a videó viszont nagyon jókor jött! Sok 'leendő' kérdésre adott válaszokat és ráadásul Magyarul!
Bőven van még mit tanulnom!
-
-
Dißnäëß
nagyúr
Megvan !
És köszi a jószándékot. Csak rommá kellett bújnom a doksi(ka)t, picit elásta.
u8x8-nál volt még olyanja, hogy FlipMode() ami 0 vagy 1, de ez a nem-csak-karakteres u8g2, ide meg kellett ezt a triviális beállítást találnom. A többi kérdést megválaszolja a linkSzóval a Constructor List-ben, magában a kódban kellett a kikommentelt constructor sorban U8G2R0-t a végén R2-re tenni. R1 függőleges (90° CW), R2 pontosan amit akartam (180° CW), gondolom van még a másik függőlegesre (270°) R3 is, nem próbáltam
-
Dißnäëß
nagyúr
válasz
ekkold #17746 üzenetére
Köszönöm és az Előtted szólónak is, megnyugvással tölt el. Kimentem futni és a spirituális angyaloktól kezdve a majdnem-barátnőmmel történő szexen át gyorsan kikötött az agyam a 8266 leendő kódján és menüjén és úgy mindenén, viszont közben sürgősen meg kéne találnom Gugli bugyraiban valahol azt, hogyan fordítom meg 180 fokkal a kis OLED kijelző képét, mivel az oldalán lévő csatlakozói miatt csak fejjel lefele tudom beszerelni a nyílásba, hogy ne akadályozzák egymást a mellette lévő nyomógombbal (amit túl közel tettem a nyíláshoz, epic human error).
Aaaaah jól indul, hát ez sem az a smooth sailing lesz
-
Dißnäëß
nagyúr
Igazából vállvonós, csak nem szeretnék egy többnapos kódolás, szívás, tanulás, fejtörés, és vért izzadt eredmények után - most mondok valamit - 75%-nál megakadni, hogy feltöltésnél egyszercsak szól az IDE, hogy nem fér több bele. Akkor nagyon morci lennék, lehetne kódot optimalizálni vagy átírni, vagy komplett új kütyü nagyobb flash-el, vagy feltenném a kérdést, hogy micropython-al beleférnék-e és utána azt is, hogy vajon megőrültem-e, mert nem hiszem, hogy sokkal lean-ebb lenne a végeredmény más nyelvről, mint egy C++.
No, de addig is, hogy rájöjjek, hogyan osszam fel ezt a kis kontrolleremet mekkora "particiókra", találtam egy marha jó leírást arról, mi a különbség az EEPROM és a FLASH között és megint hatalmasat tanultam.
-
válasz
Dißnäëß #17740 üzenetére
Nézd meg, hogy mennyit tesz ki, ha egy teljesen üres sketch-et fordítasz le. Az ESP nem egészen úgy működik, mint az AVR-ek, ezen eleve elfoglal valamennyi helyet az oprendszer. Másrészt ha nem használsz filerendszert (FS), valamint úgy tudom az OTA részt is le lehet valahogy tiltani (legalábbis régebben le lehetett), akkor 4MByte felhasználható tárhellyel tudsz gazdálkodni, szemben az AVR-ek kbyte-jaival.
A lefordított program mérete nem csak a beírt sorok számától függ, hanem attól, hogy használsz-e olyan dolgot, amihez be kell fordítani valami standard (vagy 3rd party) library-t. -
Dißnäëß
nagyúr
Kedves Szakik !
Nézzétek el kezdő kérdésem, de egy igen hosszú, tényleg nagyon sok logikát, menürendszerben lépkedést szeretnék megvalósítani ESP8266-al a szobai erősítőmhöz.
Egyetlen gomb lesz előlapon, és ennek nyomkodásával fogok navigálni a menüben, illetve van hozzá egy 256x64 4-SPI OLED kijelzőcske is, amin a menüpontok, státusz, ilyesmik, mikor mi, megjelenik. Rövid nyomások, hosszú nyomások, két rövid, három rövid, ilyennel fogok operálgatni majd a menüben, meg lehet lesz egy visszaszámláló is minden egyes menüpontban a jobbfelső sarokban, ami kidobja az embert mentés és minden nélkül vissza az alapállapotba (vagy akár előző menübe, mindegy is most).
Elég lesz nekem a kódhoz - vélhetően - az ESP8266 ? Belefér vajon ?
Ugye a kis Arduino Leonardo-knál látom mindig, mennyi lett a program és néha elgondolkodom, hogy hűha, ez ilyen pici terület ?
Szóval amikor egy sima gyári Fade 15%-ot elvesz egy Micro-ból, akkor mire van esélyem egy ESP8266-al ? Itt 25%-ot eszik meg, oké, valszeg nagyobb az overhead, de úúúú
Sketch uses 263233 bytes (25%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28004 bytes (34%) of dynamic memory, leaving 53916 bytes for local variables. Maximum is 81920 bytes.Arduino IDE-t használok (Debian Testing legfrissebbet, apt install -al feltoltam), szokásos ESP library, Board Manager-ben pedig Node MCU.. látjátok. (A kütyü is az, ESP-F-em van, de ez az ESP-E-től csak antenna formában tér el, azt olvastam neten, a NodeMCU pedig 1-2 plussz könnyítő elektronikával van ellátva egy sima pucér ESP-hez képest).
Beleférhetek ? Most lehet megmosolyogtok, de na.
Milyen beállításon érdemes Szerintetek dolgoznom vele ?
Most ez van, ezt kaptam, a LED-en kívül semmit nem kellett állítanom, teszi a dolgát. -
Béééla
őstag
Ha valakinek új: YouTube-on indult egy Arduino tanfolyam nulláról. Hátha segít
-
válasz
gordonfreemN #17735 üzenetére
Jaj már
pinMode(mode_led1, OUTPUT);
Itt állítod kimenetre a pin-t. Azelőtt a pin bemenet (hi-z).Bocs, nem merültem el a kódban, hogy mivel mit csinál, csak a felmerült pin-spórolás témára reagáltam.
-
gordonfreemN
addikt
Na jó, de a doboz már megvan és egy LED-nek van hely
Azaz pontosabban 3 mod LED meg 3 set LED
Még mielőtt elmerülünk ebbe: ugyanezeket a LED-eket kell használni a bemenetnél is, ahol viszont van vezérlés minden beállított kimenetre és ez 3szor a 3 bemenetre.a kimenet bemenetre van állítva
ez nem világos. Hogy érted, hogy a kimenet bementre van állítva?
-
válasz
gordonfreemN #17733 üzenetére
Ezért ide már kellene eg, tranzisztor is, hogy amikor nincs fesz, akkor kapjon feszt a másik visszajelző led.
Kivéve akkor, ha minden kimenetre két ledet kötsz, egyiknek az anódját, másiknak pedig a katódját. Akkor az egyik csak magas, a másik csak alacsony szintnél világít.
Értelemszerűen a másik lábukat a +5V illetve GND-re kötve.
Mellékhatás: reset után, vagy ha bármilyen oknál fogva a kimenet bemenetre van állítva (hi-z) mindkét LED világítani fog egyszerre, ami egyébként hibajelzésnek is használható. -
gordonfreemN
addikt
Teljesen igazad van. Az első esetben amikor a bemeneteket vezérlem. A másik két esetben már gonsoloodóba estem, hogy hogyan tudnám megoldani, nyilván plusz alkatrészekkel.
Feltöltök hozzá egy rajzot.
Set-reset reléket használok a jel kapcsolására.
A kimenetvalasztás úgy történik, hogy set állapotban az egyik kimenet aktív, reset állapotban a másik. Ez vezérlö oldalról annyit tesz, hogy van a mikrovezérlő kimenetén fesz vagy nincs. Ezért ide már kellene eg, tranzisztor is, hogy amikor nincs fesz, akkor kapjon feszt a másik visszajelző led. Hasonló a helyzet az áramkör választó (cb) esetén is. Nyilván megfontolandó a kevés plusz alkatrész cserébe a felszabaduot kikenetekért. Ha kell. -
gordonfreemN
addikt
válasz
Tankblock #17729 üzenetére
Lehet rájöttem mire gondoltál, vagy ha nem is, olyan ötletet adtál, amivel megoldottam egy utolsó számomra zavaró jelenséget: bár működőképes volt a panel, mégis ha elég gyorsan nyomkodtam a mode gombot, akkor volt a mode változó 2 értékének 0-ra történő írásakor a ledek váltásában némi késleltetés.
A következő módosítással sikerült (már csak a loop-ot teszem be, a többi változatlan):void loop()
{
//vmod beállítása----------------------------------------------------------------------------------------
buttonstate_m = digitalRead(button_m); //gomb állapot kiolvasása
if (buttonstate_m != lastbuttonstate_m) //gombnyomás történt? Gomb állapota változott az előzőhöz képest?
{
delay(50); //ha történt változás az előző állapothot képest, várj 50ms-ot
if (buttonstate_m == 0) //ha a gomb nyomva, azaz bemenet értéke alacsony akkor
{
if (vmod < 2) {
vmod++; //növelje vmod változó értékét eggyel
}
else {
vmod = 0;
}
timer = millis(); //timer változó legyen millis aktuális értékével feltöltve
}
}
lastbuttonstate_m = buttonstate_m; //gomb előző állapotát írja be a gomb aktuális állapotának
if ((millis() - timer) > 5000) { //ha millis értéke mínusz timer értéke nagyobb mint 5sec (azaz eltelt 5mp)
EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
}
//vset beállítása------------------------------------------------------------------------------------------
if (vmod == 0) {vset = vset_in;}
if (vmod == 1) {vset = vset_out;}
if (vmod == 2) {vset = vset_cb;}
buttonstate_s = digitalRead(button_s);
if (buttonstate_s != lastbuttonstate_s)
{
delay(50);
if (buttonstate_s == 0)
{
vset++;
timer = millis();
}
}
switch (vset) {
case 0:
digitalWrite(set_led1, 1);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 0);
break;
case 1:
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 1);
digitalWrite(set_led3, 0);
break;
case 2:
if (vmod == 0) {
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 1);}
else if (vmod == 1 || vmod == 2){vset = 0;}
break;
default:
vset = 0;
break;
}
lastbuttonstate_s = buttonstate_s; //gomb előző állapotát írja be a gomb aktuális állapotának
//bemenet kiválasztása----------------------------------------------------------------------------------------
if (vmod == 0 && vset == 0) { //ha vmod nulla, akkor a bemenet beállítása történik és vset_in felveszi az aktuális vset értéket
vset_in = 0; //bemeneti változó beállítása
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 1); //bemeneti 1-es relé kiemenet HIGH
digitalWrite(in_relay2, 0); //bemeneti 2-es relé kiemenet LOW
digitalWrite(in_relay3, 0); //bemeneti 3-mas relé kiemenet LOW
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);} //csak ha set gombnyomás történik akkor az 1-es relé resetje LOW
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);} //csak ha set gombnyomás befejeződött akkor az 1-es relé resetje HIGH
}
if (vmod == 0 && vset == 1) {
vset_in = 1;
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 1);
digitalWrite(in_relay3, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
if (vmod == 0 && vset == 2) {
vset_in = 2;
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 0);
digitalWrite(in_relay3, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
//kimenet kiválasztása---------------------------------------------------------------------------------------
if (vmod == 1 && vset == 0) {
vset_out = 0;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 0);
digitalWrite(out_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
if (vmod == 1 && vset == 1) {
vset_out = 1;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 0);
digitalWrite(out_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
//áramköri lap kiválasztása-----------------------------------------------------------------------------------
if (vmod == 2 && vset == 0) {
vset_cb = 0;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 1);
digitalWrite(cb_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
if (vmod == 2 && vset == 1) {
vset_cb = 1;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 1);
digitalWrite(cb_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
//EEPROM írása------------------------------------------------
if ((millis() - timer) > 5000) {
EEPROM.update(1, vset_in); //tegye EEPROM-ba a vset_in változó értékét, ha az változott
EEPROM.update(2, vset_out); //tegye EEPROM-ba a vset_out változó értékét, ha az változott
EEPROM.update(3, vset_cb); //tegye EEPROM-ba a vset_cb változó értékét, ha az változott
}
//--------------------------------------------------------------------------------------------------------
//Serial.println(buttonstate_s);
}
A mode változónál kivettem a switch case-t és egy egyszerű if-el helyettesítettem -
válasz
gordonfreemN #17730 üzenetére
Fölösleges külön kimenetre tenni a LED-eket, amikor a vezérelt kimenetre is kötheted, ami elbír egyszerre egy relével és egy LED-del is, ezzel kódot, memóriát, kimenetet takarítasz meg és kellemes mellékhatás, hogy mindig a kimenet valós állapotát fogja visszajelezni, akkor is, ha mondjuk valami miatt lefagyna vagy resetelődne a program.
-
gordonfreemN
addikt
válasz
Tankblock #17729 üzenetére
Ha jól értem ezt a #define-t akkor ez annyi, hogy kevesebb program memóriát használ fel ezért lenne nekem jobb?
Az EEPROM csak akkor ír ha változik, egyébként nem. Az update vizsgál és csak ha van változás, akkor ír.
De egyébként lehetne úgy is, hogy teszek rá egy if ágat és csak akkor léptetem bele ha volt gombnyomás így a loop nem hajtaná végre minden ciklusban a parancsot.Nem sok időm van a C++-ra most, utolsó félévem következik plusz államvizsga (nem programozásból
) de köszi a tippet, észben fogom tartani, ha lesz kapacitás, elkezdem olvasgatni a témát.
Személy szerint a Python jobban megtetszett a C mellett. Azt nem tudom piacképes-e, illetve abból mit tudok majd felépíteni a későbbiekben, de ezeket amúgy inkább csak érintőleges tanultuk. Épp ezért kezdtem el arduino-zni, hogy ne vesszen az a kevéske tudás sem.
Viszont érdekelne ez az interrupt-os téma. Ebben tudsz néhány mondattal segíteni még, hogy hogyan is gondoltad? Akár egy egyszerű de hasonló példán keresztül, mint amit feltettem (abból egy részlet mondjuk).
Egy portra nem bírom tenni, mert nincsenek összerendelve a ledek és a be/kimenetek fizikailag, a kettő közt a program teremt kapcsolatot. Arra gondolok, hogy míg a SET LED kapcsolja a bemenetet is, addig a kimenetet is meg még egy áramkör váltást is kezel. Vagy félre értettelek?
Ami lemaradt az előző hsz-emből, arduino uno-ról van szó. Bár ez lehet egyértelmű volt
-
Tankblock
aktív tag
válasz
gordonfreemN #17726 üzenetére
Szia
Első blikkre használhatsz
#define
-t a PIN definícióhoz...Az EEPROM kiírást gondold át még egyszer, mert első blikkre minden 5 [sec] kiírod, és nem azt csinálod amit szeretnél. Ezzel lassan elhasználod EEPROMOT.... Elegendő ha volt valós change kiírni azt ahol volt change.
Én a gombokat csak interruptból figyelném, ha van változás akkor azt as loopba kezelném, hogy hol vagy a "menüben", és csak a setgomb változására kezdenék neki a funkció szerint a LED ill a relay kapcsolásoknak.
Ha beleásod magad a C++ rejtelmeibe is akkor nagyon sokféle megoldást fogsz találni.
A HW PIN kiosztást lesd meg, - én most nem tettem meg - mert ha egy portra teszed LED és a kimeneteket akkor 1 port írással megúszhatod az egészet.... De ez már csak szépség....
-
Tankblock
aktív tag
válasz
Undoroid #17727 üzenetére
Szia
A linkelt mikrokapcsolós végállásfigyelést be tudod tenni ....
Szerintem minden infod megvan,A léptetés előtt megnézed, hogy a kapcsoló be van -e kapcsolva, ha igen akkor nem lépsz arra. Ez mind a két irányba működik, és relatíve olcsó. A kapcsoló lehet optokapu is....
Mire lenne még szükséged ?
-
Undoroid
őstag
válasz
Tankblock #17719 üzenetére
Szia!
Nem akarom precízen tudni az elfordítás mértékét, hanem csak annyit, hogy tudjam azt a pontot, amikor még nem töröm össze mechanikusan az egész tákolmányomat...esetleg azt megoldanám, hogy az elforgatást egy bizonyos szög után nem engedné tovább a program. Onnantól már csak visszafelé mehetne...
-
gordonfreemN
addikt
Sziasztok. Próbálkozok az első programom megírásával. Tulajdonképp működik, de azért közszemlére teszem, lehet e bármit elegánsabban megoldani.
#include <EEPROM.h>
const int mode_led1 = A2;
const int mode_led2 = A3;
const int mode_led3 = A4;
const int set_led1 = 11;
const int set_led2 = 12;
const int set_led3 = 13;
const int in_relay1 = 4;
const int in_relay2 = 5;
const int in_relay3 = 6;
const int out_relay1 = 7;
//const int out_relay2 = 8;
const int cb_relay1 = 9;
//const int cb_relay2 = 10;
const int reset_relay_cb = 1;
const int reset_relay_out = 2;
const int reset_relay_in = 3;
const int button_m = A0; //mode gomb
const int button_s = A1; //set gomb
bool buttonstate_m;
bool buttonstate_s;
bool lastbuttonstate_m;
bool lastbuttonstate_s;
byte vmod;
byte vset;
byte vset_in;
byte vset_out;
byte vset_cb;
unsigned long timer;
void setup()
{
//Serial.begin(9600);
pinMode(mode_led1, OUTPUT);
pinMode(mode_led2, OUTPUT);
pinMode(mode_led3, OUTPUT);
pinMode(set_led1, OUTPUT);
pinMode(set_led2, OUTPUT);
pinMode(set_led3, OUTPUT);
pinMode(in_relay1, OUTPUT);
pinMode(in_relay2, OUTPUT);
pinMode(in_relay3, OUTPUT);
pinMode(out_relay1, OUTPUT);
//pinMode(out_relay2, OUTPUT);
pinMode(cb_relay1, OUTPUT);
//pinMode(cb_relay2, OUTPUT);
pinMode(reset_relay_in, OUTPUT);
pinMode(reset_relay_out, OUTPUT);
pinMode(reset_relay_cb, OUTPUT);
pinMode(button_m, INPUT);
pinMode(button_s, INPUT);
buttonstate_m = 1;
buttonstate_s = 1;
lastbuttonstate_m = 1;
lastbuttonstate_s = 1;
digitalWrite(set_led1, 1);
digitalWrite(set_led2, 1);
digitalWrite(set_led3, 1);
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 1);
delay(500);
vmod = EEPROM.read(0); //"mode" tárolt értéket a vmod változóba ír
vset_in = EEPROM.read(1); //"set_in" tárolt értéket a vset változóba ír
vset_out = EEPROM.read(2); //"set_out" tárolt értéket a vset változóba ír
vset_cb = EEPROM.read(3); //"set_out" tárolt értéket a vset változóba ír
//az eeprom vmod, vset_in stb tartalom legelőször 255 lesz, ha e változók eepromtartalma nem 0,1 vagy 2, akkor legyen 0
if ((vmod < 0) || (vmod > 2)) {vmod = 0;}
if ((vset_in < 0) || (vset_in > 2)) {vset_in = 0;}
if ((vset_out < 0) || (vset_out > 1)) {vset_out = 0;}
if ((vset_cb < 0) || (vset_cb > 1)) {vset_cb = 0;}
//bekapcsoláskor a ki-be és schematik választók (relék) beállítása az eltárolt értékre-----------------------------------------------
if (vset_in == 0) {
digitalWrite(in_relay1, 1);
digitalWrite(in_relay2, 0);
digitalWrite(in_relay3, 0);
digitalWrite(reset_relay_in, 0);
delay(20);
digitalWrite(reset_relay_in, 1);
}
if (vset_in == 1) {
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 1);
digitalWrite(in_relay3, 0);
digitalWrite(reset_relay_in, 0);
delay(20);
digitalWrite(reset_relay_in, 1);
}
if (vset_in == 2) {
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 0);
digitalWrite(in_relay3, 1);
digitalWrite(reset_relay_in, 0);
delay(20);
digitalWrite(reset_relay_in, 1);
}
if (vset_out == 0) {
digitalWrite(out_relay1, 1);
digitalWrite(reset_relay_out, 0);
delay(20);
digitalWrite(reset_relay_out, 1);
}
if (vset_out == 1) {
digitalWrite(out_relay1, 0);
digitalWrite(reset_relay_out, 0);
delay(20);
digitalWrite(reset_relay_out, 1);
}
if (vset_cb == 0) {
digitalWrite(cb_relay1, 1);
digitalWrite(reset_relay_cb, 0);
delay(20);
digitalWrite(reset_relay_cb, 1);
}
if (vset_cb == 1) {
digitalWrite(cb_relay1, 0);
digitalWrite(reset_relay_cb, 0);
delay(20);
digitalWrite(reset_relay_cb, 1);
}
timer = 0;
}
void loop()
{
//vmod beállítása----------------------------------------------------------------------------------------
buttonstate_m = digitalRead(button_m); //gomb állapot kiolvasása
if (buttonstate_m != lastbuttonstate_m) //gombnyomás történt? Gomb állapota változott az előzőhöz képest?
{
delay(50); //ha történt változás az előző állapothot képest, várj 50ms-ot
if (buttonstate_m == 0) //ha a gomb nyomva, azaz bemenet értéke alacsony akkor
{
vmod++; //növelje vmod változó értékét eggyel
timer = millis(); //timer változó legyen millis aktuális értékével feltöltve
}
}
switch (vmod) {
case 0: //ha értéke null
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
break;
case 1: //ha értéke egy
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 0);
break;
case 2: //ha értéke kettő
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 1);
break;
default: //ha értéke bármi más mint az előzőek
vmod = 0; //akkor vmod értéke legyen null
break;
}
lastbuttonstate_m = buttonstate_m; //gomb előző állapotát írja be a gomb aktuális állapotának
if ((millis() - timer) > 5000) //ha millis értéke mínusz timer értéke nagyobb mint 5sec (azaz eltelt 5mp)
{
EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
}
//vset beállítása------------------------------------------------------------------------------------------
if (vmod == 0) {vset = vset_in;}
if (vmod == 1) {vset = vset_out;}
if (vmod == 2) {vset = vset_cb;}
buttonstate_s = digitalRead(button_s);
if (buttonstate_s != lastbuttonstate_s)
{
delay(50);
if (buttonstate_s == 0)
{
vset++;
timer = millis();
}
}
switch (vset) {
case 0:
digitalWrite(set_led1, 1);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 0);
break;
case 1:
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 1);
digitalWrite(set_led3, 0);
break;
case 2:
if (vmod == 0) {
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 1);}
else if (vmod == 1 || vmod == 2){vset = 0;}
break;
default:
vset = 0;
break;
}
lastbuttonstate_s = buttonstate_s; //gomb előző állapotát írja be a gomb aktuális állapotának
//bemenet kiválasztása----------------------------------------------------------------------------------------
if (vmod == 0 && vset == 0) { //ha vmod nulla, akkor a bemenet beállítása történik és vset_in felveszi az aktuális vset értéket
vset_in = 0; //bemeneti változó beállítása
digitalWrite(in_relay1, 1); //bemeneti 1-es relé kiemenet HIGH
digitalWrite(in_relay2, 0); //bemeneti 2-es relé kiemenet LOW
digitalWrite(in_relay3, 0); //bemeneti 3-mas relé kiemenet LOW
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);} //csak ha set gombnyomás történik akkor az 1-es relé resetje LOW
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);} //csak ha set gombnyomás befejeződött akkor az 1-es relé resetje HIGH
}
if (vmod == 0 && vset == 1) {
vset_in = 1;
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 1);
digitalWrite(in_relay3, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
if (vmod == 0 && vset == 2) {
vset_in = 2;
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 0);
digitalWrite(in_relay3, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
//kimenet kiválasztása---------------------------------------------------------------------------------------
if (vmod == 1 && vset == 0) {
vset_out = 0;
digitalWrite(out_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
if (vmod == 1 && vset == 1) {
vset_out = 1;
digitalWrite(out_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
//áramköri lap kiválasztása-----------------------------------------------------------------------------------
if (vmod == 2 && vset == 0) {
vset_cb = 0;
digitalWrite(cb_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
if (vmod == 2 && vset == 1) {
vset_cb = 1;
digitalWrite(cb_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
//EEPROM írása------------------------------------------------
if ((millis() - timer) > 5000) {
EEPROM.update(1, vset_in); //tegye EEPROM-ba a vset_in változó értékét, ha az változott
EEPROM.update(2, vset_out); //tegye EEPROM-ba a vset_out változó értékét, ha az változott
EEPROM.update(3, vset_cb); //tegye EEPROM-ba a vset_cb változó értékét, ha az változott
}
//--------------------------------------------------------------------------------------------------------
//Serial.println(buttonstate_s);
}
A működése:
Ez egy be és kimenetválasztós előerősítő lenne majd.
vmod kiválasztja, hogy be vagy kimenet
vset a be vagy kimeneten belül kiválasztja, hogy melyik (0,1,2 ami pl be esetén hasamraütök, TV, CD, PC).
nem szeretném, hogy elfelejtse a beállított értékeket kikapcsolás után, mivel nem szeretnék minden bekapcsolást azzal kezdeni, hogy beállítom a be és kimeneteket amiket épp használnék - ezért az eepromos huncutság.
Illetve amikor beállítom a bemenetet, majd a kimenetet, aztán mégis visszaléptetem a mod-dal a bemeneti választásra, akkor a visszajelző LED (digitalwrite-ok a switch-ben) a bemenet aktuális allapotát jelezze, ne pedig maradjon ott, ahova a kimenetkor állítottam. -
Dißnäëß
nagyúr
Hát ez marhajó, köszi.. a linket is.. hidroponikus motyó is jó, amúgyis imádom a hidroponikus kertet.
-
biker
nagyúr
válasz
Dißnäëß #17723 üzenetére
van 3 ilyenem, ez elemes időzíthető csepegtetős, kombinálhatod akár akvapóniával is.
Az irodai teszt installáció elvan kb 2 éve
itt van egy 25liters akva, ebből szívja a halkakis vizet, napi 2x30mp elég ezeknek a kis igényű növényeknek, és versenyban a halas fénycső, normál fénycső, piros-kék led, 4000K led
na nem offolok tovább, ígérem, max írsz PM ha kérdés van -
Dißnäëß
nagyúr
Atyaég, értem amit mondasz, de ez iszonyú profi megoldás, ennyire nem rohanok előre.
Bevallom, kiskertet szeretnék. Most mindenki be van ijedve, én ugyan nem, de már 5 éve filózok ilyenen. Kicsiben indulni, pl. a kertben leteszek egy ~3x4-es alapot, arra egy kreatívan megcsinált "kisház", ahol a tető mondjuk ütésálló fóliázott biztonsági üvegezett valami (jégeső..) és alatta tudnék alkotni. Megtehetem tök legálisan, beépíthetőség, stb.. minden engedi.
"Piramis" jellegű állványzat pár gerendából-lécből, hosszúkás vízszintes "muskátlis" kaspók egymás mellett-felett, eltolva mindig eggyel bentebb, így mind kap (természetes) fényt. Oldalról mint egy "A" betű, aminek a száraira teszem fel lépcsőzetesen ezeket.
És akkor paradicsom, paprika, uborka, bab - elsőre. Hagyma.. De még lehet ezt is átgondolom, mindenesetre a húsmentest is kidolgoznám és a bab jó fehérjeforrás. Meg még biztosan lehet mást is.
A cél az lenne, hogy kitanuljam ennek csínját-bínját, ellátni nem fog ennyi nyilván, de szeretném megtanulni ezeket. Az egyes növényeket ismerve, folyadékigényüket (is), lehet tudnék automatizálni (csepegtetést-locsolást mindenképp), a fénymérő és hőmérséklet mérő pedig kiadná idővel, hogy mennyi természetesen fény érte őket és milyen hőmérséklet mellett akkor mennyi nedvesség kellhet. Most csak hangosan agyalok, teljesen kezdőként-laikusként, de szeretném ezt megtanulni.
-
Tankblock
aktív tag
válasz
Undoroid #17718 üzenetére
Ha az elforgatás mértéke érdekel, akkor annyit kell tudnod, hogy 1 step az hány fok, és azt hogy steppet lépsz vagy microsteppet. --> Motor datasheet segít 1.8 fokos vagy más.
Ugye a microstep az egy step felosztva annyiad részre ahány microstep.
Microsteppet normál esetben csak motorvezérővel fogsz tudni megoldani, annke ez paramétere lesz valahol....Ezek után ha tudod a loop elején h jobbra vagy balra forgatod a steppert, ki tudod számítani a fokot is... Az LCDre kiírod majd kiadod motornak a forgás fvg h merre is csináljon mit....
-
Undoroid
őstag
válasz
Undoroid #17717 üzenetére
Kicsúsztam
a szerkesztési időből, mire megtaláltam a videót: KLIKK
" Sajnos a videó kommentjei közötti "Code?" kérdésre nem érkezett válasz! " Vagyis érkezett, rosszul emlékeztem: " The test code had been deleted!!!! " Ezzel, ugye egy olyan kezdő, mint Én nem tud elindulni...belógatta a mézesmadzagot ezzel a videóval és törölte a kódot!Valaki tudna valami támpontot adni ezzel kapcsolatban? Nem kérem senkitől, hogy oldja meg helyettem a feladatot, mindössze iránymutatásra lenne szükségem...
Mielőtt belebonyolódnánk az egészbe: nem kell a uC-nek megjegyezni az utolsó értéket! Azt minden bekapcsoláskor 0-ról kezdene számolni!
Előre is megköszönném mindenkinek a Rám fordított idejét...ha lesz ilyen!
-
Undoroid
őstag
Egy újabb kérdésem lenne EZZEL a projekttel kapcsolatban...
Amikor túrtam a NET-et a furatképpel kapcsolatban, akkor belefutottam egy YT-videóba, amiben ez (?) az összeállítás volt megplusszolva egy 2x16-os LCD kijelzővel. A kijelzőn mindössze annyi volt olvasható, hogy a vezérlő mennyit léptetett + és - irányba! Sajnos a videó kommentjei közötti "Code?" kérdésre nem érkezett válasz!
Az lenne a kérdésem, hogy az eredeti kódot át lehetne úgy írni, hogy kezelje az LCD-t, az pedig indikálja az elforgatás mértékét?
-
biker
nagyúr
válasz
Dißnäëß #17712 üzenetére
Dehogyis, a hobbi az hobbi, nyomjad neki
Csak a talajnedvesség mérése (a talaj egy adott részén) lehet félrevezető a gyökérzet egészére nézve.HA a napot akarod dimmelni, akkor Zeus lámpa, és ehhez lehet venni érintőképernyős vezérlőt, emi 2 csatornán (mondjuk két külön terem) 50 lámpát kezel egyszerre, óránként beállítható hideg fehér, meleg fehér, és UV arányokkal, napkelte napnyugta szimulálható a növénynek akár.
PWM jelekkel operál, akár csinálhatsz is rá egy vezérlőt te magad. -
Janos250
őstag
válasz
Dißnäëß #17712 üzenetére
Ha profi megoldást akarsz, akkor persze még a napot is dimmelhetővé kell tenned, de kérdés, akarsz-e ilyen profi, méregdrága megoldást, vagy maradsz az egyszerűbb, olcsóbb, de kevesebbet tudó megoldásnál. Ez utóbbi az Arduino! :-) Ezért (is) szeretjük! :-) Nagyon sokszor elegendő az, amit az Arduino tud! Én ennél maradnék.
Csatlakozásokra én azt csinálnám, hogy a szenzorokhoz valami kis panelka, ami vagy vezetéken, vagy WiFin kapcsolódik össze. A router hibája kiküszöbölhető az ESPNOW megoldással, mert ott nem igazi WiFi kapcsolat van, csak a WiFi hardverrel az egyes egységek MAC címmel tartják egymással a kapcsolatot, nincs pl. IP cím. (Ezt is csak elméletből tudom, még jutottam odáig, hogy kipróbáljam.) Ennél a megoldásnál az Espressif elég kevés információt tesz közzé, nem nagyon lehet vele variálni, csak azt lehet, és úgy, ahogy ők leírták. Például az ESP32-nél az egyes perifériakezelések regiszterei, és azok használata is elég jól le van írva, a WiFinél még azt sem tudjuk, melyik címtartományban van. -
Undoroid
őstag
válasz
Janos250 #17708 üzenetére
Szia!
Köszönöm a sok keresgélést, de sajnos ezek nem a legjobb kiindulási alapok! Annyit viszont segített, hogy a forrcsúcsok közül a 'belső négy' (szürke körök) megadja / megadják a Joy 'gombájának' a középpontját! Látszik a képen, hogy a négy pont átlójának metszőpontjában ott lehet a 'gomba' közepe! Sajnos ehhez is ki kell forrasztanom az egész elektronikát a hordozóról, de az alapján már össze tudok hozni egy teljes furatképet (sablont) a Joy furatairól!
Vagy lenyomatot veszek egy négyzetrácsos papírral a panel forrcsúcsairól és abból rajzolom vissza a furatképet...
" Aztán persze az is elgondolkodtató, hogy ha VÁM-mal, ÁFA-val, szállítással 500 forintért bejön Kínából, érdemes-e sajátot csinálni. " Úgy tűnik, hogy félreértettél! Nem egy új ilyen szerkezetet akarok építeni, hanem a meglévőt szeretném valami előlapba beleszerelni, ahol szépen tudja majd a dolgát végezni és védve lesz a külső, ártó behatásoktól!
-
biker
nagyúr
válasz
Dißnäëß #17707 üzenetére
szerintem túlbonyolítod (növényvilágító lámpákkal foglalkozunk), ilyen helyeken a jó megoldás vagy agyaggolyós hidrós megoldás, ahol folyamatos csepegtetés van, esetleg időzítővel csepegtető ki-be, vagy ebb-flood rendszer ami szintén mezei időzítővel ár-apály rendszerrel nedvesít.
A talajnedvesség érzékelés féle ultrahightech nagyon kevés növénynek kell, vagy a határok feszegetésekor, pl magas hőmérsékleten és páratartalmon co2 beoldással hozamot növelni, mert ha nincs elég hőmérséklet akkor a co2 nem hasznosul eléggé.
Fényből meg ha automatizálni akarod úgy igazán, akkor csatornánként dimmelhető lámpa (hideg-meleg fehér, UV, IR, FR sávok), és akkor lehet recepteket kialakítani, de ahhoz spécibb fényérzékelők kellenek, mert a klasszik lux mérők erre nem alkalmasak. -
Janos250
őstag
válasz
Undoroid #17706 üzenetére
Szia!
Megnéztem, töltöttem le ilyen fájlt, de sokra nem jutottam.
Esetleg az Alin a panel képe alulról?
https://www.aliexpress.com/item/1005002740079191.html
vagy felülről?
https://www.aliexpress.com/item/4001276857056.htmlVagy erről a képről:
https://sensorkit.joy-it.net/de/sensors/ky-023Esetleg erről a képről, itt vannak mértek, lehetne arányosítani.
https://lastminuteengineers.com/joystick-interfacing-arduino-processing/Aztán persze az is elgondolkodtató, hogy ha VÁM-mal, ÁFA-val, szállítással 500 forintért bejön Kínából, érdemes-e sajátot csinálni.
-
Dißnäëß
nagyúr
Sziasztok Urak, szerintetek kell nekem egy mini üvegházas projektke automatizálásához a sok-sok szenzorhoz és ahhoz a pár víznyitó-záró szelephez egy marék Arduino (pl. pici Leonardo-kat tenni X kaspónként és őket szólítani meg wifin keresztül), vagy jobban járok 1db Mega-val, ami letudja mondjuk az 5V-os Arduino ökoszisztémát és egy ESP-vel vagy akár Pi-vel, amivel meg a 3.3V-os motyókat tudom vezérelgetni. Ezek nyilván összebeszélnének, ...
Ti hogy csinálnátok legegyszerűbben ? És bíznátok a wifiben amúgy ? Nyilván ha lehal, ugrott az egész, ezért gondolkodom valamiféle busz rendszeren, amiről minden cserépben lévő szenzor felrak adatot (vezetéken, vagy vezeték nélkül, de a wifivel az a gondom, hogy ha a router lehal, ugrott minden, esetleg több eszközből csinálok mesh-t, de minek bonyizzam + drága is).. szóval .. inkább valami 1-wire-re gondoltam és digitális címzésre, hogy egyetlen eszközön fizikailag csak kevés tüskét foglaljak el a vezetékes kapcsolattal és akkor erre meg mindegyik szenzort és/vagy kontroll eszközt fel tudom aggatni és digitálisan címezni, elérni.
Egyszerűre gondoljatok: pár kaspó ilyen növénynek, pár kaspó amolyannak, megint pár kaspó a harmadiknak, semmi különös. Mindegyikben lenne 1 talajnedvesség szenzor, meg kontrollálnám valami elektromosan vezérelhető szeleppel a vizet is nekik (csepegtetés valszeg, de nekem az is oké, ha kinyit, locsol X mp-ig, majd elzár).
Meg talán egy fénymérő még. Ennyi.
Nem akarom hülyére bonyizni, de jó kis önmenedzselő valamit vizionálok.
Van egy régi öreg Pi1B-m, befoghatnám, meg ilyenekre lövök (úristen... mikor legutoljára vettem, még $1.5 volt darabja, de apám 0.99-ért is kapott).A vezeték híve vagyok, lehet nem wifiznék, de érdekelne a véleményetek.
A "mindent látó és intéző" központi agy ideája (Pi) és a kaspónkénti Arduino, némileg oda letolt logikák közt billegek. Ha a Pi összekakilja magát (megeshet, mint mindennel), mivel ide van hozva programba a vezérlés az utolsó mindenségig is, az egész kisház lehalna. Ha pedig a kaspónként elhelyezett kis Arduino-kba ki van ez téve, vagy legalábbis a vezérlési logika egy darabja, akkor viszonylag autonóm módon is elmennek ezek, akkor is, ha a központi agy, a Pi még létezik és irányítja őket.
Én arra gondoltam, hogy kaspónként egy ilyen kis Arduino, és a Pi arra lehetne jó, hogy egyetlen paraméter-változást, parancsot, akármit, egyszerre juttassak el mindegyik - önállóan autonóm - Arduino-hoz.
Túlbonyizom, lehet, de szeretnék egy optimális logikát/setup-ot kitalálni.
Ha van kedvetek - nem akarok untatni senkit ilyenekkel - szívesen látnék pár gondolatot, bármi jöhet, tapasztaltabbaktól.
-
Undoroid
őstag
válasz
Janos250 #17688 üzenetére
Szia Janos250!
Csináltam egy próbatákolást a Joy-hoz, de a középső furat (4 szélső a felfogatás és egy maga az irányító) egy kicsit mellé ment. Nem-e lehet valahonnan megszerezni a pontos furattávokat erről a Joy-ról? Sokat keresgéltem a NET-en, de nem találtam. Ezekben a 3D-s nyomtatási tervekben nem találhatóak meg ezek a méretek? Valahogyan nem-e lehet kimenteni ezeket az adatokat?
Ellenkező esetben kénytelen leszek leforrasztani mindent a hordozópanelról és úgy méretet venni... -
fpeter84
senior tag
[itt] tudsz mazsolázni a microchip kínálatából - I2C-re vannak 2 és 4 bemenetes I2C AD-k is, pl az MCP3424 vagy MCP3428... lehet picit feleslegesen túl okosak a célra, de ha a költségvetés elbírja a bruttó ~2e-es árát akkor még arduino támogatást is hozott hozzájuk a gugli, találsz lib-et példaprogikkal - itthon a chipcad-nél vannak is raktáron...
ja meg elhangzottak a multiplexerek is, ha nem kell nagy sebességgel olvasni az analógokat, akkor az is lehet jó megoldás hogy pár analógnak jelölt lábat digitként használsz, és azzal kapcsolgatsz egy multiplexert az 1db analóg lábra és úgy olvasod a sok sok bemenetet egyesével
Új hozzászólás Aktív témák
Hirdetés
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Azonnali készpénzes Sony Playstation 5 lemezes és digitális felvásárlás személyesen/csomagküldéssel
- Eredeti DELL 240W töltők (LA240PM160)
- LG 55C3 - 55" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- Telefon felváráslás!! Xiaomi 13T, Xiaomi 13T Pro, Xiaomi 14T, Xiaomi 14T Pro
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest