Ciao a tutti,

Ciao Ragazzi,

Questo è il mio primo approccio con il mondo Arduino, ho un pò di esperienza di programmazione perciò le dinamiche di funzionamento generali della compilazione del codice mi risultano chiare anche se non conosco i comandi specifici.

Ho trovato un codice precompilato per creare un scheda joystick ma il codice mi da il seguente errore:

Prova.ino: In function 'void loop()':
Prova.ino:62:1: error: 'Joystick' was not declared in this scope
Errore durante la compilazione

Io il codice non l'ho modificato perciò non capisco perchè ritorni questo errore.

Qualcuno mi sa aiutare?

Dovresti pubblicare anche il codice, altrimenti la vedo dura.
Sembra, comunque, che all'inizio non hai dichiarato la variabile Joystick.

Per le presentazioni, c'è evidenziato "presentazioni...".

Forse è meglio mettere questa domanda in "programmazione" ma rispondo qui.

Se hai già esperienza di programmazione, saprai che quell'errore dice che hai tentato di usare una variabile senza prima definirla.
Quindi:

  • o ha dimenticato di definirla
  • o hai sbagliato a scriverne il nome
  • o la hai definita ma in un altro blocco, come variabile locale quindi visibile solo da quel blocco per cui devi definirla come variabile globale

Se ci mostri il codice, lo vediamo subito insieme.
Il fatto che quel programma tu lo abbia "trovato" garantisce poco, potrebbe essere anche sbagliato.

Grazie delle risposte.

Scusate se ho postato qui ma pensavo di farmi conoscere e porre la mia domanda in un unico post senza aprire due discussioni.

Il fatto è che io l'ho scaricato da un sito senza metterci mano ed è strano che non funzioni.

Il codice è questo:

/* Buttons and Rotary Encoders for a Simracing Wheelplate
as part of a DIY Community Project at virtualracing.org.

You must select Serial+Keyboard+Mouse+Joystick from the "Tools > USB Type" menu
Buttons can be wired to Pin 0-12.
Rotary Encoder A to 13-14, B to 15-16, C to 17-18, D to 19-20.
Potmeters to Pin 21-23.

This is modified and combined code from the supplied library examples: Teensy>USB_Keyboard>Buttons and Encoder>Basic.
Modified by Andre / Februari 2014.
*/

#include <Bounce.h>
#include <Encoder.h>

// Create Bounce objects for each button. The Bounce object
// automatically deals with contact chatter or "bounce", and
// it makes detecting changes very simple.
Bounce button0 = Bounce(0, 10);
Bounce button1 = Bounce(1, 10); // 10 = 10 ms debounce time
Bounce button2 = Bounce(2, 10); // which is appropriate for
Bounce button3 = Bounce(3, 10); // most mechanical pushbuttons
Bounce button4 = Bounce(4, 10);
Bounce button5 = Bounce(5, 10); // if a button is too "sensitive"
Bounce button6 = Bounce(6, 10); // to rapid touch, you can
Bounce button7 = Bounce(7, 10); // increase this time.
Bounce button8 = Bounce(8, 10);
Bounce button9 = Bounce(9, 10);
Bounce button10 = Bounce(10, 10);
Bounce button11 = Bounce(11, 10);
Bounce button12 = Bounce(12, 10);

Encoder myEncA(13, 14);
Encoder myEncB(15, 16);
Encoder myEncC(17, 18);
Encoder myEncD(19, 20);

void setup() {
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP); // Teensy++ LED, may need 1k resistor pullup
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
}
long oldPositionA = 0; // Defining the starting postion for the Rotary Encoders
long oldPositionB = 0;
long oldPositionC = 0;
long oldPositionD = 0;

