PS2/USB billentyűzet emulálás

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: kapu48 »

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!
8)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: kapu48 »

Most funkcio_1() adig fut amig nyomják a gombot:

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);  
 }
 
Utána funkció_2() is végrehajtódik.
Avatar
arnd
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2005. május 8. vasárnap, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: arnd »

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).
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: kapu48 »

Akkor javítsd ki a kiugrási feltételeket:

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
…

(Nekem nincsen Arduinom, ezért nem tudom tesztelni!)
Avatar
arnd
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2005. május 8. vasárnap, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: arnd »

(Nekem nincsen Arduinom, ezért nem tudom tesztelni!)
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!!!

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);      
}

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: kapu48 »

Látod, nem is volt olyan nehéz összehozni!
:D

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?
:?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: PS2/USB billentyűzet emulálás

Hozzászólás Szerző: Robert »

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ű? :)
Avatar
arnd
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2005. május 8. vasárnap, 6:00

PS2 billentyűzet vezérlése

Hozzászólás Szerző: arnd »

Robert í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ű? :)
1, az ára sajnos nem fér bele a projectbe
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.
Avatar
arnd
DrótVégénSzéndarab
Hozzászólások: 18
Csatlakozott: 2005. május 8. vasárnap, 6:00

PS2 billentyűzet vezérlése

Hozzászólás Szerző: arnd »

kapu48 írta:Látod, nem is volt olyan nehéz összehozni!
:D

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?
:?
Köszönöm még egyszer!
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?
Válasz küldése