Hirdetés
- Luck Dragon: Asszociációs játék. :)
- droidic: Windows 11 önállóság nélküli világ: a kontroll új korszaka
- sziku69: Fűzzük össze a szavakat :)
- Pitterix: Gyógytorna
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Gép1: Renault Kangoo vizhűtő ventilátor fokozatok
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- sziku69: Szólánc.
- GoodSpeed: Egy bihari a Hajdúságban
-
LOGOUT
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
- XBOX Series S 512GB, 6 hónap teljeskörü garanciával, üzletből eladó!
- ASUS VivoBook Max X541UVK i5-7200U 8GB RAM 512GB SSD NVIDIA GeForce 920MX 2GB Windows 11
- Szép! HP EliteBook 840 G10 Hordozható Ultrabook Fémház 14" -50% i5-1335U 32/1TB Iris Xe FHD+
- Új OEM INTEL XEON E-1241V3/E-1270V3
- Eladó Sony CS-széria házimozi szett hibátlan működéssel, megkímélt állapotban
- LG 27UP850NP-W - 27" IPS LED - 3840x2160 4K - DisplayHDR 400 - USB Type-C - AMD FreeSync
- GYÖNYÖRŰ iPhone 13 256GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS2247
- GYÖNYÖRŰ iPhone 14 Pro Max 256GB Space Black - 1 ÉV GARANCIA, Kártyafüggetlen,MS3489
- HIBÁTLAN iPhone 12 Pro 256GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3107, 100% Akkumulátor
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3765, 100% Akku
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest
1byte a szám, ehhez elég egy tömb az összes számjeggyel, 1byte pedig a digit helye.


ekkold