void loop() {
// Potmeters Pin 21-23

Joystick.X(analogRead(21));
Joystick.Y(analogRead(22));
Joystick.Z(analogRead(23));

// ENCODERS Pin 13-14, 15-16, 17-18, 19-20
// Encoder A
long newPositionA = myEncA.read();
if (newPositionA > oldPositionA) {
oldPositionA = newPositionA;
Joystick.button(14, 1);
delay(50);
Joystick.button(14, 0);
}
if (newPositionA < oldPositionA) {
oldPositionA = newPositionA;
Joystick.button(15, 1);
delay(50);
Joystick.button(15, 0);
}
// Encoder B
long newPositionB = myEncB.read();
if (newPositionB > oldPositionB) {
oldPositionB = newPositionB;
Joystick.button(16, 1);
delay(50);
Joystick.button(16, 0);
}
if (newPositionB < oldPositionB) {
oldPositionB = newPositionB;
Joystick.button(17, 1);
delay(50);
Joystick.button(17, 0);
}
// Encoder C
long newPositionC = myEncC.read();
if (newPositionC > oldPositionC) {
oldPositionC = newPositionC;
Joystick.button(18, 1);
delay(50);
Joystick.button(18, 0);
}
if (newPositionC < oldPositionC) {
oldPositionC = newPositionC;
Joystick.button(19, 1);
delay(50);
Joystick.button(19, 0);
}
// Encoder D
long newPositionD = myEncD.read();
if (newPositionD > oldPositionD) {
oldPositionD = newPositionD;
Joystick.button(20, 1);
delay(50);
Joystick.button(20, 0);
}
if (newPositionD < oldPositionD) {
oldPositionD = newPositionD;
Joystick.button(21, 1);
delay(50);
Joystick.button(21, 0);
}
// BUTTONS Pin 0-12

// Update all the buttons. There should not be any long
// delays in loop(), so this runs repetitively at a rate
// faster than the buttons could be pressed and released.
button0.update();
button1.update();
button2.update();
button3.update();
button4.update();
button5.update();
button6.update();
button7.update();
button8.update();
button9.update();
button10.update();
button11.update();
button12.update();

// Check each button for "falling" edge.
// Type a message on the Keyboard when each button presses
// Update the Joystick buttons only upon changes.
// falling = high (not pressed - voltage from pullup resistor)
// to low (pressed - button connects pin to ground)
if (button0.fallingEdge()) {
Joystick.button(1, 1);
}
if (button1.fallingEdge()) {
Joystick.button(2, 1);
}
if (button2.fallingEdge()) {
Joystick.button(3, 1);
}
if (button3.fallingEdge()) {
Joystick.button(4, 1);
}
if (button4.fallingEdge()) {
Joystick.button(5, 1);
}
if (button5.fallingEdge()) {
Joystick.button(6, 1);
}
if (button6.fallingEdge()) {
Joystick.button(7, 1);
}
if (button7.fallingEdge()) {
Joystick.button(8, 1);
}
if (button8.fallingEdge()) {
Joystick.button(9, 1);
}
if (button9.fallingEdge()) {
Joystick.button(10, 1);
}
if (button10.fallingEdge()) {
Joystick.button(11, 1);
}
if (button11.fallingEdge()) {
Joystick.button(12, 1);
}
if (button12.fallingEdge()) {
Joystick.button(13, 1);
}

// Check each button for "rising" edge
// Type a message on the Keyboard when each button releases.
// For many types of projects, you only care when the button
// is pressed and the release isn't needed.
// rising = low (pressed - button connects pin to ground)
// to high (not pressed - voltage from pullup resistor)
if (button0.risingEdge()) {
Joystick.button(1, 0);
}
if (button1.risingEdge()) {
Joystick.button(2, 0);
}
if (button2.risingEdge()) {
Joystick.button(3, 0);
}
if (button3.risingEdge()) {
Joystick.button(4, 0);
}
if (button4.risingEdge()) {
Joystick.button(5, 0);
}
if (button5.risingEdge()) {
Joystick.button(6, 0);
}
if (button6.risingEdge()) {
Joystick.button(7, 0);
}
if (button7.risingEdge()) {
Joystick.button(8, 0);
}
if (button8.risingEdge()) {
Joystick.button(9, 0);
}
if (button9.risingEdge()) {
Joystick.button(10, 0);
}
if (button10.risingEdge()) {
Joystick.button(11, 0);
}
if (button11.risingEdge()) {
Joystick.button(12, 0);
}
if (button12.risingEdge()) {
Joystick.button(13, 0);
}
}

