-
GAMEPOD.hu
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
-
nyunyu
félisten
USB billzet agynak milyen miniatur Arduino kompatibilis cuccot ajanlotok?
Gondolom Mega32u4 procisokban kell gondolkoznom a nativ USB miatt.
Ha jol szamoltam, kellene vagy 20 I/O lab raTeensy 2.0++ picit sokba kerul.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz qisqaqas #535 üzenetére
Jol hangzik, bar nem tudom, eleg lesz-e ra a 15 I/O lab.
Utoljara a Pro Microt nezegettem.Problema az, hogy egy 7x21-as billzet matrixot kellene lekerdezni, ahhoz kell 1 demultiplexer, 3 multiplexer, ezek cimzesehez kell 3+3 lab, ujabb 3 a multiplexerek kimeneteinek, 3-4 a billzeten levo ledeknek, eddig ez 12-13 lab.
Plusz biztos kifelejtettem valamit.[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz qisqaqas #537 üzenetére
Klasszikusan egy billzet matrix igy nez ki:
Egy 8x8-as matrix vegigolvasasahoz kell 8 sor es 8 oszlop lab, ez osszesen 16 I/O pin.
Ezen lehet csokkenteni multiplexer-demultiplexer parossal, ezeknek az ICknek az a dolguk, hogy kap egy binaris erteket, aztan az annyiadik bemenetet (vagy kimenetet) kapcsolja a kimenetre (bemenetre)
Igy 3 biten cimezhetove valik a 8 sor, masik 3 biten meg a nyolc oszlop, 16 helyett eleg 6 I/O lab, de kell hozza ket IC pluszban, de ezeknek ~100Ft darabja.Egy MS Ergo4k billzetet akarok atalakitani, ami teljes kiosztas, plusz rakat multimedia gomb.
7 sora es 21 oszlopa van.Multiplexer nelkul ezek vegigcimzesehez/olvasasahoz kellene 7+21=28 I/O lab.
Ha jol szamolom, akkor multiplexerekkel ez lecsokkentheto 3+3+3-ra.Nyilvan ez a megoldas bonyolitja a mikrokontrolleren futo kodot, de hat azt egyszer kell csak megirni.
(Meg eleve lattam hasonlo multiplexeres megoldast az egyik egyedi billzet projekt oldalon, hozzavalo Arduino Leonardo koddal)[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz qisqaqas #537 üzenetére
Furtozes nem biztos, hogy jo otlet, mivel nem fogod tudni megkulonboztetni hogy pontosan melyik gombok vannak eppen lenyomva, ha a furtbol 2-3 gomb is le van nyomva.
Eppen ugy, mint az olcso billzeteknel, ahol sporoltak a billzetmatrixszal, aztan jatek kozben verheted a fejed az asztalba, hogy miert nem veszi be az X gombot, ha mar le van nyomva a E+S. (Khm, Cherry G80-3000, de a tucat Logitechek sem remekelnek ezen a teren.)
Egyedileg cimezheto matrixszal nincs ilyen problema, csak maceras bekotni.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz MineFox54 #576 üzenetére
Van valami megoldás arra, hogy több program is legyen arduinon?
Felprogramozod az idozitot, hogy x idonkent hivogasson kulonbozo interruptokat?
Interruptokat meg kulonbozo fuggvenyekkel tudod kezelni, igy ezek a programreszek kvazi parhuzamosan futnak.Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Ez a fajta beléptetés még cégeknél sem megy igy, sok ügyfelem van ilyen irodában, nyoma sincs annak, hogy én ott jártam, lejönnek ugyanis cigizni, ergo a be/ki lépés nem tűnik fel a kutyának, (meg a logolás/blokkolás nem is tudom nem sérti e a személyiségi jogait.)
Alairtal egy szerzodest, amiben le van irva, hogy a munkaidoddel a munkaltato rendelkezik, nem Te.
Innentol kezdve a munkaltato teljesen jogosan nezheti, mikor estel be dolgozni, es mikor leptel le onnan, nem lehet a szemelyisegi jogokkal takarozni.
Egyebkent nemreg modositottak a munka torvenykonyven, kifejezetten szabad kezet kaptak a munkaltatok a munkavegzes technikai eszkozokkel torteno felugyeletere.
Max a mosdot nem kamerazhatjak be.
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Nem lenne egyszerubb osszeadni az 5 valtozo erteket, aztan ha nagyobb vagy egyenlo, mint 3 akkor legalabb harom igaz?
if ((a1+a2+a3+a4+a5)>=3) {
blabla
}Felteve persze, hogy 0 vagy 1 a valtozok erteke.
[szerk:]Ja, hogy lemaradtam, mint a borravalo? Sebaj.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott egy Micro klon, ezen szeretnek egy 3 bites erteket binarisan kivarazsolni 3 labra:
void setup() {
pinMode(led, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}
void write(int a)
{
if (a && 1 > 0) digitalWrite(A0, HIGH); else digitalWrite(A0, LOW);
if (a && 2 > 0) digitalWrite(A1, HIGH); else digitalWrite(A1, LOW);
if (a && 4 > 0) digitalWrite(A2, HIGH); else digitalWrite(A2, LOW);
}
void loop() {
for (int i=0;i<8;i++)
{
write(i);
if (i % 2 == 1) digitalWrite(led, HIGH); else digitalWrite(led, LOW);
delay(1000);
}
}Beepitett LED masodpercenkent kapcsolgat ki-be, ahogy az i erteke valtozik, viszont az A0-A2 labakon nem birom leolvasni az erteket, mivel mindegyik lab fel van huzva 5V-ra az ido nagy reszeben.
Helyes mukodesnel 1 vagy 2 vagy 4 masodpercig alacsony majd magas lenne. (000,001,010,011...111)Mit szurhattam el?
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Marha.
void write(int a)
{
if (a & 1) digitalWrite(A0, HIGH); else digitalWrite(A0, LOW);
if (a & 2) digitalWrite(A1, HIGH); else digitalWrite(A1, LOW);
if (a & 4) digitalWrite(A2, HIGH); else digitalWrite(A2, LOW);
}Bitszintu es opeatort egy &-del irjak.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Buheraljunk billzetet jeligere eddig ezt a prototipust sikerult elkovetni:
Arduino egy 74HC151 multiplexeren keresztul folyamatosan pasztazza a gombok allapotat, majd a felso panelen levo 74HC138 demultiplexeren kivalasztja az annyiadik LEDet, amelyik gomb utoljara meg volt nyomva, ha tobb is meg van nyomva, akkor felvaltva villognak a megfelelo LEDek, amilyen gyorsan az Arduino kergeti oket.
Multiplexer/demultiplexer megoldasnak az az elonye, hogy joval kevesebb Arduino labat igenyel, mintha direktbe lennenek drotozva a gombok/LEDek.
8 gomb leolvasasahoz eleg 3 lab a cimzeshez, egy negyedik meg a kivalasztott gomb ertekenek a fogadasahoz, mig direktbe drotozva 8 lab kellene a 8 gombhoz.
(Csak 5 gombom volt itthon, nem hasznalom a 74HC151 osszes bemenetet, ugyanigy 74HC138-nak sincs minden kimenete hasznalva.)Amivel szivtam: 74HC151 kimeneten (kek drot) fixen tapfesz jelenik meg, ha valamelyik bemenete lebeg. -> mindet foldelni kell.
Kapcsolok kimenetet is le kell huzni foldre, ha nincs megnyomva a gomb!!!
Ezert van ellenallas dugva a 74HC151 bemeneire dugott feher drotok vege es a fold koze.
Masik oldalrol meg kapcsolo mogotti diodan at folyik a tapfesz, ha a gomb meg van nyomva.Perpill azert vannak a LEDek a tapfesz, meg a 74HC138 kimenete koze kotve, mivel beneztem az IC tipusat, es sikerult kifognom egy olyan demultiplexert, aminek invertalt a kimenete.
Idovel ki fogom cserelni 74HC238-ra, mert annak rendes kimenete van.
(74HC138: minden kimenet: 5V, megcimzett: fold, 74HC238 minden kimenet: fold, megcimzett: 5V)Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Hozzavalo kod egyelore nincs tulbonyolitva:
void setup() {
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(10, INPUT);
}
void rowAddress(int a)
{
if (a & 1) digitalWrite(A0, HIGH); else digitalWrite(A0, LOW);
if (a & 2) digitalWrite(A1, HIGH); else digitalWrite(A1, LOW);
if (a & 4) digitalWrite(A2, HIGH); else digitalWrite(A2, LOW);
}
void columnAddress(int a)
{
if (a & 1) digitalWrite(2, HIGH); else digitalWrite(2, LOW);
if (a & 2) digitalWrite(3, HIGH); else digitalWrite(3, LOW);
if (a & 4) digitalWrite(4, HIGH); else digitalWrite(4, LOW);
if (a & 8) digitalWrite(5, HIGH); else digitalWrite(5, LOW);
if (a & 16) digitalWrite(6, HIGH); else digitalWrite(6, LOW);
}
void loop() {
for (int i=0;i<5;i++)
{
columnAddress(i);
if (digitalRead(10)==HIGH) {
rowAddress(i);
}
}
}[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Ezek a programozo cuccok mihez kellenek?
Olcsobb Arduinokat nem lehet USBre dugva programozni?
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Milyen kodlapot/karakterkeszletet tamogat a kijelzo?
Leirasaban nincsen leirva, hogyan lehet atallitani mas nyelvre?Mittudomen, regen a penztargep vevokijelzokon jumperolni kellett, hogy 437-es amerikai vagy 850-es nyugati europai kodlapot hasznaljon.
852-es, kelet europai kodlaphoz viszont ki kellett cserelnunk a karaktereket definialo EPROMot, mert a gyariban nem volt Ő/Ű.
Meg ha jol remlik, soros porton kuldeni kellett egy utasitast, ami inicializalta a megfelelo kodlapot a kijelzon.[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz qisqaqas #734 üzenetére
JP6 nem a jobb oldali csatlakozosoron levo kivezeteseket mutatja?
Aszerint a 16 MOSI, 15 MISO, 14 SCKJobb oldali abran viszont fel sorral el van csuszva a 32U4 egyes labaihoz tartozo bekotesi pontok nevei.
Viszont abbol ugy latszik, hogy a "D14" kodu lab a TX LEDre van kotve (utolag fel sorral odebb hegesztett plusz feliraton viszont RX LEDnek irjak )
Kerdeses labakhoz viszont D15-D17-et irnak.Valoszinuleg rosszul szitaztak a Pro Micro kiosztasat, es a bal oldalon a tenyleges szitazasnak megfelelo csatlakozo sor kiosztas van, jobb oldalon meg az eredeti, logikailag helyes.
Szerintem elsonek probald ki a 14,15,16 jelolesu lyukakat, azok takarhatjak a D15, D16, D17 labakat
Nem tudom, a MISO, MOSI, SCK roviditeseket lehet-e a pinek cimzesenel hasznalni, ha nem, akkor probald D15-D17-tel.Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
PWMmel probalok szabalyozni egy LED fenyerejet, de zavaroan pulzal a LED, ha a Micro 11-es labara 128-nal kisebb erteket irok analogWrite()-tal.
Lehet ezzel kezdeni valamit?
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
de ha már a led itt csak háttérvilágitás szerepét tölti be, akkor simán rendelhettél volna mondjuk 200 db ws2811 rgb ledet, és az egészet 1 darab lábbal vezérelheted. Az összes ledet. Igy lehetett volna szines is. egy darab táp, a legolcsóbb arduino, és vezeték.
Adafruit oldalan azt irjak, hogy a WS2812 RGB LED fuzer meghajtasahoz a filleres AtMega328-asok nem eleg gyorsak, meg nincs eleg memoriajuk.
Celszeruen valamelyik AtMega32u4-eset kell hasznalni. (Leonardo, Micro, Pro Micro...)[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Attól függ mit szeretnél csinálni. A fenti projektnél, ahol percenként van változás, még én is elég gyors lennék...:-)
Azzal van baj, hogy a kicsi, olcso Arduinok nem tudjak olyan gyorsan egyesevel kiadni biteket, mint ahogy a LED fuzer shiftelne oket.
Azert irnak minimum 8MHz-s Arduinot a NeoPixel library kovetelmenyehez.Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
elapsedTime 64 bites egesz tipusu, azert inicializalja az 1000-es osztot ugyanilyen adattipusnak.
Ha siman /1000 lenne odairva, akkor alapertelmezetten 32 bites int tipusu lenne az oszto, amit osztas elott at kell alakitania a forditonak 64 bitesre, mivel az aritmetikai muveletek csak azonos tipusu parametereken vegezhetoek el.
Legalabbis a fejlett programnyelvek altalaban automatikusan szoktak castolni a rovidebb valtozot a hosszabb adattipusara, de elegansabb eleve ugyanolyan adattipust hasznalni mindenhol.
Ugy rovidebb es valamivel gyorsabb is lesz a leforditott kod.Regebbi progamnyelvek hibauzenetet dobtak forditaskor, ha nem egyezett a ket adattipus.
Legalabbis a C meg elegge haklis volt erre.[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Bakker, tegnap jatszottam egy picit az Arduino 1.6.3 IDEvel, de valamit rosszul menthettem, mert eltunt a forraskod a vinyorol, 0 bajtos a fajl.
Vissza lehet valahogy tolteni az eszkozrol a kodot?
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott egy 32U4-es Arduino Micro klon, amivel egy billzetmatrixot akarok leolvasni.
void setup() {
pinMode(2, OUTPUT); //c0
pinMode(3, OUTPUT); //c1
pinMode(4, OUTPUT); //c2
pinMode(5, OUTPUT); //c3
pinMode(6, OUTPUT); //led1
pinMode(7, OUTPUT); //led2
pinMode(8, OUTPUT); //led3
pinMode(9, OUTPUT); //led4
pinMode(10, INPUT); //input
}void columnAddress(int a)
{
if (a & 1) digitalWrite(2, HIGH); else digitalWrite(2, LOW);
if (a & 2) digitalWrite(3, HIGH); else digitalWrite(3, LOW);
if (a & 4) digitalWrite(4, HIGH); else digitalWrite(4, LOW);
if (a & 8) digitalWrite(5, HIGH); else digitalWrite(5, LOW);
}void writeLED(int a)
{
if (a & 1) digitalWrite(9, HIGH); else digitalWrite(9, LOW);
if (a & 2) digitalWrite(8, HIGH); else digitalWrite(8, LOW);
if (a & 4) digitalWrite(7, HIGH); else digitalWrite(7, LOW);
if (a & 8) digitalWrite(6, HIGH); else digitalWrite(6, LOW);
}void loop() {
for (int i=0;i<=15;i++)
{
columnAddress(i);
delay(100);
if (digitalRead(10)==LOW) {
writeLED(i);
}
}
}Lenyeg: 2-5 labakon kiadok egy 4 bites binaris szamot, ide 2 74HC138 dekoder van bekotve, ezek az eppen nem cimzett kimeneteikre 5V-t adnak, mig a cimzettet lehuzzak foldre.
Kimeneteiken log 1-1 nyomogomb+dioda, majd a kimeneteik fel vannak fuzve az Ardu 10-es labara, amely egy ellenallassal fel van huzva 5V-ra, hogy ne lebegjen.Gond az, hogy ha megnyomom valamelyik gombot, akkor valamiert nem teljesul a digitalRead(10)==LOW feltetel, pedig a 10-es labon olyankor 1.4V merheto, mig le nem nyomott allapotban 4.8V.
Van valami otletetek arra, miert nem olvassa rendesen a lab allapotat?
Esetleg epitsem at 74HC238-ra, ami pont forditva mukodik, mint a 138? Cimzett kimenet=5V, tobbi fold.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Ugy tunik 75HC238-cal jatszva konzisztensen mukodik a digitalRead(10)==HIGH feltetel, egybol teljesul, ha lenyomom valamelyik gombot, pedig olyankor 3.5V merheto azon a labon.
Nem ertem, miert nem erzekeli LOW-nak az 1.4V-t.
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz gyapo11 #2401 üzenetére
Ezt a sematikat epitettem meg.
Minden egyes gomb mogott van egy 1N4007 dioda, hogy pontosan annak a gombnak az allapotat tudjam lekerdezni, amelyik eppen cimezve van, ne kavarjanak be az esetlegesen nyomva tartott tobbiek.
Gondolom ezeken a diodakon esik valamennyi feszultseg, emiatt nem lesz nulla a "lefoldelt" lab feszultsege, ezert merheto 1.4V.
Viszont az Arduino Micro specifikaciojaban azt irjak, hogy 3.0V alatt LOW, afolott HIGH a lab allapota, nalam meg 1.4V-re nem teljesult a LOW.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Nezegetem a 32U4 doksijat.
Ebben azt irjak, hogy bemeneteken a LOW ertek maximalisan 0.2Vcc-0.1V lehet, vagyis Vcc=5V-nel 0.9V
HIGH meg minimalisan 0.2Vcc+0.9V, azaz 1.9V1.4V egyik tartomanyba sem esik bele.
Meg az ellenallast is beneztem, valami 330 ohmos akadt a kezem ugyebe.
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott pár 5V/16MHz-s Arduino Micro klón.
Át lehet ezeket alakítani 3.3V/8MHz-sre, vagy eleve olyan változatot kell venni?
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott egy Arduino Micro, ezt szeretném Win alól flashelni.
Tegnap sikerült lefordítani a 64bites Cygwin alatt az avrdude-ot, de innen nem jutottam tovább:
Eszköz első USBre dugás után ttyS2-ként jelent meg, ehhez képest valamiért nem tudja megnyitni, hiába vágom reset gombbal programozás módba a kütyüt.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott egy Arduino Pro Micro, hogyan tudnék lehet ehhez USB billentyűzetet illeszteni?
Azt tudom, hogy ez a modell natívan tud USBt, és van hozzá billzet/egér library, de azok arra szolgálnak, hogy maga az Arduino viselkedjen PCre dugva billzetként/egérként.
Nekem meg azt kellene megoldanom valahogy, hogy az USB billzeten lenyomott billentyűkombináció hatására az Arduino kiadjon a saját USBjén egy billentyű kombinációt, tehát először fel kéne dolgoznom a bejövő USB adatcsomagokat.
(Hülye KVM switchem lenyel egy rakás billentyűkombinációt, ha a dedikált billzetportjára van dugva a billzet, így át szeretném tenni egy másik portra, viszont a hotkeyes gépek közötti váltásra kéne valami USB kütyü, amit a dedikált portba dughatnék helyette.)
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
Új hozzászólás Aktív témák
- AMD Radeon™ RX 470 / 480 és RX 570 / 580 / 590
- Elemlámpa, zseblámpa
- Xbox tulajok OFF topicja
- GTA VI
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Okos Otthon / Smart Home
- Milyen autót vegyek?
- MasterDeeJay: Volta a bányából azaz CMP 100-210 kisteszt (Tesla V100 mining)
- További aktív témák...
- LG NanoCell 55NANO766QA Halvány píxel csík
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5