Nunchuck-muis naar WASD keyboard
40 berichten
• Pagina 2 van 4 • 1, 2, 3, 4
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nunchuck-muis naar WASD keyboard
Da's mooi ook weer opgelost. We willen natuurlijk wel tzt een filmpje zien van het eind resultaat
Advertisement
Re: Nunchuck-muis naar WASD keyboard
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
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
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nunchuck-muis naar WASD keyboard
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.
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.
Re: Nunchuck-muis naar WASD keyboard
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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nunchuck-muis naar WASD keyboard
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
Re: Nunchuck-muis naar WASD keyboard
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?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nunchuck-muis naar WASD keyboard
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.
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.
Re: Nunchuck-muis naar WASD keyboard
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?
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?
Re: Nunchuck-muis naar WASD keyboard
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.
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.
Re: Nunchuck-muis naar WASD keyboard
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.
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.
40 berichten
• Pagina 2 van 4 • 1, 2, 3, 4
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 26 gasten