Nunchuck-muis naar WASD keyboard

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor nicoverduin » 27 Mei 2016, 10:38

Da's mooi ook weer opgelost. We willen natuurlijk wel tzt een filmpje zien van het eind resultaat :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Gebruikers-avatar
Berichten: 18
Geregistreerd: 14 Nov 2016, 22:19
Woonplaats: Groningen

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Klavkjir » 15 Nov 2016, 16:43

Ik zou pak dit 'oude' topic graag even op willen pakken.
Heb namelijk een gelijksoortige situatie (4e jaars student communicatie) en probeer de joystick van de Nunchuck werkend te krijgen met W, A, S en D.

Nu heb ik de sketch geprobeerd op mijn Arduino Pro Mini te zetten, maar nu krijg ik een hele lijst met errors. Kan iemand mij vertellen wat hier niet goed gaat?

Ik heb het volgende in de IDE gezet:

cpp code
//Brian Krukoski
//April 2012
//red-+5, white-gnd, green-sda, yllw-clck
#include <Keyboard.h>
#include <Wire.h>
#include <nunchuck_funcs.h>
#include <HID.h>

int loop_cnt=0;

// parameters for reading the joystick:
int range = 40; // output range of X or Y movement
int threshold = range/10; // resting threshold
int center = range/2; // resting position value

boolean mouseIsActive = false; // whether or not to control the mouse
int lastSwitchState = LOW; // previous switch state

