Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lehet, pl. ezzel a módosítással:
Egy programban szükség lenne a 3x4-es billentyűzetről beolvasott kétjegyű számot használni. Szeretném a *-gal törölni, (ha rosszul írtam be) és a # indítani a további műveletet. Pl egy lift adatbevitele.
Találtatok-e hasonló kódot valamelyik projektben?
else aktiv folyamatosan (nem villog)....
Én toltam el!
![]() Amit irtál az tökéletes! ![]() Köszönet! ![]()
A hozzászólás módosítva: Júl 9, 2018
Kiindulásanak szerintem ez: Bővebben: Link.
Egyébként google-be beírod, hogy arduino keypad, esetleg egy input utána, aztán találsz bőven példakódot.
Ez ha segit csatolok egy példát...
![]()
Üdv!
Hogyan leget egy nyomtató enkódert összekötni arduinoval, és a jelét feldolgozni? Megvan még a csíkozott szallag is meg a barázdás kör. Előre is köszönöm!
Keressél pl.: forgató gombos encoder kezelő rutinokat , mintákat.
A sok fizikálisan kialakított barázda/rés letapogatásával jönnek létre villamos jelek(jobb esetben optoelektronikai úton , rosszabb esetben mechanikusan amik általában négyszögjelek amit illik előtte formázni) amik egymáshoz képest időben/fázisban elvannak tolva , ezt a változást kell feldolgozni a programnak.
Nem találtam olyan programot, ezért kezdtem egyet összerakni. Nem tudom, hogy lehetne-e elegánsabban? Íme:
#include <Keypad.h> const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {8, 7, 6, 5}; byte colPins[COLS] = {4, 3, 2}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int E; // egyes helyiérték int T; // tizes helyiérték int SZ; // végeredmény int N; // beolvasott értéket konvertálja számmá char key=' '; // padról beolvasott int i=0; void setup() { Serial.begin(9600); } void loop() { i=1; do { // addig míg a beolvasott karakter a # key = keypad.getKey(); if (key != NO_KEY) { N=key; // charból int N=N-48; // ASCII kód miatt switch(i) // helyiértékeket számol { case 1: T=N*10; // tizesek i++; // a helyiérték váltáshoz lép break; case 2: E=N; // egyesek i++; break; } if (key == '*') { i=1; // törlés T=0; E=0; } if (key == '#' ) { SZ=T+E; } } } while (key != '#' ); // addig fut a ciklus amíg a jel nem a # Serial.println(SZ); key=' '; }
Sajnos csak Ctrl C-vel tettem be. Mellékelve a program.
Ezt az OFF gombbal használatával írtam :
CTRL+C is használhatod DE ELŐTTE A Kód gombot kell ! ![]() Kód gomb után ez lesz a végeredmény([ ] a szögletes zárójeles karakter sorokat ne írd át) :
A hozzászólás módosítva: Júl 11, 2018
Az a gond a programoddal, hogy beírás közben nem látod, hogy mit írsz be.
Mikor már látható az eredmény akkor meg nem lehet törölni, ha mégis el lett ütve.
Az csak most maradt ki. Próbálgatás alatt a sorosra írattam ki, de a következőben egy 1602 LCD-re megy a folyamat.
Üdv!
Ha micro SD kártyát szeretnék kötni az arduinora, akkor a képen látható bekötés jó? A hozzászólás módosítva: Júl 11, 2018
Ekkora kép alapján a válaszom egy határozott talán...
Ezen az oldalon van az eredeti kép. Ott talán jobban látszik.
Nem. A Táp 3.3V az SD-nek, de az I/O lábai 5V rendszerhez mennek....
Azaz az adatlábak 5V-ot kapnak az Arduino felől....
És hogyan lehetne kijavítani?
Ilyenem nincs, és sokára jönne meg.
Így is jó lesz:
Az nagy baj, ha 2kOhmos és 3kOhmos ellenállást használok?
Ne fűzzél nagy reményt a passzív ellenállásos megoldáshoz!
A gyorsabb kártyák sebességét nem lehet kihasználni vele. A kínaiak sem passzióból dobják ki a pénzt szint illesztő IC-re.
Járasd 3,3 Voltról az Arduinot, és akkor nem kell szintillesztő.
Jó az ellenállásos is.
De: ne spirálisan köszörültet használj (ha lehet), mert nagyfrekin tekercs is lesz belőle.... Amúgy Arduino alatt az írási/olvasási sebességet úgyse használod ki. A nyers (adatfeldolgozás nélküli, FAT16 alapú) SD sebesség íráskor ~40..50kbyte/sec, olvasás 50...55kbyte/sec. Hol van ez a kártyák 20-40-90MByte sebességétől? ![]() Mondjuk ha DUE mellett vagy nagyobb/gyorsabb mellett hazsnálod, ott tényleg jobb az IC-s illesztő... Meg persze: rövid kábelhossz az SPI miatt....
DUE mellé nem kell illesztő, mert az max 3,3 Volton megy.
Nem értem a count érték mért nem növekszik +1 el amikor a void test lefut pl 1x!?
Mert a count++ -t kommentezted ki
![]()
A count változó a test() függvény minden lefutásánál újra megkapja a 0 kezdőértéket.
Ha azt szeretnéd, hogy egy változó a függvényből való kilépés után is megőrizze az értékét, használd a static módosítót. Pl.:
|
Bejelentkezés
Hirdetés |