- Megerősíti a platformfüggetlen sugárkövetéses tesztjét a 3DMark
- A Seenda ollós klaviatúrája a Microsoft Sculpt Ergonomic Keyboard nyomdokain jár
- Gamescom 2025: Itt a legújabb Gaming NUC
- Cicomától mentes Palit GeForce RTX 5060 a kevésbé tágas gépházak gazdáinak
- Eldőlt: nem építhetnek hátsó kaput az Apple termékekbe a britek
- TCL LCD és LED TV-k
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Apple asztali gépek
- Bambu Lab 3D nyomtatók
- Milyen billentyűzetet vegyek?
- Fejhallgató erősítő és DAC topik
- Milyen monitort vegyek?
- Kormányok / autós szimulátorok topikja
- Azonnali notebookos kérdések órája
-
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
-
bear_
aktív tag
válasz
Dißnäëß #15388 üzenetére
Ilyen balhé volt pár éve, az egyik kínai alaplapgyártó a saját mókolt IC-ire cserélte az egyik alaplapon lévőt, amivel aztán tudtak kémkedni. Úgyhogy az óvatosság jogos
Bár azt kétlem, hogy mikrovezérlőkbe hasonló kiskapuk lennének építve. Tekintve, hogy viszonylag egyszerű szerkezetek amiket simán le tudnak másolni már a kínaiak, ezért hamar kibukna a dolog.
-
bear_
aktív tag
Már értem, köszi a tanácsot.
@#15215 weiss neked is köszi, hétvégén kipróbálom.
"Miért van a digits1/2/3/4, és miért különböznek, ha mindegyik egy sima 7 segmenses kijelzőt vezérel? "
Mert nem egyesével vezérli a kijelzőket, hanem egyszerre. Itt van hozzá a kapcsolás: [link]
De az is lehet, hogy én gondoltam túl -
bear_
aktív tag
Mármint mennyi? Ezt nem értem. A pastebinen mindegyik sorban 16db 0 az OFF.
2db sorba kötött shift registerbe tölti be az MCU a biteket, az első 8 bit a 7 szegmenses kijelző egy-egy szegmensét kapcsolja(+ a . ugye), a következő négy nem csinál semmit, a maradék néggyel pedig a szegmenseket lehet egyesével kapcsolgatni.Ha arra gondolsz, hogy miért 0 az active state: nem emlékszem pontosan miért, egy hónapja írtam a shift regiszterek vezérlését, de valóban fordítva működik, kijavítani meg lusta voltam
Szerk: "
Egyáltalán miért van szükség az off kódot kiíratni, egyszerűen csak ugorni kéne azt a szegmenst, ez egyszerű erőforráspazarlás."
Ezt megint nem értem. Ha nem mondom meg a shift registernek (nem töltöm fel 0-val ami kikapcsolja a kimeneteket), akkor hogy tudom kikapcsolni az adott szegmenseket?
-
bear_
aktív tag
Ha végére rakom az OFF-ot akkor ugyanúgy gond van a kezelésével, azt a kört már lefutottam
Nem vagyok egy C guru, megtennéd légyszi, hogy bedobod a kódomba az általad felírt függvényt? Nem vagyok benne biztos hogyan is működik pontosan, így nagy segítség lenne a megfejtésében.
-
bear_
aktív tag
Igen, az világos. A 0 indexű sor a kikapcsolja a kijelzőket ahogy a komment is mutatja mellette. És pont ez a probléma, ha egyel növelem a változót akkor az egyes indexre ugrik, ami ugye 0-t jelenít meg, és emiatt van az, hogy x9 után 00-ír ki a kijelző.
Haif(num1>10){
num1=1;
num2=2;
}feltételt szabok meg, akkor 19 után 10-re ugrik vissza, ami ugye logikus is.
Ha
if(num1>10){
num1=1;
num2++;
}
a feltétel akkor remekül működik a fentebbi problémát leszámítva. tehát x9 után 00-ra ugrik. Az x itt kikapcsolt kijelzőt jelent, csak a másik működik amíg 9 felé nem teker a változó. -
bear_
aktív tag
Sziasztok!
Újra van időm mikrokontrollerezni, így szerettem volna tovább babrálni.
Az ADC-t szerettem volna kipróbálni és beolvasott értéket kiírni a kijelzőre, de nem tudom leprogramozni normálisan a kijelző léptetését.
0-9-ig tök jól elszámol az első helyiérték, a második helyiértéket jelző 7 szegmenses kijelző viszont 00-t jelenít meg x9 után 10 helyett.
A probléma okát értem mert a tömböm szerint a kikapcsolt szegmensek után a következő sor a 0 értéket tartalmazza, én viszont a második tömbből a második sort felhasználva szeretném bekapcsolni a második helyiértékű 7 szegmenses kijelzőt. Természetesen próbáltam ezerféleképpen, de vagy nem számol el az egész 19-től tovább, vagy 9 után 00-át jelenít meg.Hogy lehet ezt megoldani? Már a falat kaparom miatta.
Kód: [Pastebin]
-
bear_
aktív tag
Megvan a probléma, a for ciklust rontottam el.
Viszont itt is a következő problémám:
Azt szeretném, ha nyomógomb megnyomására egyel magasabb értéket jelenítene meg a 7 szegmenses kijelző.
0 az alapállapot, és ha nyomva tartom akkor felugrik 1-re, ha elengedem akkor visszaugrik 0-ra. Gyanítom ez azért van mert végigfut a kód és nullázódik a mikrokontroller. Hogy lehet azt megoldani, hogy a változó megjegyezze az értéket?
kód:
while (1) {
int num=0;
if(HAL_GPIO_ReadPin(SW1_GPIO_Port, SW1_Pin)==0){
num++;
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_RESET);
for(int i = 0; i <= 15; i++) {
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
if(digits[num][i] == 1) {
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_SET);
}else {
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);
}
}
-
bear_
aktív tag
Sziasztok!
Nem arduino, hanem STM32 és HAL, de lehet tudtok segíteni.
Rendeltem az aliexpressről egy multifunctional shieldet, ilyet: [link]
Szeretném a 7 szegmenses kijelzőt működésre bírni, de nem igazán járok sikerrel.
Ahogy az oldalon is látszik a kijelzőt 2 kaszkádba kötött 595-ös shift regiszter vezérli, így elvileg 16 bittel lehet "feltölteni". Az egyik shift register a szegmenseket, a másik a kijelzőket egyenként engedélyezi.Íratm is hozzá egy progit ami így néz ki:
int digits[16] = {1,1,1,1,1,0,1,0,1,0,1,1,0,1,1,0};
int main(void)
{
int digits[16] = {1,1,0,1,1,0,1,0,1,0,0,1,0,1,0,0};
while (1)
{
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_RESET);
for(int i=0; i>=15;i--){
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);
if(digits[i]==1){
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);}
STCP: LCHCLK, storage register clock input
SHCP: SFTCTLK, shift register clock input
DS: serial dataSajnos az eredmény egy katyvasz, nem azt írja ki amit szeretnék, mindig ugyanaz a minta jelenik meg akármilyen értékek szerepelnek a tömbben.
Mi lehet a hiba?
-
bear_
aktív tag
Sziasztok,
Arduinora szeretném a pure C-ben írt hexemet feltölteni. Van erre lehetőség?
-
bear_
aktív tag
Probléma megoldva, a gagyi USB kábel volt a hibás.
Viszont belefutottam egy újabb problémába:
Natúr C nyelven szeretnék programokat írni, és addig okés is, hogy feltöltöm a hex filet, viszont hiába van magasszinten a kimenet, alig világítanak a ledek. Az előtétellenállások jók, az arduinoban írt progival tökéletesen világitanak. Mi lehet a gond? -
bear_
aktív tag
Sziasztok!
Windows 10 alatt nem tudom flashelni az UNOmat. XP alatt tökéletesen működik. Tud valaki rá mogoldást?
Új hozzászólás Aktív témák
Hirdetés
- Új Acer Predator 16 WQXGA 165Hz G-Sync i9-13900HX 16GB 1TB Nvidia RTX 4070 8GB 140W Win11 Garancia
- Számítógép, ryzen 5 2600, RX 580 8GB, 16gb ddr4, 512gb ssd, 1tb hdd
- HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 16/512 Iris Xe FHD
- Gigabyte GeForce GTX 1660 Ti OC hibátlan, dobozos, 14 nap személyes garanciával
- HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD
- BESZÁMÍTÁS! MSI B450M R7 1700X 16GB DDR4 128GB SSD 1TB HDD GTX 1650 Super 4GB Zalman T7 Chieftec 400
- GYÖNYÖRŰ iPhone 11 64GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS2190, 100% Akkumulátor
- Lenovo Yoga Slim 7 i5-1135G7 8GB 512GB 14" FHD IPS
- REFURBISHED és ÚJ - Lenovo ThinkPad Ultra Docking Station (40AJ)
- Gamer PC- Számítógép! Csere-Beszámítás! I5 12400F / RTX 3070 8GB / 32GB DDR4 / 500GB SSD+ 2TB HDD
Állásajánlatok
Cég: FOTC
Város: Budapest