void setup() {
// initilization for the Wiichuck
nunchuck_init();
// take control of the mouse:
Mouse.begin();
Serial.begin(9600);
}
void loop() {
if( loop_cnt > 10 ) { // every 10 msecs get new data
loop_cnt = 0;
nunchuck_get_data();
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
delay(1);

//right and left click control
int leftState = nunchuck_cbutton();
if (leftState) Mouse.press(MOUSE_RIGHT); else Mouse.release(MOUSE_RIGHT); //Switched with Left
int rightState = nunchuck_zbutton();
if (rightState) Mouse.press(MOUSE_LEFT); else Mouse.release(MOUSE_LEFT); //Switched with Right

// read the x axis
int xReading = nunchuck_joyx(); //calls on nunchuck_funcs library for x axis reading
xReading = map(xReading, 38, 232, 0, range); // 38 and 232 arbitrarily determined through experimentation, maps to 0 and preset range
int xDistance = xReading - center;
if (abs(xDistance) < threshold) //if absolute value of xDistance is less than predefined threshold....
{
xDistance = 0;
}

// read the y axis
int yReading = nunchuck_joyy(); //calls on nunchuck_funcs library for y axis reading
yReading = map(yReading, 38, 232, 0, range); // 38 and 232 arbitrarily determined through experimentation, maps to 0 and preset range
int yDistance = yReading - center;
if (abs(yDistance) < threshold) //if absolute value of yDistance is less than predefined threshold....
{
yDistance = 0;
}

if (xDistance != 0) { // Bij geen beweging niets doen
if (xDistance > 0) {
Keyboard.press('W'); // Stuur 'W'
} else {
Keyboard.press('S'); // Stuur 'S'
}
delay(100); // ff wachten
Keyboard.releaseAll(); // alle toetsen los
}
if (yDistance != 0) { // Bij geen beweging niets doen
if (yDistance > 0) {
Keyboard.press('A'); // stuur 'A'
} else {
Keyboard.press('D'); // stuur 'D'
}
delay(100); // ff wachten
Keyboard.releaseAll(); // alle toetsen los
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor nicoverduin » 15 Nov 2016, 18:13

Als je wilt dat we je helpen is het handig dat je de lijst met fout codes/boodschappen hier neer zet.
Ook al is het een hele lijst. Dus ff kopiëren en hier plakken.
Overigens is er in de IDE een functie <CTRL+T> die de source formatteerd die kan je helpen. Te beginnen met een afsluitende accolade aan het eind. En doe die CTRL+T> regelmatig. Des te beter gaat je source code eruit zien en kan je de fouten eruit halen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 18
Geregistreerd: 14 Nov 2016, 22:19
Woonplaats: Groningen

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Klavkjir » 15 Nov 2016, 18:35

Overigens is er in de IDE een functie <CTRL+T> die de source formatteerd die kan je helpen. Te beginnen met een afsluitende accolade aan het eind. En doe die CTRL+T> regelmatig. Des te beter gaat je source code eruit zien en kan je de fouten eruit halen.


Bedankt voor je reactie en de nuttige tip!
Dit zijn de fouten die ik gekopieerd heb uit de sketch:


Code: Alles selecteren
Arduino: 1.6.9 (Windows 8.1), Board:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

C:\Users\Documents\Arduino\sketch_nov15k\sketch_nov15k.ino: In function 'void setup()':

sketch_nov15k:25: error: 'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?
   Mouse.begin();

   ^

C:\Users\Documents\Arduino\sketch_nov15k\sketch_nov15k.ino: In function 'void loop()':

sketch_nov15k:38: error: 'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?
     if (leftState) Mouse.press(MOUSE_RIGHT); else Mouse.release(MOUSE_RIGHT); //Switched with Left

                    ^

sketch_nov15k:38: error: 'MOUSE_RIGHT' was not declared in this scope

     if (leftState) Mouse.press(MOUSE_RIGHT); else Mouse.release(MOUSE_RIGHT); //Switched with Left

                                ^

sketch_nov15k:38: error: 'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?
     if (leftState) Mouse.press(MOUSE_RIGHT); else Mouse.release(MOUSE_RIGHT); //Switched with Left

                                                   ^

sketch_nov15k:38: error: 'MOUSE_RIGHT' was not declared in this scope

     if (leftState) Mouse.press(MOUSE_RIGHT); else Mouse.release(MOUSE_RIGHT); //Switched with Left

                                                                 ^

sketch_nov15k:40: error: 'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?
     if (rightState) Mouse.press(MOUSE_LEFT); else Mouse.release(MOUSE_LEFT);  //Switched with Right

                     ^

sketch_nov15k:40: error: 'MOUSE_LEFT' was not declared in this scope

     if (rightState) Mouse.press(MOUSE_LEFT); else Mouse.release(MOUSE_LEFT);  //Switched with Right

                                 ^

sketch_nov15k:40: error: 'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?
     if (rightState) Mouse.press(MOUSE_LEFT); else Mouse.release(MOUSE_LEFT);  //Switched with Right

                                                   ^

sketch_nov15k:40: error: 'MOUSE_LEFT' was not declared in this scope

     if (rightState) Mouse.press(MOUSE_LEFT); else Mouse.release(MOUSE_LEFT);  //Switched with Right

                                                                 ^

sketch_nov15k:62: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
         Keyboard.press('W');                    // Stuur 'W'

         ^

sketch_nov15k:64: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
         Keyboard.press('S');                    // Stuur 'S'

         ^

sketch_nov15k:67: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
       Keyboard.releaseAll();                      // alle toetsen los

       ^

sketch_nov15k:71: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
         Keyboard.press('A');                    // stuur 'A'

         ^

sketch_nov15k:73: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
         Keyboard.press('D');                    // stuur 'D'

         ^

sketch_nov15k:76: error: 'Keyboard' niet gevonden. Bevindt de lijn '#include <Keyboard.h>' zich in uw schets?
       Keyboard.releaseAll();                      // alle toetsen los

       ^

sketch_nov15k:77: error: expected '}' at end of input

     }

     ^

sketch_nov15k:77: error: expected '}' at end of input

exit status 1
'Mouse' niet gevonden. Bevindt de lijn '#include <Mouse.h>' zich in uw schets?

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor nicoverduin » 15 Nov 2016, 18:57

Alle problemen die je hebt komen omdat je geen Mouse library hebt. En dat klopt want je hebt een bordje nodig met de 32U4 processor om de USB functies te kunnen doen. Grote kans dat als je een leonardo bordje gebruikt het wel werkt. Naast die ontbrekende accolade natuurlijk
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 18
Geregistreerd: 14 Nov 2016, 22:19
Woonplaats: Groningen

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Klavkjir » 15 Nov 2016, 19:00

want je hebt een bordje nodig met de 32U4 processor om de USB functies te kunnen doen.

Ah! Dus ik heb sowieso zo'n dergelijk bordje nodig om dit project überhaupt te kunnen uitvoeren? Ik gebruik nu een Pro Mini met een serieel naar TTL bordje.
Zou dat de mislukking kunnen verklaren?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor nicoverduin » 15 Nov 2016, 19:04

De IDE moet je vertellen dat je een Leonardo gebruikt. Als je hem dat verteld kan het beter gaan. Kan nog wel zijn dat je op zoek moet naar die mouse lib.
Dat kabeltje heeft nl niets met HID (Human interface Device) te maken. De Leonardo heeft een USB die dat aankan. En dat komt door de 32U4 processor. Nu gebruik je de 328P processor.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 18
Geregistreerd: 14 Nov 2016, 22:19
Woonplaats: Groningen

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Klavkjir » 15 Nov 2016, 19:13

Heb de IDE ingesteld op een Leonardo, maar krijg nog steeds dezelfde storingen. Als ik je goed begrepen heb tenminste.
Het vreemde is dat ik de Mouse library wel heb, maar de IDE hem niet herkent..

Kan ik dit project nu beter voortzetten met bordje voorzien van een 32U4 processor?

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Koepel » 15 Nov 2016, 19:16

En ik zou toch maar overstappen op Arduino.cc IDE 1.6.12.

Lees de eerste regels eens van deze bladzijde: https://www.arduino.cc/en/Reference/MouseKeyboard
Dus als je een Leonardo of Micro kiest (beide hebben een ATmega32U4), dan kun je kijken of het wil compileren.

Als je meer wilt doen met de HID tussen de Arduino en de computer, dan kun je eens kijken bij HID-project: https://github.com/NicoHood/HID.
Het is wel veel leeswerk om de library te kunnen begrijpen.
Je kunt dat met een ATmega32U4 gebruiken. Het nadeel is dat de Serial CDC niet uit te zetten is, en die zit soms flink ik de weg.
Maar de speciale toetsen (volume omhoog, start webbrowser) en de leds (caps-lock, num-lock) zijn daarmee mogelijk. Met de gewone Arduino HID bibliotheek is dat niet mogelijk.
Een Pro Micro clone (ATmega32U4) op AliExpress kost minder dan 3 euro. Dat is ongeveer hetzelfde als een 'Micro', maar zonder 3.3V voltage regulator en er ontbreken een paar pinnen. Je kunt in de Arduino IDE gewoon de 'Micro' kiezen.

Het HID-project heeft ook firmware om de usb-serial chip van bijvoorbeeld de Arduino Uno te kunnen gebruiken. Dus als het echt niet anders kan, dan zou je eventueel misschien een Arduino Uno kunnen gebruiken. Ik raad dat zeer sterk af, want het heeft allerlei consequenties.

Dan is er ook nog V-USB (https://www.obdev.at/products/vusb/index.html). Volgens mij gebruikt Adafruit een ATmega328P met V-USB in de Trinket Pro (https://www.adafruit.com/product/2000). Maar dat is opnieuw iets dat ik zeer sterk zou afraden.

Volgens mij is #include <Keyboard.h> nodig voor het keyboard en #include <Mouse.h> voor de mouse functies. Volgens mij ben je die vergeten, en ik zie allerlei voorbeelden op de Arduino website waar dat ook vergeten is.

Gebruikers-avatar
Berichten: 18
Geregistreerd: 14 Nov 2016, 22:19
Woonplaats: Groningen

Re: Nunchuck-muis naar WASD keyboard

Berichtdoor Klavkjir » 15 Nov 2016, 20:05

Bedankt voor je uitgebreide reactie! Heb inmiddels de 1.6.12 versie van Arduino gedownload.

Ik zie dat die Mouse library bedoeld is voor 32U4 bordjes. Deze heb ik zojuist besteld bij Ali, de 3.3v regulator is wel te vervangen door een externe.
Het is inderdaad veel lees- en leerwerk om de codetaal en libraries te kunnen begrijpen. Ondanks dat ik erg onbekend ben met microprocessors heb ik me toch gewaagd aan dit project en hoop op deze manier wat meer kennis op te doen.

Het uiteindelijke doel van dit project is om de Nunchuck werkend te krijgen met een Oculus Rift voor het afstudeeronderzoek waar ik mee bezig ben voor mijn opleiding communicatie.
Het is dus absoluut niet dat ik me uit gemaksoverwegingen tot jullie wend.

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 26 gasten