-
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
-
Janos250
őstag
válasz KFORboy #12749 üzenetére
"De ez kb minden mikrokontrollernél igaz"
Mondjuk, azESP32-nél nem. Ott 8 független RMT csatornát használhatok, tetszőleges frekivel, és kitöltési tényezővel.Igen, nekem is elsősorban mindenről az jut eszembe, ami Mórickának, másodsorban pedig az ESP32
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Volkov
aktív tag
Sziasztok!
Kis segítség kellene, mert elakadtam picit.
Nagyon tömören, hogy mihez is kellene:
Van egy eszköz, amin 2 ic egymással (bár SPI-nek hívott mégis) egyedi protokollal beszélget.
Ezt szeretném lehallgatni.
3 vezeték van:
- egy chip select (ez elhanyagolható talán, mivel folytonos és egyirányú a kommunikáció)
- egy órajel, kb 600khz, egy impulzus 0,75us
- az adat, ami az órajel felfutó élére érvényes
Az adatcsomagok 1.5ms-enként érkeznek és így néznek ki:
0x40 0x18 0x45 0x55 0xDF 0x44 0x06 0x00 0xCC 0x05 0xD7 0x05 0xE9 0x03 0xAF 0x0F 0x78Hogy tudnám ezt Arduino-van elkapni?
Az SPI slave példákat próbáltam, de hiányzik neki a másik 2 jel, nem működik.
Tippre az órajelre egy megszakítást kellene hívni, és kiolvasni az adatbusz állapotát, majd abból generálni a fenti adatot.
Megszakítás még oké, de a fő elakadásom: simán digitalRead-ekből hogy lesz a végén adat?
Szóval hogy tudok az egy vezetéken jövő 0-ákból és 1-ekből byte array-t csinálni?
Előre is köszönöm!:)
-
gabikaa39
újonc
válasz Janos250 #12744 üzenetére
Sajnos nem sikerült beilleszteni a glcdfont.c-ben az ékezetes betűket. A nagy Á betűt 2 karakterben írja ki (először egy vízszintes csík fut - ez 5 led, utána meg egy u betűnek tűnő karakter, az É betűnél egy függőleges vonal és utána egy "sakktábla" karakter. A program, amit használok a matrixtest.ino, az AdafruitNeoMatrix libből. Tudom bután hangzik, de egyszerűen nem tudom értelmezni a hexa adatokat, ami a glcdfont-ban van. Próbáltam olyan programot találni, ami a hexa adatok helyét adja meg a pontmátrixban (mármint kimásolok egy hexa kódsort és a progi megmutatja hogy melyik pontnak felel meg. Azon is gondolkoztam nem-e ezzel van a probléma,: static const unsigned char font [] PROGMEM = {
Elnézést kérek, ha kicsit zagyvára sikerült... Próbálnám megoldani viszonylag kevés segítséggel, ezáltal is kényszerítve magam a tanulásra és a folyamatok megértésére... Előre is köszönöm mégegyszer a segítséget. -
Alu
senior tag
& KFORboy & Gergosz2:
Köszi mindhármótoknak!Gergosz2:
Már ismerkedek vele. Csak az egyik alkalommal az egyik timernél (ami datasheet alapján 4 csatornát tud kezelni) csak 2 vagy 3 csatornánál engedte kiválasztani a pwm generálást és nem értettem a miértjét. Aztán később rájöttem, hogy előtte bepipáltam néhány ADC lábat és az egyik pont azt a fizikai lábat foglalta le, ahol annak a bizonyos timernek az output channelje is lett volna. Vicces hiba, de hát így tanul az ember. Aztán inkább úgy voltam vele, hogy biztos, ami biztos rákérdezek itt nálatok, hogyan is van ez.λŁƯ™
-
DigitXT
félisten
válasz gabikaa39 #12753 üzenetére
Ez azért lehet, mert a nagy Á betű két bájton jelenik meg (c3 81) a szerkesztőben. Ha ezeket akaratodon kívül külön-külön íratod ki, akkor jelenhet meg kirksz-kraksz.
Rákerestem erre a glcdfont.c-re, és megpróbáltam megfejteni neked a dolgot. (Sosem foglalkoztam a témával, azt se tudom, eszik-e, vagy isszák az Adafruitot.)
A PROGMEM tartalmát úgy kell értelmezni, hogy minden egyes karakter grafikus "képét" adja meg: 5 bájt van minden karakterre (5x7-es mátrix esetén bőven* elég).
Nem tudom, ki volt az a marha, aki 12 bájtonként tördelte be a kódot, aminek ugye pont semmi köze nincs az egyes karakterekhez, de legalább az umlaut a-t (ä) már külön bejelölte, így jól látszik, hogy melyik 5 bájt tartozik össze, le is lehet rajzolni:
0x22=0100010
0x54=1010100
0x54=1010100
0x78=1111000
0x42=1000010
Vegyük észre, hogy a fenti táblában hanyatt van esve a betű = fordítsuk el balra.A megoldás, hogy kitalálod, hogyan nézzen ki az a bizonyos Á betű, aztán ezt "jól lekódolod" és beilleszted a progmem megfelelő pozíciójába... Nem intuitív, tudom... (Egy bájt egy "pixeloszlopot" ír le, ebből van végül 5 db minden egyes karakterre...)
Talán a legegyszerűbb az umlaut A-t meghekkelni: levenni a pöttyöt a bal oldaláról, és onnantól olyan, mint egy Á. Vagy legalábbis arra emlékeztet: 7D helyett 7C-t...
Persze azt tudni kell, hogy pontosan melyik karakterrel kell ilyet kiírni. A kis ä a 132-es pozícióban van "általában", és valóban: ebben a kódban is ott van definiálva. Nézd el nekem, hogy a nagyot nem tudtam fejből, az a 142-es? Talált: ÄÉs ha már itt tartunk, fejtsük meg azt a függőleges vonalat is. Az a c3, azaz 195 0x00 0x00 0x00 0xFF 0x10, most hogy már látjuk a mátrixot, ez egyértelműen egy függőleges vonal, és egy pötty tőle jobbra: ilyesmi.├ (Tipikus UTF-8-as "karakter".) Az utána következő u-szerű karakter meg elvileg egy ü akar lenni, legalábbis ezt hámoztam ki a kódból. És ez teljesen normális is, próbálj beírni egy ALT+129-et!
*: 1 bitet mindig elpazarol, ha úgy tetszik, hiszen csak 7 bitet használ ki a 8-ból.
-
Janos250
őstag
válasz Volkov #12752 üzenetére
pl: (persze, ha elég gyors hozzá a proci)
külső ciklus
énbájtom = 0
ciklus i=0-tól 7-ig
ciklus, amíg digitalread órajel alacsony ciklusvége
ha digitalread magas,
énbájtom i. bit legyen egy
//( bitwise xor, vagy bitset )
// de lehet, hogy 7-i, nem i
ha vége
ciklus, amíg digitalread órajel magas ciklusvége
i ciklus vége
énbájtom letárolása tömbben, vagy kiíratás, vagy mittudomén...külső ciklus vége
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Volkov
aktív tag
-
nagyúr
válasz Volkov #12757 üzenetére
Egy UNO 16MHz órajelen egy órajelciklus 0,0625μs. Egy interrupt triggerelése 3-4 órajel, a regiszterek mentése ha 20 órejelen belül megvan (márpedig szerintem simán megvan), simán el kell tudnod kapni az impulzusokat.
Még könnyebb úgy, ha csak az első órajelet próbálod elkapni, és ezután a megszakításban maradsz, megvárod a következő hét impulzust, mented az adatot és kész.
Szerk: ahogy látom János250 pont ugyanezt írta le a pszeudokóddal.[ Szerkesztve ]
-
Volkov
aktív tag
Tökön szúrtam a saját kódomat
micros: "On 16 MHz Arduino boards (e.g. Duemilanove and Nano), this function has a resolution of four microseconds"
A feldolgozással amúgy így is lassú vagyok szerintem, kevesebb dolgot kellene csinálni ott.
A megszakításban nem próbáltam maradni, az lehet megérne még egy misét már csak a hecc kedvéért is, viszont sikerült a hardware-es SPI-t működésre bírni slave módban fix-re kötve a SlaveSelect-et.:)
-
gyapo11
őstag
Egyszer mértem a sebességet, for ciklus a belsejében figyelte a számot és valamennyinként kiírt valamit meg átbillentette a 13-as portot, ez 120 kHz körüli frekivel pörgött a loopban, ami 8.3 μs. Hogy ez a ciklus hány gépi utasítás lehet azt nem tudom.
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
-
Volkov
aktív tag
Pici keresgélés után erre bukkantam:
Execution time of digitalRead(9); instruction (with internal pull-up enabled) is:
50 clock cycles of 16 MHz clkSYS (50 x 1/16000000 = 3.125 us).
Nem csoda, hogy nem működött.
Direkt port piszkáláshoz meg még kicsi vagyok.
Mindegy, SPI jó lesz[ Szerkesztve ]
:)
-
nagyúr
válasz gyapo11 #12761 üzenetére
133 órajel, egy utasítás attól függően, hogy mit csinál, 1-4 órajel, legrosszabb esetben is 33 utasítás, hát, ennél azért lehet jobban is optimalizálni a feladatot. Nemrég elmerültem mélyebben az AVR assembly-ban, egy for ciklust port piszkálással együtt körülményektől függően negyed ennyi, vagy még kevesebb idő alatt meg lehet oldani.
-
gyapo11
őstag
És ez már nagyon régóta így van, mármint hogy az assemblyt semmi nem tudja megelőzni sebességben. Minél magasabb szintű komplexebb egy nyelv és a fordítója, annál könnyebb vele dolgozni a programozónak, de annál nagyobb a lefordított kód és annál erősebb gép kell hozzá, hogy tűrhető sebességgel fusson. Ha értelmező, akkor a kód lehet kicsi, de mögötte egy nagy monstrum, ami végrehajtja az utasításokat.
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
Az lehet, hogy a magasabb szintű nyelvek fordítóját az átlagnál jobb programozók írják, viszont meg van kötve a kezük. Náluk egy print utasítás paraméterezhető, formázható, minden portra működik, az assembly meg egy stringet másol a memóriából egy másik memóriába, ami a képernyő területe. Több nagyságrend különbség van sebességben bármilyen optimalizálási képességekkel is. Viszont a magas szintű printet sokkal könnyebb használni és már alaposan tesztelt.
De volt szó a for ciklusról vagy egy port beolvasásáról, mindegyiknél van még egy csomó utasítás C++ szinten, amit assemblybe nem kell beletenni, tehát gyorsabb.
És nem kell az egész programot assemblyben írni, csak a sebesség kritikus részeket, a váz maradhat C++ legtöbbször. Ha a loopnak kell assembly sebességgel pörögnie, akkor viszont muszáj az egészet megírni gépi kódban.
Párszor nézegettem a turbo pascal lefordított, futtatható kódjá codeview-val, mutatta az assembly mellett a pascal forrásnyelvi sorokat is, érdekes volt, akár még tanulni is lehet belőle, de ott is látszott azért a fölösleg, bár nem olyan sok. A fölösleget úgy értem, hogy föl volt készítve mindenféle változóra, túlfutásra, 0-val osztásra meg hasonlók, amit én nem biztos, hogy megtennék assemblyben.[ Szerkesztve ]
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
-
_q
addikt
Tudsz jó tutorialt? Egyelőre nem sok elképzelésem van még hogyan lenne jó. Hőmérséklet, pára, aksi állapotot küldök és jelenítem meg grafikonon. Google chart-ot próbáltam beszúrni de az nem ment, így egy php kódban írt grafikon maradt. Talán amivel lehetne játszani, hogy adott időtartamot dinamikusan lehessen változtatni, füleket betenni mint egy honlapon pl: fül1: grafikon, fül2: jelengei érték. A fül2 jelenleg egy php oldal és egy másik php oldal a fül1. A fül2 php oldal tartalmazza az eddig 1 nap alatt mért adatokat táblázat formában. Ha most ez mondjuk több száz adat lesz, akkor érdemesebb lenne jobbra, ballra lapozhatóan megjeleníteni, mondjuk mint az ali rendeléseknél egyszerre 100 adat és lapozni kelljen a többihez, ez is jó lenne. Hirtelen most nem is jut eszembe más bővítési lehetőség. Ezekhez valami egyszerűbb tutorial jó lenne, ami magába foglalná az ESP/mysql felől jövő adatok kezelését.
Ebből indultam ki az alap megvalósításhoz, amihez hozzá adtam az én általam használt és küldött adatokat: [link]
Eddig ESP32-n volt egy webszerver, azon google chart, de egy idő után kifagyott valamiért a webszerver, de igazából az se tudott többet, mint 1 db honlapot megjeleníteni grafikon és jelenlegi adatokkal.
[ Szerkesztve ]
-
Janos250
őstag
Egyszer nekem is kellett volna, akkor én ezt néztem i magamnak:
https://www.chartjs.org/samples/latest/
Aztán végül mégse került rá sor, ezért kíváncsian figyelem, mi jót találtok, mert előbb-utóbb nekem is kelleni fog.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
_q
addikt
Lehet akkor ami nekem probléma az a html része inkább. $ jelekkel van telepakolva meg olyan parancsokkal amiket C-ben nem láttam még. Persze vannak benne if, while részek is azokat értem.
(#12774) Izeka82
Grafanával akartam először, csak ott jobban kötött hogy mire használhatom meg hogyan, ezért gondoltam, meg az ajánlás miatt a php-t. Egyébként elvileg mysql-ből is be tudja valahogyan a grafana olvasni az adatokat, felsorolásban támogatja. Lehet egyszerűbb lenne a grafana, de ha nem csak grafikon kell esetleg majd, hanem táblázat, gombok vagy eféle jó dolgok, akkor a grafana nem lesz elég. -
nagyúr
A $ jelekkel ne foglalkozz, a PHP ezzel jelzi a változókat. Nem típusos nyelv, a változókat nem kell deklarálni, csak értéket adsz egy $valami nevű változónak, és onnantól deklarálva van. Kb úgy, mint a javascript, egy változó bármikor átváltozhat pl. int/float típusból string-gé. Nagyon fejlett string kezelő függvények vannak a nyelvben.
Mindent futtat, ami <?php ?> tag-ek közt van, ami ezen kívül van, azt simán kiírja a kimenetre. Pl.fájl eleje, ezt kiírja
<?php
echo "ezt lefuttatja\r\n";
?>
ezt is csak úgy kiírjaNem objektum-orientált, hanem függvényeket használ, mint a sima C nyelv (remélem nem írtam hülyeséget), de lehet benne class-okat definiálni és használni, például az általad linkelt oldalon a
$conn->query($sql);
a mysqli class egy példányának a query() eljárását használja.Ennyi, a https://www.php.net/ oldalon találsz részletes dokumentációt, példakódokkal.
Ha konkrét kérdésed van, írj privát üzenetet. -
Sanki
addikt
Megérkezett a HC-05 BT modul.
Van olyan egyszerű leírás, ami bemutatja, hogy a modult egy már megírt programba hogyan tudom beilleszteni és a kapcsolatot felállítani PC-vel/telefonnal? -
nagyúr
Ha a default 38400baud sebesség megfelelő a célra, akkor nincs más dolgod, mint a serial rx/tx lábakra kötöd, és a Serial függvényeket használod, mintha kábel lenne rá kötve.
Ha át kell konfigurálni, akkor csak annyival bonyolódik a dolog, hogy az AT parancsokat át kell neki valahogy küldeni, de azt is csak egyszer kell elvégezni. Azután úgy viselkedik, mint egy virtuális soros kábel. -
Janos46
tag
Sziasztok!
Van több program is, amihez a ESP8266WiFi.h fájl kellene amit sehol sem találok, de ezzel nem vagyok egyedül, rajtam kívül még sokan keresik. Tudna vaki segíteni?
Artillery, lelkes újonc vagyok, tanulni akarok!
-
longwild
aktív tag
sziasztok!
Gondolkodom azon, hogy csomag nyomkovetot epitenek. A tapellatassal most ne foglalkozzunk...
A cel, hogy a leheto legkisebb legyen az energiafelhasznalasa es mondjuk percenkent tudjun egy GPS poziciot lekerdezni es mobilneten elkuldeni a szerverre.Milyen modulokat ajanlanatok, ha tenyleg a fogyasztas az elsodleges szempont?
szoftver szakmabeli && Beverly250
-
Gergosz2
veterán
válasz longwild #12783 üzenetére
UBLOCK GPS moduljait lehet altatni. Emellé betennék valami Low Power MCU-t jól down clock-olva és szintén altatva amikor nem kell semmit csinálni.. Pl Texas Instruments és ST is árul jó low power MCU-kat.
[ Szerkesztve ]
Nokia 6030 Hardcore User // I Panic Restaurant by Taito
-
nagyúr
Ok, kérdezz inkább.
A hc-05 modul úgy működik, mintha egy virtuális soros összeköttetés lenne (ugyanez létesül, amikor usb kábellel a pc-re kötsz egy arduino uC-t). A uC rx/tx lábaira kell kötni, és a beépített Serial.read() Serial.write() stb függvényeket kell használni, mintha az arduino ide serial monitorra akarnál vele írni (olvasni). Amivel össze szeretnéd kapcsolni (pc, telefon) ismernie kell a" Bluetooth serial" szolgáltatást. Pc-nél egyszerű, összepárositod, ezután létrejön egy COM port, amire akár az arduino serial monitorral rá tudsz kapcsolódni. Telefonra kell egy program, ami ezt tudja kezelni, de elég sok arduino BT controller app van például a play áruházban, csak rá kell keresni.
A hc-05 gyárilag 38400 baud-ra van beállítva, ezért a aketch-benSerial.begin(38400);
sorral kell csatlakozni, valamint a fogadó oldalon is ezt kell beállítani. Ha erről eltérő sebességet szeretnél, akkor uart-on keresztül rá kell kapcsolódni és AT parancsokkal átállítani.[ Szerkesztve ]
-
longwild
aktív tag
válasz Gergosz2 #12784 üzenetére
köszönöm!
kollega is emlitette mar az ST-t, mint egyik megoldasi lehetoseg.
A Ublock GPS altatasa es ebresztese mennyi idot vesz igenybe? Ebresztes utan mennyi ido alatt talal muholdakat?Jelenleg ugy tudnam elkepzelni, hogy a GPS modult felebresztem nehany percenkent es ha egy korabbi poziciohoz kepest jelentos elteres van, akkor elkezd folyamatosan trackelni. Ha nincs elteres, akkor vissze sleepbe.
szoftver szakmabeli && Beverly250
-
nagyúr
Nem írtad, hogy milyen lapot használsz, de ha pl. UNO-val szeretnéd használni, amin 1db hardveres serial található, akkor a kódfeltöltés során gondot fog okozni, ha a 0,1 tx/rx lábakra kötöd a modult. Feltöltés előtt vagy le kell mindig húzni a csatlakozót, vagy SoftwareSerial-t kell használni (másik i/o lábakon). Ezt elfelejtettem az előbb írni.
-
Janos250
őstag
válasz Janos46 #12781 üzenetére
Arduino IDE-ben file menü, beállítások, További alaplap-kezelő URL-ek
Ide beírod:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Utána eszközök, alaplap, alaplap kezelő
kereső mezőbe ESP, akkor megjelenik az ESP8266
Installálod.
Letölt netről mindent ami kell, a keresett header fájlt is.
Itt találod meg: (nálam a portable verzió van)
portable\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src\ESP8266WiFi.hAz amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
tonermagus
aktív tag
Sziasztok!
Létezik olyan parancs, amivel kiszámolhatom a két szám közötti különbséget pozitív végeredménnyel?
Nyilván megoldhatnám egy szimpla kivonással illetve két "if" függvénnyel, amivel megnézem hogy a két szám közül melyik a nagyobb, és abból kivonom a kisebbet. De ezt nem érzem elég elegánsnak. Létezik erre valami?[ Szerkesztve ]
-
nagyúr
válasz tonermagus #12793 üzenetére
max(a,b)-min(a,b)
elég elegáns?
Vagya>b?a-b:b-a
De a legelegánsabb aabs(a-b)
[ Szerkesztve ]
-
gyapo11
őstag
válasz tonermagus #12793 üzenetére
abs(a-b) jó lehet.
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
-
weiss
addikt
válasz tonermagus #12793 üzenetére
Őőő, abszolút érték? Matek amúgy hogy megy?
I did nothing, the pavement was his enemy!
-
KFORboy
senior tag
Néha olyan jó látni, hogy mások feltesznek helyettem kérdéseket és nem nekem kell beégnem
De én matek elégtelen helyett szimplán csak béna vagyok...
Sejtem, hogy van egy kódvariáns, formanyomtatványszerű függvény valamire amit szeretnék... De sok napos netes keresgélés után találom meg és tépem le az arcom, hogy tengernyi "if" meg "else" beszúrkálást le tudok rendezni 1-2 sorral...
(Mint pl ki gondolná, hogy úgy eleve ha elektronikában vannak logikai kapuk; and, nand, or, xor, stb... gatek, akkor ennek van szofveres megfelelője is...)[ Szerkesztve ]
Cartman: -Tyű || Butters: - Dupla TYŰ !
-
tonermagus
aktív tag
válasz KFORboy #12799 üzenetére
Na én nem félek megkérdezni semmit Inkább feladom a büszkeségem és rákérdezek egy olyan dologra ami másnak tök triviális minthogy órákig keresgéljem mit is akarok
Látjátok, itt is pár perc alatt megkaptam a választ... Egy kis negatív kritikát meg beleférAmúgy meg sosem voltam rossz matekból, és az sem igaz, hogy majdnem megbuktam, de basszus, mikor tanultam én ezeket. Lehet hogy tök alap dolog, de eddig is megvoltam enélkül Az általános iskolás tananyagnak a 90%-át már tuti elfelejtettem, Mitokondrium, éghajlati övezetek, mi a különbség az eposz és históriás ének között... Tudja a fene már
Csak hogy valami értelme is legyen a hozzászólásomnak: nekem teljesen új ez a ThinkerCAD féle Arduino szimulátor... Gyors ki is próbáltam vele az abs() függvényt
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Krómozott előlapos Jura Z5 automata kávéfőző beépített profi cappuccino fejjel
- Eladó teljesen új, bontatlan Nespresso Essenza mini piros színben
- Motorola Razr 40 - 8GB 256GB DualSIM Sage Green - Bontatlan - Garanciális
- Canon Ixus 285 HS
- Új! Bontatlan! Samsung 8TB 2.5 SSD eladó! Országos Szállítással