Gitarr hjälte USB-styrenhet med Arduino och Java (5 / 6 steg)
Steg 5: Java-programmering
För att få den seriella data från en Arduino i Java, du behöver RXTX biblioteket, som finns här: http://fizzed.com/oss/rxtx-for-java - installera instruktioner är i komprimerade zip-filen.
Normalt, utan en controller måste du använda tangentbordet och musen för att spela. I Java, det finns en klass som kallas "Robot" som är gjord att imitera tangenttryckningar och musrörelse.
Java API för Robot klass: https://docs.oracle.com/javase/7/docs/api/java/awt...
Jag la Java källkoden med kommentarer, men jag ska skriva om det här också.
För det första har vi öppna serieporten med namn (om det inte är COM3, ändra det till arduino's port) och data (9600 baud, paritet, data och stopp bitar..). Du kan hämta skelettet här: http://playground.arduino.cc/Interfacing/Java
I funktionen SerialEvent kan du komma åt den buffrade indata (raden skapas i en slinga i arduino) med indata. ReadLine() funktionsanrop.
Då ska jag passera strängen till gitarr funktionen, där jag ska göra stegen för att skapa tangenttryckningarna.
Strängen är uppdelad i en heltalsmatris, eftersom det är lättare att kontrollera värdena i som. Indexering är densamma som för Arduino.
Om det första elementet i arrayen är en, som innebär att den första band-knappen trycks, och vi har att imitera som tryckte någon på '1'-tangenten på tangentbordet. Det är därför vi har anropet robot.keyPress(KeyEvent.VK_1); .
Om det trycktes, men det är släppt nu, vi måste släppa nyckeln samt med funktionsanropet: robot.keyRelease(KeyEvent.VK_1);
Om den andra band knappen trycks, kallar vi robot.keyPress för nyckeln "2" och så vidare och så vidare.
Jag var tvungen att göra det för varje bandet knapp, fly, och stjärna makt, och den knäppa upp och ner. För banden trycks knapparna '1' att '5' motsvarande index för bandet på halsen. För den knäppa upp och ner pilarna trycks, för utrymning, det pressar fly, och för stjärna makt, nyckeln ".
När whammy utlöses, anropas funktionen whammy, vilket skapar en ny tråd flytta musen på X-axeln, eftersom det kan ställas in i spelet att aktivera whammy med musen. När den rör sig, det svänger, så det är inte bara binära 1 eller 0 för whammy. Med en ny tråd började, du kan gå på att trycka på tangenter och knäppa, det kommer inte vara några problem. Och även om du triggar whammy flera gånger, flera trådar startas och musen går fram och tillbaka. Jag tycker det är en trevlig lösning för problemet.
I meddelandet startas efter att skicka en '1' till Arduino i den huvudsakliga funktionen längst ned.
Om du försök den ute, när du trycker på knapparna bandet, är det samma som när du trycker på motsvarande tangenterna på tangentbordet.
Låt oss ställa in den i spelet!