16-01-2018, 10:09
Witam.
Pierwszy post więc wielkie DZIEŃ DOBRY wszystkim.
Buduję H-Shifter z trzema pedałami.
moduł Micro Pro
podłączona biblioteka
https://github.com/MHeironimus/ArduinoJo...ersion-1.0
Złożony układ
https://drive.google.com/open?id=1e1lmcl...s2sqG1omTz
Opis sytuacji
- Osie sterowania pedałami działają bez zarzutu.
- Przyciski :
- na monitorze portu szeregowego widać zmiany stanu pinów 2-9
- w komputerze we właściwościach joysticka wariują przyciski :
1. na kodzie jak wyżej - nie działają
2. po zmianie sekcji kodu SHIFTER z
na
wszystkie przyciski są włączone - jakby widział tylko część po "else"
3. po wyrzuceniu warunku i wpisaniu po pętli
działa jak należy tzn cyklicznie włącza i wyłącza kolejny przycisk joysticka
Ponadto po poruszeniu samym modułem losowo włącza/wyłącza przyciski joysticka.
Wczoraj wieczorem nie było problemu. Moduł poleżał i mu się pomieszało ? Padł ?
Pierwszy post więc wielkie DZIEŃ DOBRY wszystkim.
Buduję H-Shifter z trzema pedałami.
moduł Micro Pro
podłączona biblioteka
https://github.com/MHeironimus/ArduinoJo...ersion-1.0
Kod:
// Sterowanie DIY H-Shifter i DIY 3x pedały
//
// moduł Arduino Micro Pro
//
// H-SHIFTER :
// 6 biegów + wsteczny + 1 przycisk do zmiany zakresu z 1-6 na 7-12
// podpięte pod piny 2-9
//
// 3x pedały :
// trzy osie podpięte pod A1, A2,A3
//
#include <Joystick.h> podłaczenie biblioteki joysticka
// Variable
int gas = A1; // przyspieszenie
int gasValue = 0; // os Throttle
int brake = A2; // hamulec
int brakeValue = 0; // os X
int clutch = A3; // sprzęgło
int clutchValue = 0; // os Y
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{ // start SETUP
for(int i = 2; i <= 9; i++)
pinMode(i, INPUT_PULLUP); // ustawienie wejść 2-9 jako przyciski
Joystick.begin(true); // inicjacja biblioteki JOYSTICK
Serial.begin(9600); // włączenie portu szeregowego
} // end SETUP
////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{ // start LOOP
/////////////////////////////////////////////////////
for(int z=2; z<=9; z++)
Serial.println(digitalRead(z) ); // monitorowanie stanu wejść 2-9
///////////////////////////////////////////////////////////////////////////////
// SHIFTER
for (int x=2; x<=9; x++)
{
if(digitalRead(x == LOW))
Joystick.setButton(x-2,1); // x-2 bo przyciski joysticka numerowane 0-7
else
Joystick.setButton(x-2,0);
}
delay(1);
// koniec SHIFTER
/////////////////////////////////////////////////////
// GAZ
gasValue = analogRead(gas);
// przeskalownie z 0->1024 na 0->255
gasValue = gasValue / 4 ;
Joystick.setThrottle(gasValue); // ustawienie osi
delay(1);
// koniec GAZ
/////////////////////////////////////////////////////
// HAMULEC
brakeValue = analogRead(brake);
// przeskalownie z 0->1024 na 0->255 na -127->127
brakeValue = (brakeValue / 4) - 127;
// if (brakeValue<-120) brakeValue=-120; // ograniczenie skrajnych położeń potencjometu
// if (brakeValue>120) brakeValue=120;
Joystick.setXAxis(brakeValue); // ustawienie osi
delay(1);
// koniec HAMULEC
/////////////////////////////////////////////////////
// SPRZEGLO
clutchValue = analogRead(clutch);
// przeskalownie z 0->1024 na 0->255 na -127->127
clutchValue = ((clutchValue / 4) - 127);
// if (clutchValue<-120) clutchValue=-120; // ograniczenie skrajnych położeń potencjometu
// if (clutchValue>120) clutchValue=120;
Joystick.setYAxis(clutchValue); // ustawienie osi
delay(1);
// koniec SPRZEGLO
} // end LOOP
Złożony układ
https://drive.google.com/open?id=1e1lmcl...s2sqG1omTz
Opis sytuacji
- Osie sterowania pedałami działają bez zarzutu.
- Przyciski :
- na monitorze portu szeregowego widać zmiany stanu pinów 2-9
- w komputerze we właściwościach joysticka wariują przyciski :
1. na kodzie jak wyżej - nie działają
2. po zmianie sekcji kodu SHIFTER z
Kod:
if(digitalRead(x == LOW))
Joystick.setButton(x-2,1);
else
Joystick.setButton(x-2,0);
na
Kod:
if(digitalRead(x == LOW))
Joystick.setButton(x-2,0);
else
Joystick.setButton(x-2,1);
wszystkie przyciski są włączone - jakby widział tylko część po "else"
3. po wyrzuceniu warunku i wpisaniu po pętli
Kod:
for (int x=2; x<=9; x++)
{
Joystick.setButton(x-2,1);
delay(500);
Joystick.setButton(x-2,0);
}
działa jak należy tzn cyklicznie włącza i wyłącza kolejny przycisk joysticka
Ponadto po poruszeniu samym modułem losowo włącza/wyłącza przyciski joysticka.
Wczoraj wieczorem nie było problemu. Moduł poleżał i mu się pomieszało ? Padł ?