Torque80:
Ciao Ragazzi,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Ho fatto la presentazione.
Continuo qui o devo cambiare sezione?

Il codice è questo:

/* Buttons and Rotary Encoders for a Simracing Wheelplate
   as part of a DIY Community Project at virtualracing.org.

  You must select Serial+Keyboard+Mouse+Joystick from the "Tools > USB Type" menu
  Buttons can be wired to Pin 0-12.
  Rotary Encoder A to 13-14, B to 15-16, C to 17-18, D to 19-20.
  Potmeters to Pin 21-23.
  
This is modified and combined code from the supplied library examples: Teensy>USB_Keyboard>Buttons and Encoder>Basic.
Modified by Andre / Februari 2014.
*/

#include <Bounce.h>
#include <Encoder.h>

// Create Bounce objects for each button.  The Bounce object
// automatically deals with contact chatter or "bounce", and
// it makes detecting changes very simple.
Bounce button0 = Bounce(0, 10);
Bounce button1 = Bounce(1, 10);  // 10 = 10 ms debounce time
Bounce button2 = Bounce(2, 10);  // which is appropriate for
Bounce button3 = Bounce(3, 10);  // most mechanical pushbuttons
Bounce button4 = Bounce(4, 10);
Bounce button5 = Bounce(5, 10);  // if a button is too "sensitive"
Bounce button6 = Bounce(6, 10);  // to rapid touch, you can
Bounce button7 = Bounce(7, 10);  // increase this time.
Bounce button8 = Bounce(8, 10);
Bounce button9 = Bounce(9, 10);
Bounce button10 = Bounce(10, 10);
Bounce button11 = Bounce(11, 10);
Bounce button12 = Bounce(12, 10);

Encoder myEncA(13, 14);
Encoder myEncB(15, 16);
Encoder myEncC(17, 18);
Encoder myEncD(19, 20);

void setup() {
  pinMode(0, INPUT_PULLUP);
  pinMode(1, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);  // Teensy++ LED, may need 1k resistor pullup
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);
}
long oldPositionA  = 0;  // Defining the starting postion for the Rotary Encoders
long oldPositionB  = 0;
long oldPositionC  = 0;
long oldPositionD  = 0;


