- Mobil flották
- Yettel topik
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
- Bemutatkozott a Poco X7 és X7 Pro
- Xiaomi 11 Lite 5G NE (lisa)
- Samsung Galaxy A56 - megbízható középszerűség
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Google Pixel topik
- Samsung Galaxy A55 - új év, régi stratégia
- Milyen okostelefont vegyek?
-
Mobilarena
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
#70211840 #18814 üzenetére
Én 3D nyomtatóval készítem a dobozaimat.
Előnye:
Olcsó. Bármilyen soklyukú, alakzatú formát egyszerű megcsinálni, a siftekkel, és a bennük lévő lyukkal együtt, amibe majd a csavarok kerülnek.. A doboz külsejére a doboz anyagából feliratot is lehet csinálni. Az alapanyag kilója 5-10 eFt, fajtától, bolttól függően, de egy ilyen doboz pár gramm.
Hátránya:
Csak akkor olcsó, ha van saját nyomtatód, és saját magad megrajzold a térbeli mintát valami ingyenes tervező programmal. Egy doboz megtervezése egy óra alatt megtanulható.
Nekem a legolcsóbb, legegyszerűbb, lenézett Anet A8 nyomtatóm van, de ilyesmikre nekem bevált. Használtan már 20-30 ezerért is meg lehet manapság kapni, mert cserélik le az emberek újabbakra, jobbakra. Én még régebben vettem újan, kínai WEBshopból, valahol 40-50 ezer Ft között volt akkor az ára. Az újabbak, jobbak viszont már 150-200 ezer, vagy még több. -
its_grandpa
tag
válasz
#70211840 #18811 üzenetére
Na még egy ötlet, Oracal fólia.
Nekem közel találtam 50cm szélest, 1 m 1.000.- alatt, rengeteg színben.
>> Oracal 641 - Rövid- és középtávú kültéri alkalmazásra lett kifejlesztve ez a permanens ragasztójú univerzális plotter fólia.
Egy jó szike, sniccer segítségével csak lehet vágni rajta egy tisztességes négyzetet.(ma már nem ötletelek többet, vár az unokám)
-
-
válasz
#70211840 #18805 üzenetére
Gázon vörös-fehér izzás környékére hevített vastag dróttal kb 3-4mm ráhagyással kiolvasztod a nagyját (figyelve, hogy a félig-egészen olvadt trutyi ne értékes részekre pottyanjon), a maradékot pedig lombfűrésszel, kisebb reszelővel helyreteszed. Ha nem vagy patkolókovács, érdemes elpróbálni a művelet piromán részét egy kidobott samponosflakonon
. Ha nem tetszik a samponos eredménye, még mindíg jöhet a fúró+lombfűrész kombó.
Durván büdi a művelet
-
ReFleXx
addikt
válasz
#70211840 #18750 üzenetére
egyelore ugy nez ki sikerült rajönni a problemara, több mint egy napig futott most ugy hogy minden alkalommal felcsatlakozott a wifire a 10perces sleepbol. korabban ennyi ido alatt vagy 10 alkalommal biztos nem sikerült csaltakoznia csak restart utan. meg egy dolgot kirpobalok es +1 napig tesztelem.
-
ViZion
félisten
válasz
#70211840 #18728 üzenetére
Igen, enyém is a jobboldali. Gondoltam, h vmi nem kóser, sebaj. Resethez kell még forrasztani, csak így melegen kihívás a hegy csere
DHT11-el szépen dolgozik, Thingspeak-et kell még beállítani, kész.Megnéztem: a 01S-t rendeltem, ezt küldték. Mindkettő kapható, elcserélték, de nem is figyeltem, amikor megjött pár napja.
-
ViZion
félisten
válasz
#70211840 #18721 üzenetére
Egyrészt a neten található infók szerények és/vagy pontatlanok. Ez tényleg nagyon DIY, kicsit érthetetlen is, pl. a programozó adapterrel nem lehet programozni. Ehhez forrasztanod kell rá egy kapcsolót, ami programozásba kapcsolja
A netes "működő" projectek, leírások nagy részében nem említik, hogy a CH_EN lábnak high kell lennie, sok rajzon nem is jelölik. Vajon tényleg építettek ezek bármit, vagy csak így fejben és kreáltak képeket hozzá?
Az 1 MB csak ~870 KB, macerás erre bármi FW-t faragni, tényleg csak nagyon cél HW építhető, Neopixel vezérlő, fogyasztásmérő, szimpla hő+pára szenzor. Wifije botrányosan gyenge, ok, ennyi helyen ez is szép.
Nincs ezzel baj, de +700 Ft és a Wemossal már van OTA, 4 MB azért sok library-hoz elég, nincs macera a programozással, Wifi vállalható, ha a project változik, akkor ez alkalmas lehet másra is.
Akkus hő+pára szenzornak szántam, az is lesz majd, DHT11-el, ami nem túl jó, de van itthon. Ki akartam próbálni, így programozóval egy Wemos ára volt, nem nagy költség.
A wifit kell tesztelnem, ha elér a tervezett helyekről a routerhez, akkor lehet lesz még 2-3 db. Elem élettartamot is majd figyelem, hátha lehet vele hosszabb ideig (hónapok) üzemelni. Ehhez is forrasztani kell, power led ki, sleep GPIO-reset összekötés, de ez vállalható. -
válasz
#70211840 #18650 üzenetére
Több eszköz esetén azért nem jelent problémát, mert tudtommal eszközönként kellene egy-egy 4,7k ellenállás (/fixme). Ha véletlenül kettő párhuzamosan lesz kötve, a 2,3k még mindig nem túl alacsony. A túl magas érték okozhat problémát, mégpedig sebességcsökkenést, illetve a túl alacsony okozhat megnövekedett fogyasztást, illetve nyilván bizonyos határ fölött leégnek a portok.
Nem tudom, mi az igazság, én azt gondoltam, hogy csak azokon a kijelzőkön van gyárilag felhúzó, amik shield-ek, tehát egyszerűen összedugva a lappal működnie kell, de lehet, hogy ezen is van, nem tudom, ki kéne mérni.
Az is lehet, hogy az ESP az i²c buszra alapból bekapcsolja a beépített felhúzó ellenállást (ami egyébként magas, 10-30kΩ). -
ViZion
félisten
válasz
#70211840 #18632 üzenetére
Amire nem gondoltam (illetve instant elvetettem), hogy adatlap szerint 2,6-3,6 V, 3V3 typical. Neten túrva, egy egyszerű 2×AA tartóba pattintott elemmel (3 V) haJcsák.
Mondjuk Lipo elegánsabb lenne, de feltöltve ezek nem 4 V felett vannak? Van Lipo itthon, de soha nem mértemahh, Aryes, thx. szerintem ceruza elem lesz első körben, max. nem műXik, de nem is ölöm meg.
-
And
veterán
válasz
#70211840 #18628 üzenetére
Ugyan a szerelt I2C-slave eszközök részére (modul szintre) nem túl szerencsés dolog felhúzókat tenni, mivel több is lóghat belőlük ugyanazon a buszon, az SSD1306 modulok ebből a szempontból kivételek. Van rajtuk felhúzó 2 x 4,7 kΩ formájában, ezek ki is mérhetőek a modul kikapcsolt állapotában egy multiméterrel az SCL <-> 3,3V ill. SDA <-> 3,3V között (itt a 3,3V-ot a belső stabilizátor kimenetére értjük), mivel itt nem a modul szokásosan 5V-os külső tápjára vannak felhúzva a vezérlőjelek.
A 0,96"-os (128 x 64 pixeles) SSD-modulok fogyasztása különben kontraszt- (fényerő-) és képtartalom-függő, kikapcsolt pixelekkel néhány milliamper, ami kijelzéstől függően 20 mA fölé is emelkedhet. Semmiképp nem egy nagyfogyasztó. -
JozsBiker
aktív tag
-
-
válasz
#70211840 #18572 üzenetére
Arra nem gondoltál, hogy folyton ébren tartod az eszközt és wifi helyett sokkal alacsonyabb fogyasztású URH chipecskével kommunikálsz vele?
Ok, arcból lecsavarok, én is csak most találtam rá ezekre az apróságokra, a szabadon használható rádiófrekikről olvasgatva
. Én is berendeltem már a 01S+DHT22 kombókat, jobb 5let lett volna 433MHz alapú lapkára pakolni azokat a hőmérőket.
-
ReFleXx
addikt
válasz
#70211840 #18564 üzenetére
hasonlot tervezek, akksi / elem üzemről, nekem eleg ha 4-6 óránként küldi a mérési adatokat, azok között meg deepsleepben van.
2x AA elemmel elmegy a mikrovezerlo ugy hogy nem kell semmilyen voltage regulator vagy barmi, viszont az elemek kapacitasa nem aknazhato ki teljesen, sok benne marad, hamarabb beesik a feszültseg a minimum ala minthogy a kapacitas elfogyna az elemekbol ezert valamilyen lithium akksi jobb csak oda kell elektronika ami stabil 3.3V-t biztosit, peldaul egy HT7333 aminel eleg pici a droput feszultseg es a nyugalmi aram is.azt neked kell mérlegelni, hogy mennyire gyakran kellenek az adatok, a wifi adatatvitel jelentosen tobb fogyasztassal jar mint maga a meres, de csinalhatod azt is hogy összegyujtesz X darab mérési eredményt az RTC memoriaban es egyben kuldod ki, igy sokkal kisebb a fogyi mintha minden merest kikuldenel wifin.
nekem meg uton vannak az alkatreszek igy pontos merest majd csak jövöheten tudok vegezni, de mondjuk ha megtenned hogy nalad deepsleepben mennyi a fogyasztas annak orulnek. -
válasz
#70211840 #18561 üzenetére
Milyen helyiség az, amiben 0 fok alatti hőmérséklet van?
0 fok körül szerintem még nyugodtan használhatsz lítium akksit, az alatt tényleg inkább 4db ceruza elemet (akksit) használj. Bár úgy tudom, vannak itt, akik simán használják a 18650 cellákat télen-nyáron kültéren. 🤔
-
válasz
#70211840 #18542 üzenetére
Két dolog lehet, az egyik, hogy a rákötött eszköz áramfelvétele annyira kicsi, hogy az elektronika feltöltött eszközt érzékel és lekapcsol. A legtöbb powerbank így csinál, a modernebbekben van direkt kisfogyasztású eszközökhöz (pl. okosóra jellemzően ilyen) való üzemmód.
Próbáld ki, hogy teszel rá valami műterhelést, hogy megemeld a fogyasztását, és rögtön kiderül.A másik az, hogy túl nagy az áramfelvétel és a rákötött akku nem bírja árammal, beesik a feszültsége, az akkuvédelem pedig lekapcsolja az egészet. Ennek alesete, hogy a forrasztás nem sikerült jól és nem tud elég áramot felvenni az eszköz az akkuról, illetve a vezeték nem elég vastag. Én egyszer ebbe futottam bele.
-
#70211840
törölt tag
válasz
#70211840 #18523 üzenetére
Na, közben meg is lett a válasz. Van lehetőség PL2303-al programozni az ESP-01S modult.
Manuálisan kell az PIO-0 portot GND-re zárni és így elfogadja működik.Elnézést a topic "szemetelésért", de gyakran történik velem olyan, hogy mikor leírok egy problémát, nagyon hamar beugrik a megoldás. Vagy éppen azt követően, hogy leírtam amit szeretnék megtudni, nagyon hamar rátalálok a neten arra, amire addig nem.
Szóval ... elnézést. -
válasz
#70211840 #18499 üzenetére
Pedig ennek kellene csinálni emelést. Vagy nem terhelted meg eléggé a kimenetet és nem kapcsolt be a boost konverter, vagy még aktív a túlmerülés védelem a kimeneten, mivel ugye nem volt rá kötve semmi, ez pedig akkor kapcsol ki, ha töltést kap kívülről. De mivel az akksi fullra van töltve, nem indul be a töltési ciklus. Szóval próbáld meríteni és tölteni és egyszercsak jó lesz.
-
-
válasz
#70211840 #18484 üzenetére
Erről annyi látszik, hogy magán a chip-en keresztül táplálja vissza a 3.3V lábra a 3V-ot. Mivel a chipet ennek megfelelően tervezték, gondolom ez a rendeltetésszerű működés, annyi hátulütője lehet, hogy a LED miatt gyorsabban merül le a gombelem, mint kellene, így ha ez egyébként számít, érdemes leműteni a power LED-et. Bár abból kiindulva, hogy halványan világít, egészen pici áramok folyhatnak arrafelé.
Tedd már meg, hogy megméred, hogy ha nincs elem rákötve, és kap tápot a lap, a VBat vonalon mérhető-e bármilyen feszültség? Arra tippelek (illetve abban reménykedem), hogy nem. -
válasz
#70211840 #18485 üzenetére
amikor a microUSB csatlakozva van, akkor onnét működik és tölti az akkut is, majd amikor leválasztom, akkor az akkuról megy tovább a kontroller?
Az attól függ, hogy ez az áramkör alkalmas-e arra, hogy töltés közben a kimenetet is ellássa. Sajnos ezeknek az áramköröknek a többsége töltés közben leválasztja a kimenetet, de van olyan is, ami képes az általad leírt módon (a.k.a. szünetmentes tápegység) működni. Ki kell próbálni.
-
válasz
#70211840 #18470 üzenetére
Köss egy schottky diódát nyitó irányban sorba az elemmel, akkor biztosan nem merül, ha tápot kap a lap (bár ehhez látni kellene a kapcsolási rajzot). Ez igazából nem is a merülés ellen véd, hanem az elemet védi a töltéstől, ugyanis ha párhuzamosan kötöd a táppal védelem nélkül, elpukkanhat.
-
gsc73
aktív tag
válasz
#70211840 #18446 üzenetére
Hali!
Évekkel ezelőtt én egy ilyen panelt vettem. Szerintem ugyanaz az áramkör, amit korábban linkeltek, csak ez készen van. Panel kimenete >> Arduino digitális bemenet, figyelhető az alacsony/magas szint (if/then/else).
Üdv: G.
-
And
veterán
válasz
#70211840 #18446 üzenetére
Ok, de gombelemek méréséhez nem kell 50V-os méréshatár, se 1:10 feszültségosztó, ha egyébként más forrásból van 5V-os referenciád. Ebben az esetben akár a kontroller analóg(nak konfigurált) bemenetére is mehet közvetlenül az elem feszültsége. Annak esetleg érdemes utánanézni, hogy egy ilyen AI-port mekkora impedanciával terhel (vagy mekkora lehet a szivárgóárama), de általában elég naggyal. Elemmerülés jelzéséhez egyébként belső komparátor is megfelelhet, ha az adott uC rendelkezik olyannal.
-
And
veterán
válasz
#70211840 #18435 üzenetére
Hálózat / fázisfigyelés: célszerűen egy optocsatolón keresztül érdemes megoldani. Példák: [link], [link]. Feladatfüggő, hogy mennyire szükséges szűrni a uC felé szánt jelet (mekkora időállandóval, csak a fázis jelenléte érdekes, kimaradt félperiódusok számlálása is kell-e, stb.).
Feszültségmérés: a konkrét megoldás itt is a körülmények függvénye. Ha a mérendő forrás terhelhető (pl. tápfeszültség), akkor egy natúr ellenállásosztó elegendő, lehetőleg 10 kΩ-ot nem meghaladó forrásimpedanciával a kontroller felé. Ha pufferelés (nagy bemeneti impedanciával kell fogadni a mérendő jelet) és / vagy túlfeszültségvédelem is szükséges, akkor egy opa-fokozattal (pl.: [link]) kiegészíthető az eredeti feszültségosztó, amelynek tagjai ebben az esetben jóval nagyobb értékűek is lehetnek. -
Janos250
őstag
válasz
#70211840 #18319 üzenetére
Ha mindenféléket tudni akarsz a lapodról, akkor futtasd le:
void setup() {
Serial.begin(115200);
delay(3000);
printf("Internal RAM:\n");
printf("HeapSize = %d , 0x%08X \n",ESP.getHeapSize(),ESP.getHeapSize());
printf("FreeHeap = %d , 0x%08X \n",ESP.getFreeHeap(),ESP.getFreeHeap());
printf("MinFreeHeap = %d , 0x%08X \n",ESP.getMinFreeHeap(),ESP.getMinFreeHeap());
printf("getMaxAllocHeap = %d , 0x%08X \n\n",ESP.getMaxAllocHeap(),ESP.getMaxAllocHeap());
printf("SPI PSRAM:\n");
if(psramInit()){
printf("PsramSize = %d , 0x%08X \n",ESP.getPsramSize(),ESP.getPsramSize());
printf("FreePsram = %d , 0x%08X \n",ESP.getFreePsram(),ESP.getFreePsram());
printf("MinFreePsram = %d , 0x%08X \n",ESP.getMinFreePsram(),ESP.getMinFreePsram());
printf("MaxAllocPsram = %d , 0x%08X \n\n",ESP.getMaxAllocPsram(),ESP.getMaxAllocPsram());
}else{
Serial.println("PSRAM not available");
} ;
printf("ChipRevision = %d \n",ESP.getChipRevision());
printf("ChipModel = %s \n",ESP.getChipModel());
printf("ChipCores = %d \n",ESP.getChipCores());
printf("CpuFreqMHz = %d \n",ESP.getCpuFreqMHz());
printf("SdkVersion = %s \n",ESP.getSdkVersion());
printf("FlashChipSize = %d, 0x%08X \n",ESP.getFlashChipSize(),ESP.getFlashChipSize());
printf("FlashChipSpeed = %d \n",ESP.getFlashChipSpeed());
printf("FlashChipMode = %d \n",ESP.getFlashChipMode());
printf("SketchSize = %d, 0x%08X \n",ESP.getSketchSize(),ESP.getSketchSize());
printf("FreeSketchSpace= %d, 0x%08X \n",ESP.getFreeSketchSpace(),ESP.getFreeSketchSpace());
printf("EfuseMac = %d, 0x%08X \n",ESP.getEfuseMac(),ESP.getEfuseMac());
printf("SPI_FLASH_SEC_SIZE = %d, 0x%08X \n\n",SPI_FLASH_SEC_SIZE,SPI_FLASH_SEC_SIZE);
printf("\nPartition table:\n");
esp_partition_iterator_t it;
esp_partition_t *pPart;
it = esp_partition_find(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, nullptr);
while (it != nullptr)
{
pPart = (esp_partition_t *) esp_partition_get(it);
printf("main: partition type = %d.\n", pPart->type);
printf("main: partition subtype = %d.\n", pPart->subtype);
printf("main: partition starting address = %x.\n", pPart->address);
printf("main: partition size = %x.\n", pPart->size);
printf("main: partition label = %s.\n", pPart->label);
printf("main: partition subtype = %d.\n", pPart->encrypted);
printf("\n");
it = esp_partition_next(it);
}
it = esp_partition_find(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, nullptr);
while (it != nullptr)
{
pPart = (esp_partition_t *) esp_partition_get(it);
printf("main: partition type = %d.\n", pPart->type);
printf("main: partition subtype = %d.\n", pPart->subtype);
printf("main: partition starting address = %x.\n", pPart->address);
printf("main: partition size = %x.\n", pPart->size);
printf("main: partition label = %s.\n", pPart->label);
printf("main: partition subtype = %d.\n", pPart->encrypted);
printf("\n");
it = esp_partition_next(it);
}
esp_partition_iterator_release(it);
}
void loop() {
} -
válasz
#70211840 #18319 üzenetére
Ha a chip-en Esp wroom van, akkor nyugodtan állítsd be annak, aminek vetted (pl ESP32 NodeMCU).Akár Generic ESP32-t is beállíthatsz, legfeljebb a lábak elnevezésével lehet némi zavar, de belül az összes ugyanaz.
Igen, ha van rajta usb csatlakozó, az alapvetően pont a feltöltés miatt van rajta. Feltöltésnél előfordulhat, hogy nem tudja magát automatikusan resetelni (nem mindegyik tudja), akkor valamelyik gomb (talán a boot?) nyomvatartása mellett kell majd gépre dugni a feltöltés előtt.
-
#70211840
törölt tag
válasz
#70211840 #18244 üzenetére
Storno, közben sikerült megoldanom
(csak úgy tessék-lássék módon)
Test.ino
WireScanner.h
WireScanner.cpp -
#70211840
törölt tag
-
Janos250
őstag
válasz
#70211840 #18223 üzenetére
Közben még más is eszembe jutott:
a ILI9225 , az ahogy a neten nézem, egyértelműen SPI. Rosszul nézem?
Mert, ha SPI, akkor az soha nem fog menni párhuzamos porttal.
Rosszul látom?http://www.lcdwiki.com/2.2inch_Arduino_SPI_Module_ILI9225_SKU:MAR2201
-
Janos250
őstag
válasz
#70211840 #18223 üzenetére
Ha lefordul, akkor sehol.
a gpio_def.h-ban van más néven gyakorlatilag ugyanaz a struktúra:
typedef struct gpio_dev {
gpio_reg_map *regs; /**< Register map */
rcc_clk_id clk_id; /**< RCC clock information */
/**
* @brief (Deprecated) External interrupt port.
* Instead of dev->exti_port, use gpio_exti_port(dev).
*/
exti_cfg exti_port;
} gpio_dev;És a gpio_reg_map is az STM32F4 sorozathoz.
(Én az STM32F1 sorozathoz néztem korábban)Vagyis ő ugyanezt a struktúrát gpio_dev -nek nevezi
Továbbá:
extern const gpio_dev gpioa;
#define GPIOA (&gpioa)Vagyis ez valóban a helyes címe lesz, nem kell a GPIO_TypeDef.
Viszont, hogy haArduino_STM32PAR8(int8_t dc, int8_t cs, int8_t wr, int8_t rd, GPIO_TypeDef* port)
-ban aGPIO_TypeDef* port
szerepel, akkor miért fogadja el szintaktikailag a
GPIOA-t, mint címet is, az számomra nem világos, ehhez a C++ -t jobban ismerők kellenének.
Én úgy tudom, hogy ha a "GPIO_TypeDef* port"
szerepel a konstruktorban, akkor nem kéne elfogadnia csak úgy, egy mással definiált címet, de ezek szerint rosszul tudom.Miért üres a képernyő?
Hát ezt hardver nélkül meg nem mondom.
Itt jön elő az a technika, amit mindenkinek javasolni szoktam:
https://www.aliexpress.com/item/4000192339928.html
Kár, hogy az ára felment a csillagos egekbe, mert én még 2000 Ft alatt vettem, ma már háromszorosa. :-(Közben ebay-en találtam olcsóbbat is:
https://www.ebay.com/itm/393578549978
Tehát ilyenkor az ember a következőt teszi:
Ráakasztja ezt a szerkentyűt a használt lábakra, és megnézi, mi jön ki/megy be. Szépen grafikusan is, meg dekódolva is látszik. Aztán összehasonlítja a dokumentációban leírtakkal, hogy minek kellene, és akkor már tudja igazítani. -
Janos250
őstag
válasz
#70211840 #18129 üzenetére
Most volt egy kis időm, és ismét belenéztem ebbe az óra programba, ami le se fordult.
Lefordulni lefordul, de hardver hiányában persze kipróbálni nem tudom.
A tapasztalatok:A programban a legelején ki kell választani valamelyik stm32-t.
#define ARDUINO_ARCH_STM32F1
nem jó, mert a Arduino_STM32PAR8.h elején csak azARDUINO_ARCH_STM32 szerepel
ezért:#define ARDUINO_ARCH_STM32
includolni kell a Arduino_STM32PAR8.h-t
#include <databus\Arduino_STM32PAR8.h>
Az Arduino_STM32PAR8.h-ban szerepel a GPIO_TypeDef típus, de sehol nincs megadva. Meg kell adni!
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;A .ino-ban:
#define ARDUINO_ARCH_STM32
#include <Arduino_GFX_Library.h>
#include <databus\Arduino_STM32PAR8.h>
#define GFX_BL DF_GFX_BL // default backlight pin, you may replace DF_GFX_BL to actual backlight pin
#if defined(DISPLAY_DEV_KIT)
Arduino_GFX *gfx = create_default_Arduino_GFX();
#else /* !defined(DISPLAY_DEV_KIT) */
;
GPIO_TypeDef * ENPORTOM = (GPIO_TypeDef *) 0x42010800 ;
//ENPORTOM=0x42010800 ez az STM32 A portja
Arduino_DataBus* bus = new Arduino_STM32PAR8(1, 2, 3, 4, ENPORTOM);
// csak probara 1, 2, 3, 4,-et irtam be
/*
Az egyes portok kezdőcímei:
#define PERIPH_BB_BASE ((uint32_t)0x42000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
*/
Arduino_GFX *gfx = new Arduino_ILI9341(bus, DF_GFX_RST, 0 /* rotation */, false /* IPS */); -
válasz
#70211840 #18211 üzenetére
De, szerintem jól gondolod. Az IO pinek közvetlenül a chipre vannak vezetve, ami 3,3V-ot kap, valószínűleg visszafelé nem fog 5V menni egyiken se.
A touch részét viszont majd faragni kell, mert a library az UNO analóg bemenetére van megírva, ami 10bites, 0-5V közt 0-1023 értéket ad vissza, ebből ugye csak a 0-3,3V közti értékeket használja ki, ami 0-675 közti értékeket jelent, az ESP-n viszont 12bites az analóg bemenet, ami azt jelenti, hogy a 3,3V jelszint 4095 értéket fog jelenteni. 6tal osztani kell majd mindent.
-
válasz
#70211840 #18205 üzenetére
Lábkiosztásban csak akkor, ha a D0-D13 A0-A5 lábakat értelmezni tudja / lefordítja automatikusan IO26, IO25 stb lábakra, ellenkező esetben át kell írnod a library-ben a lábak nevét.
Jelszintben van rá esély, hogy az alapvetően 5V jelszintre felkészített shield működni fog 3,3V jelszintről is konverzió nélkül is, de lehet vele probléma, ez csak teszteléssel derül ki.
Viszont arra vigyázni kell, hogy ha az ESPduino-32 5V pinjén megjelenik az 5V, akkor azt megkapja a shield, és azon keresztül esetleg megjelenhet valamelyik I/O pinen is, amit az ESP32 nem szeret. Ezt adott esetben füstjelekkel adhatja tudomásodra. -
ekkold
Topikgazda
válasz
#70211840 #18173 üzenetére
>Van viszont egy komoly probléma ezzel a maggal.
>1. Windows - ArduinoIDE
>Iszonyatosan lassan fordít!!!
Nálad lehet valami gond a windows-al, mert ugyan nálam sem egy rakéta, de egy nagyobb kódot is lefordít másodpercek alaltt. (pl. egy kb. 1000 soros arduino program 9 másodperc alatt fordul le - Win7 + ArduinoIDE). -
ekkold
Topikgazda
válasz
#70211840 #18173 üzenetére
>Ez csak STM32 esetében igaz
>vagy jellemző már az összes hasonló eszközre?
A legtöbb hasonló MCU-ra jellemző, csak van amelyik nem minden lábán tudja, és sok olyan van, amiben csak felhúzó ellenállást lehet bekapcsolni, lehúzó ellenállást nem tud.>Tehát elég csak bekötnöm egy gombot egy pin-gnd közé?
>Ennyire egyszerű volna?
Igen.A pergésmentesítés szoftveres, vagy hardveres is lehet. Ha a szoftverben elfér (tehát nincs kicentizve az MCU kapacitása) akkor az a jó megoldás. Ha viszont az MCU tárhelye, ideje, kapacitása korlátait feszegetjük, akkor a hardveres megoldás is szóba jön.
Amikor pedig olyan környezetben működik majd az MCU, ahol sok zavarforrás is van, akkor előfordul, hogy a hardveres és szoftveres megoldás is dolgozik együtt. -
válasz
#70211840 #18171 üzenetére
egy belső felhúzó ellenállást HIGH értékre állítja az adott PIN-t. Én a nyomógombbal egy külső ellenálláson GND-re zárom
Nincs szükség ellenállásra, a belső felhúzó ellenállás önmagában is elég magas.
az analóg bemenetet használva nem lehet olyat csinálni, hogy a különböző gombok más-más ellenállás értékkel zárnak és a kapott feszültség értéket kiolvasva meg tudom mondani melyik volt az? Esetleg több gomb lenyomását is?
Minden további nélkül, de mivel - ha szeretnéd úgy megépíteni, hogy több gomb egyszerre lenyomását is ki tudd olvasni belőle - az ellenállásokat (illetve analóg bemenet esetén az egyes gombokhoz tartozó feszültség értékeket) a 2 hatványai szerint kell választani, 8-9 gombnál többet nem nagyon tudsz így bekötni. Példa kapcsolás ellenállás létrával (érdemes az azonos értékű ellenállásokból álló kapcsolást megépíteni, könnyebb összeválogatni az értékeket, illetve lehet készen is kapni ellenállás létrát).
A kis kondira gondolsz
Nem, én szoftveres debouncingra gondoltam, van egyszerűbb és elegánsabb megoldás, persze meg lehet oldani kondival is, de felesleges hely és alkatrész pazarlás, mert szoftverből teljesen jól meg lehet oldani. Ha mégis hardveresen szeretnéd megoldani, akkor a felhúzó ellenállás értékéből kell számolni a kívánt időállandójú (40-100ms közt szokás kapcsolótól és felhasználástól függően) RC tagot és ahhoz választani a kondit.
-
ekkold
Topikgazda
válasz
#70211840 #18167 üzenetére
Általában bekapcsolható "felhúzóellenállás" van a lábakon a legtöbb MCU-ban, de az STM32 esetében lehet a GND felé (lehúzó) vagy a +3V3 felé (felhúzó) ellenállás is, te határozod meg a szoftverben.
Több gomb kezelése sokféleképpen megoldható, kevés I/O láb felhasználásával, lehet pl. mátrixba kötni a gombokat (sor-oszlop elrendezés) Ekkor pl. 16 gomb esetén csak 2x 4láb kell (4 sor 4 oszlop).
Persze vannak ennél még trükkösebb megoldások is, attól függ mennyire vagy szűkében az I/O lábaknak, ill. mennyi plusz alkatrész fér bele a játékba, vagy mondjuk tudni kell-e különféle gomb-kombinációkat is felismerni, vagy várhatóan egyszerre csak egy gomb lesz lenyomva.
-
Janos250
őstag
válasz
#70211840 #18160 üzenetére
Van, aki Eclipse alatt használja az Arduinot. Én egyszer - régen - próbáltam, de úgy láttam, hogy ahhoz legalább 4K, és méteres monitor kell, hogy az ember lássa is a dolgokat, ezért nem is foglalkoztam vele. A mostani meg - ha jól rémlik - csak win10 alatt megy, de amíg nem nagyon muszáj, nem akarok 8.1-ről átállni arra a túl kíváncsi verzióra.
Nekem nem okoz nagy gondot az Arduino IDE."Régóta Eclipse-t használok már és nagyon megszoktam"
"Még erősen kezdő vagyok"
A kettő együtt elég ritka társulás! :-) -
-
válasz
#70211840 #18159 üzenetére
A kód méretével nem érdemes foglalkozni addig, amíg belefér a céleszközbe.
A méretkülönbség eredhet a kód különböző optimalizációjából is. És nem biztos, hogy a kisebb méretű program a jobb. Gondolom azzal tisztában vagy, hogy a gyorsaságra optimalizált kód néha nagyobb méretű programot eredményez. -
Janos250
őstag
válasz
#70211840 #18155 üzenetére
Akkor miért nem rakod össze csak C-t, és a hivatkozott libraryt használva Arduino IDE-ben.
Megtanulsz egy csomó dolgot STM32-re, ami máshol nem úgy lesz? Ezért jó ez az Arduino, hogy a C/C++ fölött egy egységes "szabványt" ad, hogy mit hogyan használj.
A C dolgok teljes egészében mennek Arduino alatt is. Nekem legalábbis az ESP32-n, de gondolom máson is, bár mást már jó ideje nem használtam.
Régebben, mikor STM32-t használtam, akkor még nem merült fel bennem ilyen kérdés, így nem próbáltam.
Én - ha épp olyan kedvem van - pl. simán használom a C fájl kezelését. Ha az alapokra kell leennem valamiért, az interneten (WiFi) keresztüli kezelést is C fájlként oldom meg.
Igaz, hogy a Cube-ban grafikusan látod, hogy mit hova, de az holt tudás lesz, ha másra akarsz áttérni. -
#70211840
törölt tag
-
Janos250
őstag
válasz
#70211840 #18120 üzenetére
Hát, ez így nehéz lesz, ha én mondom, mert már rég használtam STM32-t, nem nagyon emlékszem már rá, és nincs is már nekem itthon, csak vidéken.
Így megint a már említett libák esete jön, hogy mikor fogynak el. :-)
Most már én is a G alapján nézem, persze annyi az előnyöm, hogy én tudom, hogy mit keressek, de kipróbálni nem tudom.Az STM32 Bluepill elvileg F103C8T6
A GPIO_TypeDef például itt van leírva:
http://stm32.kosyak.info/doc/stm32f10x_8h_source.html
/opt/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.htypedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;A portok kezdő címei (szerintem):
port cím
A 0x40010800
B 0x40010C00
C 0x40011000
D 0x40011400
E 0x40011800Port configuration register low (GPIOx_CRL) (x=A..G) Address offset: 0x00
Port configuration register high (GPIOx_CRH) (x=A..G) Address offset: 0x04
Port input data register (GPIOx_IDR) (x=A..G) Address offset: 0x08h
Port output data register (GPIOx_ODR) (x=A..G) Address offset: 0x0C
Port bit set/reset register (GPIOx_BSRR) (x=A..G) Address offset: 0x10A sorrend egyezik a GPIO_TypeDef-ben lévő sorrenddel.
Így (talán) portnak a
0x40010800 címre definiált GPIO_TypeDef típus. -
Janos250
őstag
válasz
#70211840 #18112 üzenetére
Most már értem a problémát. :-)
Én kipróbálni nem tudom, mert nincs ilyen buszos LCD-m, ezért csak ötletelek. (amíg lesznek még libák, mint a viccben)
A HelloWorld.ino
https://github.com/moononournation/Arduino_GFX/blob/master/examples/HelloWorld/HelloWorld.inotartalmaz ilyet:
/* More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class */
Arduino_DataBus *bus = create_default_Arduino_DataBus();A linken van párhuzamos busz is:
"
This is very slow but it works.RD pin is optional (Arduino_GFX not yet have any features read from display), but you still need pull-up RD pin if not connect to a GPIO
Arduino_DataBus *bus = new Arduino_SWPAR8(TFT_DC, TFT_CS, 25 /* WR */, 32 /* RD */, 23 / ....... stb. "
Én ezzel próbálnám ki. -
Janos250
őstag
válasz
#70211840 #18110 üzenetére
Én valahogy nagyon nem vagyok képben.
Az Arduino alatt van két könyvtár:
GFX Library for Arduino
és a másik:
TFT_22_ILI9225
Miért nem ezeket használod, miért akarsz mindenféle, kontrollerenként speciális drivert tartalmazó könyvtárat használni? Ezeket kipróbáltad, és nem futnak, nem felelnek meg az igényeidnek, vagy valami egyéb - általam ismeretlen - oka van?
Belenéztem az egyik linkelt librarybe, amire hivatkoztál. Az egy csomó különböző kontrollerre megadja a lábak kezelését.
Minek?
Az Arduinoban pont az a jó, hogy nem kell foglalkoznunk azzal, hogy az egyes lábakat hogyan kezeli a rendszer. Oldja meg, az ő gondja, nem a miénk.
Ha leírom azt, hogy digitalWrite() , nem érdekel, hogy az Arduino azt azon a kontrolleren, amit kijelöltem a Boards Manageren, hogyan oldja meg.
Beírtad az Arduino IDE File/Preferences/Additional Boards Manager URLs mezőbe, hogy:
http://dan.drown.org/stm32duino/package_STM32duino_index.json
Utána a Boards Manageren installáltad az STM32F1xx/GD32F1xx boards kezelőt?
Utána kiválasztottad a (talán) STM32F103C boardot?File/examples/TFT_22_ILI9225/Basic Demo
Ez nem fordul le nálad, vagy nem jól kezeli, vagy a Te elvárásaidnak nem felel meg?Megannyi kérdés, amire ha nem tudjuk a választ, nem tudunk (én legalábbis így gondolom) tovább lökdösni a megfejtés felé.
Bocs, hogy értetlenkedek, de ezek számomra tényleg nem világosak az eddig leírtakból. -
#70211840
törölt tag
válasz
#70211840 #18102 üzenetére
Nem sikerül fordítanom sem a programot, mert nincs definiálva és én sem értem, hogy honnét jönne az A1, A2, A3 az 50-51-52 sorokban. ( [link] )
// Remember to change the model parameter to suit your display module!
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
//#define LCD_RST A0 //
Új hozzászólás Aktív témák
Hirdetés
- Azonnali alaplapos kérdések órája
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Háborog az Apple az iPhone-ra írt első pornóapp miatt
- Autós topik
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- CPU léghűtés kibeszélő
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Path of Exile (ARPG)
- TCL LCD és LED TV-k
- Milyen TV-t vegyek?
- További aktív témák...
- RTX 4080 SUPER,16GB. Ryzen 7 7800X3D, 32 RAM Fury RGB! Garancia!
- Asztali PC , i7 9700K , RX 5700 XT , 32GB DDR4 , 500GB NVME , 1TB HDD
- Dell Inspiron 5406 2-in-1i5-1135G7 16GB DDR4 3200 512GB NVME 14" FHD Érintőkijelző W11Pro
- Eladó MacBook Pro 14" M1 Pro (2021) 16/512 99% akku Makulátlan állapotban!
- Újszeru GIGABYTE G5 - 15.6" FullHD 144Hz - i7-13620H - 48GB - 1TB - RTX 4050 - Win11 - 1,5 év gari
- AKCIÓ! Apple Macbook Pro 16" 2019 i7 9750H 32GB 500GB Radeon Pro 5300M hibátlan működéssel
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
- 119 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!) (ELKELT)
- Bomba ár! Dell Latitude E6540 - i5-4GEN I 8GB I 320GB I DVDRW I 15,6" FHD I HDMI I W10 I Gari
- LG 27GR95QL - 27" OLED / Limitált LoL Edition / QHD 2K / 240Hz & 0.03ms / NVIDIA G-Sync / FreeSync
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged