• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino dwie funkcje pod jednym przyciskiem
#1
Witam, kleciłem sobie taki oto programik.
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);
 
Odpowiedź
  


Wiadomości w tym wątku
Arduino dwie funkcje pod jednym przyciskiem - przez bu.tomasz - 20-04-2016, 12:33

Skocz do:


Przeglądający: 1 gości