void loop() {
          // Potmeters Pin 21-23
Joystick.X(analogRead(21));
Joystick.Y(analogRead(22));
Joystick.Z(analogRead(23));
  
          // ENCODERS Pin 13-14, 15-16, 17-18, 19-20
 // Encoder A   
  long newPositionA = myEncA.read();
  if (newPositionA > oldPositionA) {
    oldPositionA = newPositionA;
    Joystick.button(14, 1);
    delay(50);
    Joystick.button(14, 0);
  }
  if (newPositionA < oldPositionA) {
    oldPositionA = newPositionA;
    Joystick.button(15, 1);
    delay(50);
    Joystick.button(15, 0);
  }
  // Encoder B   
  long newPositionB = myEncB.read();
  if (newPositionB > oldPositionB) {
    oldPositionB = newPositionB;
    Joystick.button(16, 1);
    delay(50);
    Joystick.button(16, 0);
  }
  if (newPositionB < oldPositionB) {
    oldPositionB = newPositionB;
    Joystick.button(17, 1);
    delay(50);
    Joystick.button(17, 0);
    }
    // Encoder C   
  long newPositionC = myEncC.read();
  if (newPositionC > oldPositionC) {
    oldPositionC = newPositionC;
    Joystick.button(18, 1);
    delay(50);
    Joystick.button(18, 0);
  }
  if (newPositionC < oldPositionC) {
    oldPositionC = newPositionC;
    Joystick.button(19, 1);
    delay(50);
    Joystick.button(19, 0);
    }
    // Encoder D   
  long newPositionD = myEncD.read();
  if (newPositionD > oldPositionD) {
    oldPositionD = newPositionD;
    Joystick.button(20, 1);
    delay(50);
    Joystick.button(20, 0);
  }
  if (newPositionD < oldPositionD) {
    oldPositionD = newPositionD;
    Joystick.button(21, 1);
    delay(50);
    Joystick.button(21, 0);
  }  
        // BUTTONS Pin 0-12
  
  // Update all the buttons.  There should not be any long
  // delays in loop(), so this runs repetitively at a rate
  // faster than the buttons could be pressed and released.
  button0.update();
  button1.update();
  button2.update();
  button3.update();
  button4.update();
  button5.update();
  button6.update();
  button7.update();
  button8.update();
  button9.update();
  button10.update();
  button11.update();
  button12.update();

  // Check each button for "falling" edge.
  // Type a message on the Keyboard when each button presses
  // Update the Joystick buttons only upon changes.
  // falling = high (not pressed - voltage from pullup resistor)
  //           to low (pressed - button connects pin to ground)
   if (button0.fallingEdge()) {
    Joystick.button(1, 1);
  }
  if (button1.fallingEdge()) {
    Joystick.button(2, 1);
  }
  if (button2.fallingEdge()) {
    Joystick.button(3, 1);
  }
  if (button3.fallingEdge()) {
    Joystick.button(4, 1);
  }
  if (button4.fallingEdge()) {
    Joystick.button(5, 1);
  }
  if (button5.fallingEdge()) {
    Joystick.button(6, 1);
  }
  if (button6.fallingEdge()) {
    Joystick.button(7, 1);
  }
  if (button7.fallingEdge()) {
    Joystick.button(8, 1);
  }
  if (button8.fallingEdge()) {
    Joystick.button(9, 1);
  }
  if (button9.fallingEdge()) {
    Joystick.button(10, 1);
  }
  if (button10.fallingEdge()) {
    Joystick.button(11, 1);
  }
  if (button11.fallingEdge()) {
    Joystick.button(12, 1);
  }
  if (button12.fallingEdge()) {
    Joystick.button(13, 1);
  }

  // Check each button for "rising" edge
  // Type a message on the Keyboard when each button releases.
  // For many types of projects, you only care when the button
  // is pressed and the release isn't needed.
  // rising = low (pressed - button connects pin to ground)
  //          to high (not pressed - voltage from pullup resistor)
   if (button0.risingEdge()) {
    Joystick.button(1, 0);
  }
  if (button1.risingEdge()) {
    Joystick.button(2, 0);
  }
  if (button2.risingEdge()) {
    Joystick.button(3, 0);
  }
  if (button3.risingEdge()) {
    Joystick.button(4, 0);
  }
  if (button4.risingEdge()) {
    Joystick.button(5, 0);
  }
  if (button5.risingEdge()) {
    Joystick.button(6, 0);
  }
   if (button6.risingEdge()) {
    Joystick.button(7, 0);
  }
  if (button7.risingEdge()) {
    Joystick.button(8, 0);
  }
  if (button8.risingEdge()) {
    Joystick.button(9, 0);
  }
  if (button9.risingEdge()) {
    Joystick.button(10, 0);
  }
  if (button10.risingEdge()) {
    Joystick.button(11, 0);
  }
  if (button11.risingEdge()) {
    Joystick.button(12, 0);
  }
  if (button12.risingEdge()) {
    Joystick.button(13, 0);
  }
}

e questo è il messaggio di errore che esce quando lo verifico:

Simwheelplate_DX_Buttons.ino: In function 'void loop()':
Simwheelplate_DX_Buttons.ino:61:1: error: 'Joystick' was not declared in this scope
Errore durante la compilazione

Ho provato a dare un'occhiata ai link e credo che il problema siano le librerie ma vorrei una conferma da voi che sicuramente ne capite di più.
Forse le librerie che uso non sono le stesse per cui è stato concepito il codice?