- iPhone topik
- CMF Phone 2 Pro - a százezer forintos kérdés
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Milyen okostelefont vegyek?
- Samsung Galaxy Note20 Ultra - a tollnak nincs ellenfele
- Google Pixel topik
- Poco X5 Pro - ránézésre jó
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Beárazták az projektoros Ulefone-t
- Samsung Galaxy A56 - megbízható középszerűség
-
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
-
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
- Argos: Szeretem az ecetfát
- Apple asztali gépek
- Kerékpárosok, bringások ide!
- Épített vízhűtés (nem kompakt) topic
- Nintendo Switch 2
- Luck Dragon: Asszociációs játék. :)
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- Gyúrósok ide!
- Synology NAS
- Kecskemét és környéke adok-veszek-beszélgetek
- További aktív témák...
- Bomba ár! Fujitsu LifeBook E754 - i5-4GEN I 8GB I 256SSD I 15,6" HD I HDMI I W10 I Garancia!
- AKCIÓ! Gigabyte H610M i5 12400F 32GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Be Quiet! 730W
- BESZÁMÍTÁS! Gigabyte B760M i5 13400F 16GB DDR4 512GB SSD RTX 3070 8GB Pure Base 500DX fehér 650W
- BESZÁMÍTÁS! Logitech G923 kormány + Driving Force Shifter garanciával hibátlan működéssel
- Csere-Beszámítás! Asus Számítógép PC Játékra! R5 1600X / GTX 1080 8GB / 32GB DDR4 / 256SSD + 2TB HDD
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest