pro micro input lag

algemene C code
Berichten: 2
Geregistreerd: 11 Sep 2018, 18:23

pro micro input lag

Berichtdoor mgysgtdev » 11 Sep 2018, 20:48

hey.

ik heb een pro micro en daaraan heb ik een richtingschakelaar uit een vrachtwagen aangesloten. nu blijkt het dat in IDE de knoppen meteen gezien worden en een keyboard press geeft alleen doe ik dit in een spel dan heeft het een lag van 1 tot anderhalf seconde. of te wel in game zodra ik die schakelaar gebruik duurt het 1 seconde voordat het ingame gebeurt en in de IDE gebeurt het meteen.

ik heb het al op de forum gevraagt op de arduino site alleen kom ik er tiaal niet uit (ook omdat ik er totaal geen verstand van heb van al die coderingen)

hier is de code

gr devon

Code: Alles selecteren
#include <Keyboard.h>

const byte switchPin1 = 2;
const byte switchPin2 = 3;
const byte switchPin3 = 4;
const byte switchPin4 = 5;
const byte switchPin5 = 6;
const byte switchPin6 = 7;
const byte switchPin7 = 8;
const byte switchPin8 = 9;
byte oldSwitchState1 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState2 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState3 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState4 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState5 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState6 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState7 = HIGH; // assume switch open because of pull-up resistor
byte oldSwitchState8 = HIGH; // assume switch open because of pull-up resistor
const unsigned long debounceTime = 10; // milliseconds

void setup ()
{
Serial.begin (9600);
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (5, INPUT_PULLUP);
pinMode (6, INPUT_PULLUP);
pinMode (7, INPUT_PULLUP);
pinMode (8, INPUT_PULLUP);
pinMode (9, INPUT_PULLUP);
Keyboard.begin();
} // end of setup

void loop ()
{
// see if switch is open or closed
byte switchState1 = digitalRead (switchPin1);

// has it changed since last time?
if (switchState1 != oldSwitchState1)
{
oldSwitchState1 = switchState1; // remember for next time
delay (debounceTime); // debounce
if (switchState1 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('q');
delay(100);
Keyboard.releaseAll();
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.press('q');
delay(100);
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
{
// see if switch is open or closed
byte switchState2 = digitalRead (switchPin2);

// has it changed since last time?
if (switchState2 != oldSwitchState2)
{
oldSwitchState2 = switchState2; // remember for next time
delay (debounceTime); // debounce
if (switchState2 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('w');
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
}
{
// see if switch is open or closed
byte switchState3 = digitalRead (switchPin3);

// has it changed since last time?
if (switchState3 != oldSwitchState3)
{
oldSwitchState3 = switchState3; // remember for next time
delay (debounceTime); // debounce
if (switchState3 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('e');
delay(100);
Keyboard.releaseAll();
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.press('e');
delay(100);
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
}
{
// see if switch is open or closed
byte switchState4 = digitalRead (switchPin4);

// has it changed since last time?
if (switchState4 != oldSwitchState4)
{
oldSwitchState4 = switchState4; // remember for next time
delay (debounceTime); // debounce
if (switchState4 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('r');
delay(100);
Keyboard.releaseAll();
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.press('r');
delay(100);
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
}
{
// see if switch is open or closed
byte switchState5 = digitalRead (switchPin5);

// has it changed since last time?
if (switchState5 != oldSwitchState5)
{
oldSwitchState5 = switchState5; // remember for next time
delay (debounceTime); // debounce
if (switchState5 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('t');
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
}
{
// see if switch is open or closed
byte switchState6 = digitalRead (switchPin6);

// has it changed since last time?
if (switchState6 != oldSwitchState6)
{
oldSwitchState6 = switchState6; // remember for next time
delay (debounceTime); // debounce
if (switchState6 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('y');
delay(100);
Keyboard.releaseAll();
} // end if switchState is LOW
} // end of state change
}
{
// see if switch is open or closed
byte switchState7 = digitalRead (switchPin7);

// has it changed since last time?
if (switchState7 != oldSwitchState7)
{
oldSwitchState7 = switchState7; // remember for next time
delay (debounceTime); // debounce
if (switchState7 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('u');
} // end if switchState is LOW
else
{
Serial.println ("Switch opened.");
Keyboard.releaseAll();
} // end if switchState is HIGH
} // end of state change
}
{
// see if switch is open or closed
byte switchState8 = digitalRead (switchPin8);

// has it changed since last time?
if (switchState8 != oldSwitchState8)
{
oldSwitchState8 = switchState8; // remember for next time
delay (debounceTime); // debounce
if (switchState8 == LOW)
{
Serial.println ("Switch closed.");
Keyboard.press('i');
delay(100);
Keyboard.releaseAll();
} // end if switchState is LOW
} // end of state change
}
// other code here ...

}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: pro micro input lag

Berichtdoor shooter » 12 Sep 2018, 15:25

tja er zitten nogal wat delays in je code, haal die er nou eens allemaal uit.
en ook al die serial print dingen vergen tijd.
druk eens op CTRL T dan zie je wat meer structuur.
verder is het slim om een functie te gebruiken, dan hoef je het niet 8 keer te herschrijven.
als je dan ook nog een array gebruikt, dan leer je ook nog iets.
denk je er wel aan dat richting aanwijzing werkt met (hij doet het wel/hij doet het niet.)
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 11 Sep 2018, 18:23

Re: pro micro input lag

Berichtdoor mgysgtdev » 12 Sep 2018, 20:10

shooter schreef:tja er zitten nogal wat delays in je code, haal die er nou eens allemaal uit.
en ook al die serial print dingen vergen tijd.
druk eens op CTRL T dan zie je wat meer structuur.
verder is het slim om een functie te gebruiken, dan hoef je het niet 8 keer te herschrijven.
als je dan ook nog een array gebruikt, dan leer je ook nog iets.
denk je er wel aan dat richting aanwijzing werkt met (hij doet het wel/hij doet het niet.)


probleem is opgelost nouja de lag is eruit. door de serial monitor aan te zetten tijdens ik in game zit is de lag eruit. als ik de printIn codes eruit haal werkt het ook zonder de serial monitor aan te hebben staan alleen dan onstaat een probleem door de schakelaar zelf en dat is zodra ik de schakelaar naar rechts aan zet en handmatig terug gooi naar neutraal maakt hij kort contact met het knopje voor naar links, zou ik dat eventueel kunnen vermijden door van alleen die 2 knopjes de debouncetime te vergroten?

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: pro micro input lag

Berichtdoor shooter » 12 Sep 2018, 22:38

jazeker, daar is de debounce precies voor bedoeld.
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten