- Hamarosan bárki hazavihet egy Apple Vision Pro headsetet
- Gmail
- Az Intel a legmodernebb chipgyártó géppel előzheti meg az egész szektort
- DIGI kábel TV
- Anyagi katasztrófára figyelmezteti az Apple-t a brit média
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Információbiztonság, kiberbiztonság, adatvédelem
- Programozás topic
- Bittorrent topik
-
IT café
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
-
M@nH.
aktív tag
Utána néztem, kicsit trükkös a dolog (az adat max nagysága miatt binárisan), de nem lehetetlen. Köszi
Egy másik dolog. Arra van mód, hogy egy "unsigned int" változót ethernet segítségével weblapon keresztül változtassunk? Pl. egy szövegdobozba bevitt értéket gombnyomásra beíratok? -
Imy
veterán
Köszi, kipróbáltam. A fordító hibaüzenetet dob, és a bekötés honnan derül ki?
Ez a jelenlegi program, de lehet valamit rosszul csináltam:
#define ROTE_CLK GPIO_NUM_xx
#define ROTE_DT GPIO_NUM_xx
#define ROTE_SPCTM 50000 // speed control time limit, not defined no speedctrl
volatile int32_t rotval = 0;
void IRAM_ATTR isrrot() {
volatile static uint8_t pinsta = 0x3, cwi = 0, ccwi = 0;
volatile static uint8_t cwexp[] = {0xD, 0x4, 0x2, 0xB};
volatile static uint8_t ccwexp[] = {0xE, 0x8, 0x1, 0x7};
int32_t rvchg;
#ifdef ROTE_SPCTM
volatile static uint32_t tc = 0, tm = 0;
uint32_t ctm, td;
#endif
pinsta = (pinsta << 2) & 0xf;
if (digitalRead(ROTE_DT)) pinsta |= 0x2;
if (digitalRead(ROTE_CLK)) pinsta |= 0x1;
if (pinsta == cwexp[cwi]) cwi++;
else if (pinsta == ccwexp[ccwi]) ccwi++;
if (cwi == 0x4 || ccwi == 0x4)
{
if (cwi == 4) rvchg = 1;
else rvchg = -1;
pinsta = 0x3; cwi = 0; ccwi = 0;
#ifdef ROTE_SPCTM
ctm = micros();
td = ctm - tm;
tm = ctm;
if (td < ROTE_SPCTM / 2) rvchg *= 7;
else if (td < (ROTE_SPCTM * 2) / 3) rvchg *= 4;
else if (td < ROTE_SPCTM) rvchg *= 2;
#endif
rotval += rvchg;
}
} // isrrot
int16_t getrotv() {
static int32_t lval = 0;
int32_t cval = rotval;
int16_t rotc = 0;
if (lval != cval) {
rotc = cval - lval;
lval = cval;
}
return (rotc);
} // getrotv
void inirotein(gpio_num_t clk, gpio_num_t dt) {
pinMode(clk, INPUT);
pinMode(dt, INPUT);
attachInterrupt(digitalPinToInterrupt(clk), isrrot, CHANGE);
attachInterrupt(digitalPinToInterrupt(dt), isrrot, CHANGE);
} // inirotein
void setup() {
inirotein(ROTE_CLK, ROTE_DT);
}
void loop() {
Serial.print("Encoder_positionp = "); Serial.println(rotval);
}
-
nagyúr
Nem tudom mire gondolsz, de annyira nem trükkös.
Van lehetőség ethernet-re is, de nem annyira bevett szokás vezetékes netet használni, viszont az említett esp wifi-képes, úgyhogy úgy látom az lesz a neked való lap.
ESP8266 vagy ESP32. A rajtuk lévő flash-t nagyon sokféleképpen lehet használni, akár egy szöveges fájlban is tárolhatod az adatokat, de van rá sqlite adatbázis (!) is. Úgy emlékszem eeprom emulációt is láttam, ami úgy ír a flash memóriába, mintha eeprom lenne, de azt most nem találom. -
zsolti_20
senior tag
Üdv emberek!
aryes: emlékszem volt itt szó régebben az arduino gyorsításáról az órajel módosításának segítségével. Véleményed szerint segíthet megoldani a lassúság problémáját?
Sikerült megoldani az excel VBA és az arduino közti kommunikációt, tisztán látszik, mikor adatot küldök az arduinora akkor az boardon lévő led egyből felvillan az Rx-nél. De kell neki kb 0.8-1.2mp amíg felvillan a led ami csatlakoztatva van a D13-GND-re. Lehetséges gyorsítani az utasítás végrehajtásán? Vagy magával a kóddal lenne a gond? Van itthon egy ESP8266, lehet inkább arra kellene építenem ha gyorsaságot várok el?
Igazából a lényeg az, hogy szkennelek egy bárkódot, annak be kell érkeznie PC-re, lekéri a bárkód infót egy applikáción keresztül, az infó bekerül az excel A1 cellájába, majd továbbítja az arduionak és így végre hajtja az adott utasítást. Az egésznek a gyenge pont az arduino folyamat végrehajtási sebessége. A többi az villámgyorsan dolgozik. -
Tankblock
aktív tag
IRAM_ATTR
--> ESP környezetben használható, AVR esetén nincs ilyen.
ha gyorsítani szeretnél rajta, akkor erre van direct port manipuláció AVR hez, ami sokkal gyorsabb.
pl:DDRB &= ~(1 << PINB4);
uint8_t pinValue = PINB & (1 << PINB4);
[link] némi kapaszkodó
Release the Beast....
-
nagyúr
válasz zsolti_20 #13658 üzenetére
Szerintem félreértés van, az lehet a lassúság oka, hogy a serial kapcsolat felépülésekor az arduino reseteli magát!
Tegyél egy 10 uF kondenzátort a reset és a gnd közé, és nézd meg, hogy megszünteti-e a késleltetést. (Programozás előtt ezt nyilvánvalóan ki kell húzni, mert nem fogod tudni feltölteni a programot)
Ha nem, akkor sem tartom valószínűnek, hogy az arduino lassúsága lenne az oka, bár nem írod, milyen boardról nem szó, de az uno 16MHz sebessége azért nem annyira lassú, hogy ilyen késést okozzon. Mekkora bitrátával küldöd az adatot? Jó lenne látni a kódot a küldő és a fogadó oldalhoz is (ha a kondenzátor nem oldja meg a dolgot).[ Szerkesztve ]
-
zsolti_20
senior tag
A soros kapcsolat letrejotte utan egy loopba fut bele ahol egy excel cella erteket valtoztatja 1-2 kozott. Rgyenlpre egy 1.5mp-s sleepet hasznalok excel vba scriptben. Igy vegre tudja hajtani a led fel es le kapcsolasat. Debha kisebb ertekre veszem mondjuk 0.5-re akkor mar csak kuldozgeti az ertekeket de nincs ideje vegre hajtani. Arduino uno boardot hasznalok az rx visszajelzo lednel latszik higy az adatot egybol fogadja de a parqncs vegrehajtasara mar nem marad ideje.
Arduino oldalon egy sima led villogtato kodot hasznalok ahol serial monitorba keri az utasitast. 1 vagy 2.
A loopban csak a kuldes resz kerult nem epiti fel ujra a kapcsolatot. A bitratat 9600-tol emeltem 2 millioig de ugyan az volt a gond mindig. A sebessegen nem valtoztatott.[ Szerkesztve ]
-
zsolti_20
senior tag
-
Janos250
őstag
"Pl. egy szövegdobozba bevitt értéket gombnyomásra beíratok?"
ESP8266, és ESP32 esetén WiFin természetesen, elég egyszerű, ezeket szoktuk használni. Lehetőleg EEPROM-ot használj, mert ahogy elnézem, rengetegszer kell újraírni. A flash , SD kártya nagyon sok újraírást kibír, de ennyit azért nem, kivétel, ha nem mindig ugyanarra a helyre írod, vagy csak mondjuk N-ik impulzus érkezésekor írsz, de akkor
áramszünet esetén elveszhet max. N impulzus számlálása.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
zsolti_20
senior tag
Úgy látszik neked lesz igazad. A probléma az volt hogy D13-at használtam. A ledet át tettem D3-ra ott már serial monitorbol egyből kapcsolt. Örültem is magamnak. Majd mikor próbáltam excel VBA-ból akkor ugyan úgy lassú kapcsolást tapasztaltam. Valószínűleg a kapcsolat újra felállása lesz a gond. Ma már sajnos kifogytam az időből, újra írom a kódot holnap fix értékekkel, aztán meglátjuk mi lesz.
Köszi a segítséget. -
Imy
veterán
Van valakinek ötlete, hogy az encoder megszakítással hogyan képes megfelelően működni? Van valakienk egy működő programja? Nekem sehogyan sem akar összejönni... Ha ezzel zsákutcába jutok jobban járok egy potméterrel, de az encoder jobb lenne.
-
Janos250
őstag
Én encoder ügyben eléggé a partvonalról kiabálok be, de nem nagyon értem, hogy miért van mindkét pinre megszakítás.
Én úgy képzelem, hogy az egyik pinre megy a megszakítás, és a másikat csak az irány miatt olvasod a megszakításon belül.
https://playground.arduino.cc/Main/RotaryEncoders/#WaveformAz amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
And
veterán
válasz Janos250 #13673 üzenetére
Ez nem jó elképzelés. Mindkét (A, B) jel minden szintváltozására megszakítást kell kapni, és ezekből ideális esetben négy, de minimum három vagy kettő darab szükséges az irány egyértelmű detektálásához (ha nincs meg a 3 db. él, akkor 'félútról' visszatekerve kaphatunk egy ellenkező irányú jelzést is, ami nem feltétlenül korrekt). Amíg nincs meg az irány, addig nem lehet / szabad felhasználni a beérkezett éleket, mert addig csak annyi bizonyos, hogy az enkódert megmozdították, de még nincs feldolgozható és egyértelmű (üzembiztos) működtetés valamelyik irányban. Az nem elegendő, hogy az első megszakításban olvassuk a másik fázis jelét, mivel ha a futás kellően gyors és/vagy a rotary-t lassan tekerik, akkor nagyságrendekkel gyorsabban fut le az IRQ, mint ahogy az összes szükséges él beérkezne az inputokra.
Van rotary enkóder olvasásra bevált kódom, de nem arduino-ra, hanem más uC-re. -
M@nH.
aktív tag
A 8 bites tárolási kapacitás per cím miatt gondoltam kicsit trükkösnek a dolgot, de annyira valóban nem is vész.
Igen már rendeltem is esp-ket, várom már, hogy kipróbálhassam, valóban ez a lap lesz a legmegfelelőbb erre a feladatra. Az adatbázis is felkeltette az érdeklődésemet, de mindent csak szép sorjában elkezdem és folyamatosan gyarapítom, tanulok vele és majd jönnek az újabb projektek. Köszönöm a segítségeket
Janos250: Igen erre én is gondoltam, hogy a sok írás megviseli az eepromoz, vagy sd-t, ezért is gondoltam, hogy lenne egy korrekciós beviteli mező a webfelületen, ha túl nagy az eltérés.[ Szerkesztve ]
-
daninet
veterán
Sziasztok!
Kezdő kérdés:
Példát keresek arra, hogyan tudok egy loopot futtatni ha egy figyelt láb HIGH-ról LOW-ra vált vagy fordítva.
Csak akkor futhat le ha váltott, tehát a == HIGH nem működik, mert ugye akkor folyton fut amíg az high. Nekem a váltás pillanatában kellene egyszeri futtatás.Köszi
Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>
-
nagyúr
válasz daninet #13679 üzenetére
Állapotgép. Egy végtelen ciklusban minden alkalommal beolvasod a bemenet értékét. Kell egy változó, amit még a ciklus előtt deklarálsz, és amiben az előző állapotot tárolod. A beolvasás után összehasonlítod az aktuális állapotot az előző ciklusban elmentett állapottal, ha nem egyforma, akkor végrehajtod a feladatot, amit változáskor kell lefuttatni, felülírod az előző állapotot a mostanival és kész.
-
M@nH.
aktív tag
válasz daninet #13679 üzenetére
Szia
Szintén kezdő vagyok, de ha jól értem valami ilyesmit szeretnél.bool buttonState = 0;
bool lastButtonState = 0;
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
buttonState = digitalRead(2);
if (buttonState != lastButtonState)
{ if (buttonState == HIGH)
{
Serial.println("on");
}
else
{
Serial.println("off");
}
delay(5);
}
lastButtonState = buttonState;
}
-
Ittnemaz
aktív tag
üdv.
vállal valaki "projekt munka" elkészitését pénzért? -
nagyúr
válasz tibi-d #13683 üzenetére
Hát az pergésmentesítés nélkül elég sok meglepetést tud okozni, ha a bemeneten mondjuk kapcsoló lesz, de az egyszerű loop-os megoldásba is érdemes a
delay(5);
helyett inkább egy
delay(50);
vagy akár 100 is, a pergés kiküszöbölése érdekében. Ha kapcsoló/nyomógomb lesz a bemeneten.
-
daninet
veterán
válasz tibi-d #13683 üzenetére
Köszönöm mindenkinek a válaszokat, ebből már megoldom
Még egy kérdés, bár ez nem programozás:
Használ valaki arduino-t hosszabb távon? Például én most egyet kapunyitás csengőnek készítek, és mondjuk csak áramszünetnél lesz kikapcsolva, de egy jó 10 év munkának néz elébe. Van hosszú távú tapasztalata ezekkel a kontrollerekkel valakinek?
[ Szerkesztve ]
Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>
-
zsolti_20
senior tag
Sziasztok! Minden lehetőséges bejártam már soros porton PC---> arduino soha nem fog tudni kommunikálni egymással olyan gyorsan mint arduino IDE-ből. Ki is fogytam hirtelen az ötletekből, van valakinek ötlete, hol kereshetnék még megoldást?
A lényeg annyi, hogy excel cella tartalmát kell úgy átjuttatnom arduinora, hogy az utasítást egyből végre tudja hajtani. Gondolkodtam azon, hogy az ESP8266 nem lenne elég gyors vagy nincs neki olyan rejtett funkciója amit felhasználhatnék? -
Dißnäëß
veterán
válasz daninet #13687 üzenetére
Nemrég lettem kész egy picivel, erősítőbe standby gomb on/off implementáció, zajszűréssel (Examples -> Debounce) együtt, mivel az nyomógomb. (Görgess lentebb, megtalálod a nagy üdvrivalgásomat). Eddig jó, sokat megy.
Cimbi geotermikus, napenergiás és mindenféle vegyes modern rendszert vezérel Pi-kkel meg egy raklap Arduino-val egy hotelnek és a teljes "rancsnak" (minden melléképület, uszoda, stb). Hőmérséklet, pára, mindenféle figyelések, szivattyúk, stb. komplett a teljes hóbelevanc vezérlése. Hibátlanok, betonstabil évek óta az egész. Fontos a jó táp, áramfelvételekre ügyelni, ha relék is vannak, + környezeti jellemzőkre, ha nem csak házon belül lesz 21 fokon, azért ezek alapjáraton nem durván Szibériába szánt kütyük. Ilyen alap dolgokat betartva teljesen megbízhatóak, elmondása szerint. Ahol kell, olyan dobozba tette őket, medence közelben, párás helyen, ilyesmiknél, de ez a már említett alapdolgok tartozéka, szóval ha gyári speckókon belül maradsz (bőven belül), elvileg hibátlan.
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
gyapo11
őstag
válasz tibi-d #13686 üzenetére
De ugye az irq hívás verembe ment adatokat, és ha ez első után nincs letiltva az irq, akkor ezt a prell jó sokszor meg tudja tenni pár ms alatt, ami nem egészséges. És ezen a delay sem segít. A delay akkor jó, ha nem irq-t indít a nyomógomb, hanem beolvassuk az állapotát.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
gyapo11
őstag
válasz zsolti_20 #13689 üzenetére
Vba ügyben semmit nem tudok mondani, de soros port bitjeinek billegtetésére már írtam programot. Egész pontosan egy hw kulcs volt, kifelé küldtem x db impulzust, és befelé is figyeltem egy másik bitet, hogy mikor változik. Mi lenne, ha két pinnel vinnéd át a biteket handshake-kel, egyik a clock másik a data. Ezt realtime megkapja az arduino, a bitidő szerintem lehet mondjuk 10 μs, tehát ha nem regényt akarsz átküldeni, akkor simán mehet egy függvénybe és addig más nem kapja meg a vezérlést, míg kész nincs.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
tonermagus
aktív tag
Sziasztok!
Befejeztem az GPS projektem, amit már többször taglaltam itt.
Szerencsére a pontosság nagyon jó lett! Sík terepen jó időben 0-1m közötti. Meglepően pontos. 200-300m-re teszteltem, a 200 és a 300m-es távot is mindig ugyan oda jelzi.Semmi extrát nem használok, sima Neo M8N (valszeg hamis) és egy külső antenna.
Számítok rá hogy rossz időben, felhős éggel drasztikusan rosszabb lesz az eredmény, de eddig mindig jó idő volt
Egy kérdés maradt hátra: Az ARduino 1-2 másodpercenként frissíti csak a távolságot. Ugye egy kijelzőn nézem hogy éppen mennyit ment az eszköz, és csak 1, de inkább 2 másodpercenként frissül a távolság. Ezt lehet valahogy gyorsítani? Arduino Mega-t használok és annak a Serial3-as portját. Illetve még használom mellette a Serial1-et is.
Ez így normális, vagy esetleg programozási hiba? Esetleg eszköz a szűk keresztmetszet?
Tervezem hogy méret miatt ESP32-re váltok, esetleg ezzel gyorsabb lehet a frissítés?[ Szerkesztve ]
-
nagyúr
válasz tonermagus #13693 üzenetére
Szerintem ezek az olcsó modulok ilyen sebességgel képesek számolni. Lehet a kommunikáció bármilyen gyors, ha a modul 2mp-ig ugyanazokat a koordinátákat adja vissza.
-
Janos250
őstag
válasz tonermagus #13693 üzenetére
Az M8 tudtommal 10 Hz-es adatokat tud adni, ha úgy állítod be.
Az adatátvitelnek bírni kell az ESP8266 esetén is. Nem hiszem, hogy hamis, nem hallottam, hogy ezeket hamisítanák. A kínaiak saját, külön neveken kerülnek forgalomba.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Atamano
csendes tag
válasz daninet #13687 üzenetére
Az Arduino az egy fejlesztő környezet. Ezzel a fejlesztő környezettel kompatibilisek az Arduino-t fejlesztő cég saját lapjai és ezek kínai klónjai.
A fejlesztő lapon található mikrokontrollerek pl atmega328p normál körülmények között 20 éves időtartamra számolva alacsony meghibásodási százalékot garantál a gyártója (Atmel).
Csak gondolj bele,hogy mennyi 20-30 éves 8 bites konzol muzsikál jól még manapság is.
Természetesen a várható élettartamot erősen befolyásolja a nyáklapon található egyéb alkatrészek száma,fajtája. Pl szerintem az elektrolit kondenzátorok hamarabb adják meg magukat.
Azonban leszögezném,hogy minden egyes kínai klón alapvetően egy nagy big black box,mert ezeket a költséghatékonyság jegyében állították elő.Tehát a legolcsóbb készleten lévő alkatrészekből. Amivel nincs is baj addig,amíg az ember csak led villogtatásra használja a lapokat.Ahhoz aztán tényleg csak annyi kell,hogy működjön.
Itt csak,akkor kezdődik a baj,amikor mindenre is ezeket akarjuk felhasználni.Az oke lenne,ha a prototípust tervező asztalon próbapanelon összerakjuk, teszteljük.Arra viszont felvonnom a szemöldökömet ,amikor egy uno nyáklap dupont csatlakozóit + egy rakat ragasztót felhasználva készülnek komoly feladatok kivitelezésére eszközök.
Ettől ne várjunk már megbízhatóságot,hosszú élettartamot meg minőséget. -
zsolti_20
senior tag
válasz Atamano #13696 üzenetére
Hmm erdekes a tema. Az arduino 0-rol valo felpitese tehat magasabb minoseget kepes garantalni, ha kihagyunk minden olyan alkatrreszt ami nem szukseges az adott feladathoz.
Igy eredemesebb lenne inkabb megepiteni a sajat arduinonkat?
Ha ez sem garantal megfelelo szintu minoseget akkor mivel erdemes megoldani? -
nagyúr
válasz Atamano #13696 üzenetére
Jók a meglátásaid! Ezek alapján ha tartós, netán szélsőséges körülmények közötti használatra készít az ember arduino alapú készüléket, akkor a prototipizálás után, ha kész a program is, a készen vehető UNO vagy klónjai helyett kell egy saját nyákterv, kell bele pl. egy külső programozóval felprogramozott atmega328p meg minőségi alkatrészek, fixre szerelt csatlakozásokkal és perifériákkal, esetleg táppal, gondosan dobozolva.
-
gyapo11
őstag
válasz Atamano #13696 üzenetére
Az elektronikai fejlesztéssel foglalkozó emberek már 20 éve is saját nyákot terveztek, gondolom jó minőségű alkatrészeket ültettek a proci mellé, jó minőségű csatlakozókat, és assemblyben, esetleg c-ben, basicben, pascalban programozták. Akkor én is vettem egy ilyen beültetett, tesztelt nyákot, de mai napig sem használtam, túl bonyolultnak éreztem. Ez a helyzet az arduinoval változott, ez az IDE-vel, az usb kapcsolattal elérte azt az egyszerűséget, ami ahhoz kellett, hogy tudjam használni.
Hosszú távra és fontos helyre én sem merném használni az olcsó kínai arduino másolatokat, de egyrészt lehet kapni, eredeti arduinot is, talán jobb minőségű alkatrészekkel, másrészt az arduino teljesen ingyenes, tehát 0-ról le lehet gyártani, gondolom sokkal többe kerül úgy, de jó minőség érhető el jó minőségű alkatrészekkel, forrasztásokkal, csatlakozókkal. És a bootloader beégetése után akár az IDE-t is lehet használni programozásra.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
Új hozzászólás Aktív témák
- AKCIÓ! Szépségápolás, Haj - és Szakállápolási márkás gépek - BOLTI ÁR FELÉÉRT!
- Bomba! HP EliteBook 1040 G7 x360 Érintős Hajtogatós Ultrabook Tab 14" -70% i7-10710U 16/256 FHD LTE
- BONTATLAN Új Iphone 15 és 15 Plus 128-512GB 1év APPLE garancia gyári független Deák AZONNAL Átvehető
- BONTATLAN Új Iphone 13 128-512GB 1év hivatalos Apple garancia gyári független Deák Azonnal Átvehető.
- ÚJ BONTATLAN Apple Watch Series 8 S8 41-45mm Azonnal Átvehető DEÁK TÉRNÉL 1 Év Apple Garanciával.
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen