Witam, kleciłem sobie taki oto programik.
Jest to klawiatura USB.
Program działa aczkolwiek chciałbym, aby po wciśnięciu i przytrzymaniu przycisku FORWARD przez 2s wykonywał to polecenie.
i to samo dla przycisku REVERSE
Jest to klawiatura USB.
Kod:
#include "UsbKeyboard.h"
#define PLAY 6
#define SSTOP 7
#define PAUSE 8
#define FORWARD 9
#define REVERSE 10
#define FASTFORWARD 11
#define REWIND 12
#define BYPASS_TIMER_ISR 1
void setup() {
pinMode(PLAY, INPUT);
digitalWrite(PLAY, HIGH);
pinMode(SSTOP, INPUT);
digitalWrite(SSTOP, HIGH);
pinMode(PAUSE, INPUT);
digitalWrite(PAUSE, HIGH);
pinMode(FORWARD, INPUT);
digitalWrite(FORWARD, HIGH);
pinMode(REVERSE, INPUT);
digitalWrite(REVERSE, HIGH);
pinMode(FASTFORWARD, INPUT);
digitalWrite(FASTFORWARD, HIGH);
pinMode(REWIND, INPUT);
digitalWrite(REWIND, HIGH);
#if BYPASS_TIMER_ISR
TIMSK0&=!(1<<TOIE0); // ++
#endif
}
#if BYPASS_TIMER_ISR
void delayMs(unsigned int ms) {
for (int i = 0; i < ms; i++) {
delayMicroseconds(1000);
}
}
#endif
void loop() {
UsbKeyboard.update();
if (digitalRead(PLAY) == 0) {
delay(20);
digitalWrite(13, !digitalRead(13));
UsbKeyboard.sendKeyStroke(KEY_PLAY);
}
if (digitalRead(SSTOP) == 0) {
delay(20);
digitalWrite(13, !digitalRead(13));
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
}
if (digitalRead(PAUSE) == 0) {
delay(20);
digitalWrite(13, !digitalRead(13));
UsbKeyboard.sendKeyStroke(KEY_PAUSE);
}
if (digitalRead(FORWARD) == 0) {
delay(20);
digitalWrite(13, !digitalRead(13));
UsbKeyboard.sendKeyStroke(KEY_FORWARD);
}
if (digitalRead(REVERSE) == 0) {
delay(20);
digitalWrite(13, !digitalRead(13));
UsbKeyboard.sendKeyStroke(KEY_REVERSE);
}
#if BYPASS_TIMER_ISR
delayMs(150);
#else
delay(130);
#endif
}
Program działa aczkolwiek chciałbym, aby po wciśnięciu i przytrzymaniu przycisku FORWARD przez 2s wykonywał to polecenie.
Kod:
UsbKeyboard.sendKeyStroke(KEY_FASTFORWARD);
zamiast
UsbKeyboard.sendKeyStroke(KEY_FORWARD);
i to samo dla przycisku REVERSE
Kod:
UsbKeyboard.sendKeyStroke(KEY_REWIND);
zamiast
UsbKeyboard.sendKeyStroke(KEY_REVERSE);