PS2/USB billentyűzet emulálás
Re: PS2/USB billentyűzet emulálás
Eddig nem volt szó folyamatos gombnyomásról!
Csak a megnyomás és elengedés érzékeléséről és megkülönböztetéséről.
(Ez már megy?)
Különben is sorban kellene haladni! És 1*re csak 1 problémát megoldani!
Csak a megnyomás és elengedés érzékeléséről és megkülönböztetéséről.
(Ez már megy?)
Különben is sorban kellene haladni! És 1*re csak 1 problémát megoldani!
Re: PS2/USB billentyűzet emulálás
Most funkcio_1() adig fut amig nyomják a gombot:
Utána funkció_2() is végrehajtódik.
Kód: Egész kijelölése
// Csak Nyomógomb állapot változásra történjen valami?
boolean val1 = 1; // Induláskór, Az elengedet gomb állapota legyen 1!
boolean val2 = 1; // Elöző nyomogomb allapotat tarolo valtozo is 1.
void setup() {
pinMode(2, INPUT);
// D2 labon kapcsolo bemenet
pinMode(8, OUTPUT);
// D8 lab: kimenet_1
pinMode(9, OUTPUT);
// D9 lab: kimenet_2
pinMode(10, OUTPUT);
// D10 lab: kimenet_3
pinMode(11, OUTPUT);
// D11 lab: kimenet_4
pinMode(12, OUTPUT);
// D12 lab: kimenet_5
pinMode(13, OUTPUT);
// D13 lab: LED
digitalWrite(2, HIGH);
// D2-on felhuzo bekapcsol
}
void loop() {
do { // Várakozunk Gomb állapot változásra.
digitalWrite(13, HIGH); // fut a program
delay(25);
digitalWrite(13, LOW);
delay(25);
val1 = digitalRead(2);
} while (val1 != val2); // Most megváltozótt az állapot
val2 = val1; // Tároljuk az új állapotot
if (val1 == 0) {
// Ha meg nyomták
funkcio_1();
}
else {
// Ha el engedték
funkcio_2();
}
}
// Ha meg nyomták a gombot
void funkcio_1() {
do { // Várakozunk Gomb elengedésére
//LED be - var - LED ki
digitalWrite(9, HIGH);
delay(250);
digitalWrite(10, HIGH);
delay(250);
} while (val1 != digitalRead(2)); // Kiugrik ha elengedték a gombot
}
void funkcio_2(){
//LED be - var - LED ki
digitalWrite(11, HIGH);
delay(250);
digitalWrite(12, HIGH);
delay(250);
digitalWrite(11, LOW);
delay(250);
digitalWrite(12, LOW);
delay(250);
}
Re: PS2/USB billentyűzet emulálás
leteszteltem még egyszer:
alapból a funkció1-et hajtja végre folyamatosan (9,10-es kimenet) meg persze a 13-as fut a program jel.
ha nyomva tartom a gombot akkor meg csak a "fut" működik (13-as kimenet).
alapból a funkció1-et hajtja végre folyamatosan (9,10-es kimenet) meg persze a 13-as fut a program jel.
ha nyomva tartom a gombot akkor meg csak a "fut" működik (13-as kimenet).
Re: PS2/USB billentyűzet emulálás
Akkor javítsd ki a kiugrási feltételeket:
(Nekem nincsen Arduinom, ezért nem tudom tesztelni!)
Kód: Egész kijelölése
…
} while (val1 == val2); // Most megváltozott az állapot
…
} while (val1 == digitalRead(2)); // Kiugrik, ha elengedték a gombot
…
Re: PS2/USB billentyűzet emulálás
Köszönöm!!! Kicsit átalakítottam, hogy ne ismételje a "funkcio_1"-et amíg nyomva van a gomb (bekapcsolt kapcsoló). Így csak egyszer fut le, ha csak röviden nyomom meg a gombot akkor is lefut szépen egymás után a két funkció, szóval perfect!!!(Nekem nincsen Arduinom, ezért nem tudom tesztelni!)
Kód: Egész kijelölése
// Csak Nyomógomb állapot változásra történjen valami?
boolean val1 = 1; // Induláskór, Az elengedet gomb állapota legyen 1!
boolean val2 = 1; // Elöző nyomogomb allapotat tarolo valtozo is 1.
void setup() {
pinMode(2, INPUT);
// D2 labon kapcsolo bemenet
pinMode(8, OUTPUT);
// D8 lab: kimenet_1
pinMode(9, OUTPUT);
// D9 lab: kimenet_2
pinMode(10, OUTPUT);
// D10 lab: kimenet_3
pinMode(11, OUTPUT);
// D11 lab: kimenet_4
pinMode(12, OUTPUT);
// D12 lab: kimenet_5
pinMode(13, OUTPUT);
// D13 lab: LED
digitalWrite(2, HIGH);
// D2-on felhuzo bekapcsol
}
void loop() {
do { // Várakozunk Gomb állapot változásra.
digitalWrite(13, HIGH); // fut a program
delay(18);
digitalWrite(13, LOW);
delay(18);
val1 = digitalRead(2);
}
while (val1 == val2); // Most megváltozótt az állapot
val2 = val1; // Tároljuk az új állapotot
if (val1 == 0) {
// Ha meg nyomták
funkcio_1();
}
else {
// Ha el engedték
funkcio_2();
}
}
void funkcio_2(){
//LED be - var - LED ki
digitalWrite(11, HIGH);
delay(250);
digitalWrite(12, HIGH);
delay(250);
digitalWrite(11, LOW);
delay(250);
digitalWrite(12, LOW);
delay(250);
}
void funkcio_1(){
//LED be - var - LED ki
digitalWrite(9, HIGH);
delay(250);
digitalWrite(10, HIGH);
delay(250);
digitalWrite(9, LOW);
delay(250);
digitalWrite(10, LOW);
delay(250);
}
Re: PS2/USB billentyűzet emulálás
Látod, nem is volt olyan nehéz összehozni!
Ilyenkor kellene tudni javítani visszamenőleg, a felderítet hibákat a program listákban!
Hogy más ne fusson rá megint, ha esetleg ide téved!
Nem értem ezt mért tiltotta le Robert?
Ilyenkor kellene tudni javítani visszamenőleg, a felderítet hibákat a program listákban!
Hogy más ne fusson rá megint, ha esetleg ide téved!
Nem értem ezt mért tiltotta le Robert?
Re: PS2/USB billentyűzet emulálás
Tisztázzuk:
Leonardo : beépített HW-es USB.
ProMini: Emulált USB lehet (V-USB)
Innen a válasz egyértelmű: keresztbe nem csereszabatos a 2 proci billentyűzetre....
Miért nem jó a Pro Mini helyett a ProMicro?
Kész van az adott program hozzá ? Túl egyszerű?
Leonardo : beépített HW-es USB.
ProMini: Emulált USB lehet (V-USB)
Innen a válasz egyértelmű: keresztbe nem csereszabatos a 2 proci billentyűzetre....
Miért nem jó a Pro Mini helyett a ProMicro?
Kész van az adott program hozzá ? Túl egyszerű?
PS2 billentyűzet vezérlése
1, az ára sajnos nem fér bele a projectbeRobert írta:Tisztázzuk:
Leonardo : beépített HW-es USB.
ProMini: Emulált USB lehet (V-USB)
Innen a válasz egyértelmű: keresztbe nem csereszabatos a 2 proci billentyűzetre....
Miért nem jó a Pro Mini helyett a ProMicro?
Kész van az adott program hozzá ? Túl egyszerű?
2, az én korlátaim is szűkösek, most pillanatnyilag nincs rá időm, hogy ennyi tudást összeszedjek, nekem ez is kihívás volt.
3, ja és most csak PS2-höz férek hozzá
Viszont sikerült már tökéletesre reszelnem:
egy kapcsoló, plusz egy nyomógombbal, működik 4 funkció.
Attól függően, hogy a kapcsoló be/ki kapcsolásakor a nyomógomb meg van e nyomva vagy sem.
Mondjuk a cím már így nem aktuális.
PS2 billentyűzet vezérlése
Köszönöm még egyszer!kapu48 írta:Látod, nem is volt olyan nehéz összehozni!
Ilyenkor kellene tudni javítani visszamenőleg, a felderítet hibákat a program listákban!
Hogy más ne fusson rá megint, ha esetleg ide téved!
Nem értem ezt mért tiltotta le Robert?
A do/while volt végül is a megoldás, ezt kellett csak jó feltételekkel megtámogatni.
Vagy ez már itt nagyon OFF?