- Fejhallgató erősítő és DAC topik
- Milyen billentyűzetet vegyek?
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- ASUS notebook topic
- Melyik tápegységet vegyem?
- Milyen SSD-t vegyek?
- Azonnali alaplapos kérdések órája
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- AMD K6-III, és minden ami RETRO - Oldschool tuning
-
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
-
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
Hirdetés
- BESZÁMÍTÁS! MSI SUPRIM X RTX 4080 16GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! 6TB Seagate SkyHawk SATA HDD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! 4TB Samsung 870 EVO SATA SSD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 8700K 6 mag 12 szál processzor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- Honor 9X Lite 128GB, Kártyafüggetlen, 1 Év Garanciával
- CarPlay / Android Auto adapter meglévő Android alapú fejegységhez
- ASUS TUF Gaming F15 FX506 - 15.6"FHD IPS 144Hz - i5-11400H - 8GB - 512GB - RTX 3050 Ti - 1,5 év gari
- HATALMAS AKCIÓK! GARANCIA, SZÁMLA - Windows 10 11, Office 2016 2019 2021,2024, vírusírtók, VPN
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest