Hirdetés
- Miért fárad gyorsabban az iPhone akku, mint az androidos?
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Milyen okostelefont vegyek?
- Kis méret, nagy változás a Motorolánál
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Fotók, videók mobillal
- Xiaomi 15T Pro - a téma nincs lezárva
- Samsung Galaxy S25 - végre van kicsi!
- Samsung Galaxy Z Flip5 - ami kint, az van bent
- Magisk
-
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
Nem teljesen látom át a problémát, de az UNO-n nem működik az sprintf?
https://www.cplusplus.com/reference/cstdio/sprintf/ -
Nem tudom bedobni a kódodba, mert nem teljesen értem mit csinál. 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? Egyébként ennyi volna a használata:
unsigned int value = 1234; // ide az ADC olvasás vagy akármi
decomposition_to_digits(value, false, &num4, &num3, &num2, &num1);Már ha a num4 az ezres érték.
-
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?
Hát úgy, hogy nem kapcsolod be.

Minden körben egymás után kapcsolgatod a szegmenseket. Amikor egy szegmenst vezérelsz, a másik 3-at lekapcsolod! Tehát amikor a következőt bekapcsolnád, egyszerűen csak nem kapcsolod be.
Ezzel:{{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1}
minden számjegy minden szegmense egyszerre világítana (8888). -
Ez miért ennyi?
int digits1[11][16] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //OFF
Miért nemint digits1[11][16] = {{1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0}, //OFF
vagyint digits1[11][16] = {{1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //OFF
?
A többi 3-ra is vonatkozik.
Végülis a futás szempontjából nem fontos, csak zavarja az OCD-met.
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.

-
-
-
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);}} -
Rossz a logika, a clock alacsony szintje alatt kell kiírni a buszra a data bitet, felfutó élnél lesz érvényes, te fordítva csinálod.
Meg kell cserélni aHAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);és a
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);sorokat, így:
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_RESET);
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_SET);
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);
}Az is lehet, hogy túl gyorsan küldi ki a kód a biteket, nem tudom milyen órajelen fut a kontrollered, de vmi minimális delay kellhet esetleg a for ciklus végére, a bitek közé, ha a fenti kód se működne helyesen.
-
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?
Új hozzászólás Aktív témák
- Miért fárad gyorsabban az iPhone akku, mint az androidos?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Elon Musk billiomos lesz, ha kitör a gépek forradalma
- World of Tanks - MMO
- Amlogic S905, S912 processzoros készülékek
- Gaming notebook topik
- Anglia - élmények, tapasztalatok
- Fejhallgató erősítő és DAC topik
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Kihúzhatja a gyufát a PC-s gyártóknál az érkező új Xbox
- További aktív témák...
- Microsoft Surface Hub 2s - Interaktiv 4K monitor/ All in one PC - I5 8. generációs - Piaci ár alatt
- Benq - LU951- 5000 Ansi Lézer projektor - Piaci ár alatt
- -ÚJ,2 ÉV GAR- GAMER PC: i5-14400F (10mag/16szál) +RX 6600/6700XT +16-64GB DDR4! SZÁMLA! 70 féle ház!
- Capriolo Oxygen 29" MTB Új
- DJI Convertible Carrying Bag + Ajándék DJI rádió nyakpánt
- LG 27UP850K-W - 27" IPS LED - 3840x2160 4K - DisplayHDR 400 - USB Type-C - AMD FreeSync
- Honor 400 Lite / 8/256GB / Kártyafüggetlen / 12Hó Garancia
- Samsung Galaxy S21 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy S24 Ultra 12GB / 512GB USA modell Szép állapotban!
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
1byte a szám, ehhez elég egy tömb az összes számjeggyel, 1byte pedig a digit helye.


ekkold

