• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Arduino Leonardo C++

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
Exakt dieser:
Code alt:
https://de.aliexpress.com/item/Mini...ule-For-Arduino-Best-Quality/32284746884.html

Man, das Teil ist wirklich winzig, man neigt dazu zu vergessen wie klein eine micro USB Buchse ist wenn man die Bilder sieht...

Folgender Code verursacht die Beschwerde das JHoystick in dem Kontext nicht existiert: (Zeile 20: 'Joystick' was not declared in this scope)
[src=cpp]#include <Joystick.h>

void setup() {
for (int i = 2; i < 10; i++)
{
pinMode(i, INPUT_PULLUP); // set pullups on pins 2-9 for the buttons
}
Joystick.begin(); // initialise Joystick library
}
const int pinToButtonMap = 2; // start from pin 2
int lastButtonState[8] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // last state of the button

void loop() {

for (int index = 0; index < 8; index++) // go through the loop 8 times, once for each button
{
int currentButtonState = !digitalRead(index + pinToButtonMap); // read the pin and store in variable
if (currentButtonState != lastButtonState[index]) // if the button state has changed
{
Joystick.setButton(index, currentButtonState); // write the button state to the joystick <= hier
lastButtonState[index] = currentButtonState; // save state to compare for the next loop
}
}
delay(50);
}[/src]

Einrückung ist anders als im Original weil ich die Klammern und die Schreibweisen alle in Notepad++ überprüft habe.
Da bewim ersten Zugriff auf die Klasse kein Fehler auftritt und doch alles im sleben Sichtbarkeitsbereich liegt also in im Verhältnis verstehe ich das Problem nicht.

Neuer Code der funktioniert:
[src=cpp]/************************************************************************************
* NESPi NES Controller USB Gamepad v0.1 [mike.g|june2016] *
* [daftmike.com] *
*************************************************************************************/
// Adapted from 'JoystickButton' example
// by Matthew Heironimus
// 2015-11-20
// https://github.com/MHeironimus/ArduinoJoystickLibrary

#include <Joystick.h>
Joystick_ Joystick;
void setup() {
for (int i = 2; i < 10; i++)
{
pinMode(i, INPUT_PULLUP); // set pullups on pins 2-9 for the buttons
}
Joystick.begin(); // initialise Joystick library
}
const int pinToButtonMap = 2; // start from pin 2
int lastButtonState[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // last state of the button

void loop() {

for (int index = 0; index < 8; index++) // go through the loop 8 times, once for each button
{
int currentButtonState = !digitalRead(index + pinToButtonMap); // read the pin and store in variable
if (currentButtonState != lastButtonState[index]) // if the button state has changed
{
Joystick.setButton(index, currentButtonState); // write the button state to the joystick
lastButtonState[index] = currentButtonState; // save state to compare for the next loop
}
}
delay(50);
}[/src]
 
Zuletzt bearbeitet:

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Wenn ich nicht weiß ob oder wo eine Library (Header-Datei installiert ist) - "updatedb" (mit sudo/su) und ein "locate Joystick.h"

Wenn die Header Datei irgendwo installiert ist, solltest du einen Treffer haben.

Über "-i" für Include kannst du dann gcc zum Beispiel Verzeichnis mitgeben das inkludiert werden soll in dem sich Quelldateien befinden, mit "-l" kannst du dem Linker sagen wenn andere Bibliothek mit gelinkt werden sollen, zum Beispiel ein SDK. "-lm" (für Math.h) oder "-lSDL2" für SDL2 oder du gehst den Weg über "pkg-config" wenn du es hast.

Siehe auch hier:
http://www.rapidtables.com/code/linux/gcc/gcc-i.htm
und
http://www.rapidtables.com/code/linux/gcc/gcc-l.htm

Edit: Ahso, ich habe deinen Kommentar in den Kommentaren überlesen... eigentlich sollte "Joystick.begin()" ja auch definiert sein, das heißt es kommt wohl eine Deklaration in "Joystick.h" ? Damit es global ist?
Zum Beispiel hier:
https://github.com/MHeironimus/ArduinoJoystickLibrary/blob/version-1.0/Joystick/Joystick.h

Dort ist Joystick als "extern" außerhalb des Headers registriert.
 
Zuletzt bearbeitet:

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Ah okay, schau mal hier:
https://github.com/MHeironimus/Ardu...ystick/examples/JoystickTest/JoystickTest.ino

#include "Joystick.h"

// Create Joystick
Joystick_ Joystick;

als globale Variable und vor allem auch vorher definiert.... daran liegt es wohl das er es nicht findet. :)

Bin mit C++ nicht wirklich fit, aber klar, wenn es kein Objekt innerhalb des Scopes gibt (oder global) findet man es auch nicht bzw. kann man nicht darauf zugreifen, wenn es nicht deklariert bzw. initialisiert wurde. :)
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
  • Thread Starter Thread Starter
  • #5
Okay, danke alle Fehler behoben und kompiliert.

Das Array mit Acht stellen wird mit 9 initialisiert was auch ein Fehler ist.

Edit:
Habs mit einer Bürklammer getestet, 3 von 3 getesteten "Buttons" funktionieren.:D

Ergebnis überzeugend

--- [2017-05-27 16:05 CEST] Automatisch zusammengeführter Beitrag ---

Allerdings habe ich dann trotzdem noch die Frage warum der Fehler nicht schon für Zeile 8 geworfen wurde
 
Zuletzt bearbeitet:
Oben