Witam, zrobiłem sobie na Arduino Pro mini Virtual USB Keyboard. Mam z tym projektem mały problem.
Chodzi o to że działa na płycie asrock fatal1ty h87 performance a na płycie głównej "ASUS XS-A AMD A4-5000" pod którą projekt ma pracować niestety nie chce ruszyć.
Generalnie to nie mam pojęcia o co chodzi. Na płycie której działa jest na intelu i5, a tamta na AMD. Ma ktoś jakieś pomysły?
Chodzi o to że działa na płycie asrock fatal1ty h87 performance a na płycie głównej "ASUS XS-A AMD A4-5000" pod którą projekt ma pracować niestety nie chce ruszyć.
Kod:
//-------------------------------Inicjowanie Biblotek----------------------------------------------------------
#include "UsbKeyboard.h"
#include <IRremote.h>
//-----------------------------------Deklarowanie Zmiennych----------------------------------------------------
//----------------------Pilot----------------------------------
IRrecv irrecv(11);
decode_results results;
//-------------------Klawiatura--------------------------------
#define PLAY 6
#define SSTOP 7
#define PAUSE 8
#define FORWARD 9
#define REVERSE 10
#define BYPASS_TIMER_ISR 1
int pushF = 0;
int pushR = 0;
//-------------------------------------------------------------------------------------------------------------
void setup() {
//--------------------------Pilot------------------------------------
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(12, OUTPUT); // PC ON/OFF
pinMode(13, OUTPUT); // DIODA LED
pinMode(14, OUTPUT); // PC DVD EJECT
//------------------------Klawiatura---------------------------------
pinMode(PLAY, INPUT);
pinMode(SSTOP, INPUT);
pinMode(PAUSE, INPUT);
pinMode(FORWARD, INPUT);
pinMode(REVERSE, INPUT);
digitalWrite(PLAY, HIGH);
digitalWrite(SSTOP, HIGH);
digitalWrite(PAUSE, HIGH);
digitalWrite(FORWARD, HIGH);
digitalWrite(REVERSE, 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() {
//-------------------------Sterowanie Pilotem---------------------------------------
if (irrecv.decode(&results)) {
translateIR();
// unknownRemoter();
irrecv.resume(); // Receive the next value
}
//-----------------------Klawiatura USB------------------------------------------------
UsbKeyboard.update();
//digitalWrite(13, !digitalRead(13));
if (digitalRead(PLAY) == 0) {
UsbKeyboard.sendKeyStroke(KEY_PLAY);
Bypass();
}
if (digitalRead(SSTOP) == 0) {
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
}
if (digitalRead(PAUSE) == 0) {
UsbKeyboard.sendKeyStroke(KEY_PAUSE);
Bypass();
}
if (digitalRead(FORWARD) == 0) {pushF ++;}
if (digitalRead(FORWARD) == 1) {pushF = 0;}
if ( pushF > 1 and pushF < 4 ){
UsbKeyboard.sendKeyStroke(KEY_FORWARD);
Bypass(); }
if ( pushF > 4 ){
UsbKeyboard.sendKeyStroke(KEY_FASTFORWARD);
Bypass(); }
if (digitalRead(REVERSE) == 0) {pushR ++;}
if (digitalRead(REVERSE) == 1) {pushR = 0;}
if ( pushR > 1 and pushR < 4 ){
UsbKeyboard.sendKeyStroke(KEY_REVERSE);
Bypass(); }
if ( pushR > 4 ){
UsbKeyboard.sendKeyStroke(KEY_R);
Bypass(); }
}
//----podejmuje działania na podstawie kodu IR otrzymanych opisując Car MP3 kodów IR-------
void translateIR(){
switch(results.value){
case 0x20D352AD:// POWER
digitalWrite(12, HIGH);
delayMs(500);
digitalWrite(12, LOW);
break;
case 0x20D322DD:// EJECT
digitalWrite(14, HIGH);
delayMs(500);
digitalWrite(14, LOW);
break;
break;
case 0x20D3C837:// TV MODE
UsbKeyboard.sendKeyStroke(KEY_M);
Bypass();
break;
case 0x20D3F00F:// SETUP
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D3B24D:// SUSPEND
UsbKeyboard.sendKeyStroke(KEY_TAB);
Bypass();
break;
case 0x20D3827D:// 1
UsbKeyboard.sendKeyStroke(KEY_1);
Bypass();
case 0x20D3C03F:// 2
UsbKeyboard.sendKeyStroke(KEY_2);
Bypass();
break;
case 0x20D342BD:// 3
UsbKeyboard.sendKeyStroke(KEY_3);
Bypass();
break;
case 0x20D3A25D:// 4
UsbKeyboard.sendKeyStroke(KEY_4);
Bypass();
break;
case 0x20D3E01F:// 5
UsbKeyboard.sendKeyStroke(KEY_5);
Bypass();
break;
case 0x20D3629D:// 6
UsbKeyboard.sendKeyStroke(KEY_6);
Bypass();
break;
case 0x20D3AA55:// 7
UsbKeyboard.sendKeyStroke(KEY_7);
Bypass();
break;
case 0x20D3E817:// 8
UsbKeyboard.sendKeyStroke(KEY_8);
Bypass();
break;
case 0x20D36A95:// 9
UsbKeyboard.sendKeyStroke(KEY_9);
Bypass();
break;
case 0x20D3D827:// 0
UsbKeyboard.sendKeyStroke(KEY_0);
Bypass();
break;
case 0x20D39A65:// DELETE
UsbKeyboard.sendKeyStroke(KEY_DEL);
Bypass();
break;
case 0x20D35AA5:// CAPS/NUL
UsbKeyboard.sendKeyStroke(MOD_CONTROL_LEFT);
Bypass();
break;
case 0x20D3FA05:// VIDEO
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D37887:// MUSIC
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D33AC5:// PHOTO
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D3B847:// ALL
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D3E21D:// RETURN
UsbKeyboard.sendKeyStroke(KEY_BACKSPACE);
Bypass();
break;
case 0x20D3A05F:// SOURCE
UsbKeyboard.sendKeyStroke(KEY_J);
Bypass();
break;
case 0x20D3C23D:// LEWO
UsbKeyboard.sendKeyStroke(KEY_LEFT);
Bypass();
break;
case 0x20D3807F:// PRAWO
UsbKeyboard.sendKeyStroke(KEY_RIGHT);
Bypass();
break;
case 0x20D3609F:// GÓRA
UsbKeyboard.sendKeyStroke(KEY_UP);
Bypass();
break;
case 0x20D350AF:// DÓŁ
UsbKeyboard.sendKeyStroke(KEY_DOWN);
Bypass();
break;
case 0x20D3D22D:// INFO
UsbKeyboard.sendKeyStroke(KEY_I);
Bypass();
break;
case 0x20D332CD:// STOP
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D3728D :// PAGE UP(VOL+)
UsbKeyboard.sendKeyStroke(KEY_PAGEUP);
Bypass();
break;
case 0x20D34AB5 :// PAGE DOWN(VOL-)
UsbKeyboard.sendKeyStroke(KEY_PAGEDOWN);
Bypass();
break;
case 0x20D30AF5:// PLAY
UsbKeyboard.sendKeyStroke(KEY_PLAY);
Bypass();
break;
case 0x20D32AD5:// PAUSE
UsbKeyboard.sendKeyStroke(KEY_PAUSE);
Bypass();
break;
case 0x20D38A75:// MUTE
UsbKeyboard.sendKeyStroke(MOD_CONTROL_LEFT);
UsbKeyboard.sendKeyStroke(KEY_T);
Bypass();
break;
case 0x20D3708F:// REV
UsbKeyboard.sendKeyStroke(KEY_R);
Bypass();
break;
case 0x20D3B04F:// FWD
UsbKeyboard.sendKeyStroke(KEY_F);
Bypass();
break;
case 0x20D3CA35:// MENU
UsbKeyboard.sendKeyStroke(KEY_S);
Bypass();
break;
case 0x20D348B7:// PREV
UsbKeyboard.sendKeyStroke(KEY_REVERSE);
Bypass();
break;
case 0x20D38877:// NEXT
UsbKeyboard.sendKeyStroke(KEY_FORWARD);
Bypass();
break;
case 0x20D3F20D:// TITLE
UsbKeyboard.sendKeyStroke(KEY_N);
Bypass();
break;
case 0x20D3EA15:// REPEAT
UsbKeyboard.sendKeyStroke(KEY_E);
Bypass();
break;
case 0x20D3A857:// SLOW
UsbKeyboard.sendKeyStroke(KEY_ESC);
Bypass();
break;
case 0x20D36897:// ANGLE
UsbKeyboard.sendKeyStroke(KEY_BACKSLASH);
Bypass();
break;
case 0x20D358A7:// AUDIO
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
case 0x20D31AE5:// SUBTITLE
UsbKeyboard.sendKeyStroke(KEY_T);
Bypass();
break;
case 0x20D39867:// ZOOM
UsbKeyboard.sendKeyStroke(KEY_Z);
Bypass();
break;
case 0x20D340BF:// ENTER
UsbKeyboard.sendKeyStroke(KEY_ENTER);
Bypass();
break;
case 0x20D3906F:// HOME(A-B)
UsbKeyboard.sendKeyStroke(KEY_HOME);
Bypass();
break;
case 0x20D312ED:// FILE MODE
UsbKeyboard.sendKeyStroke(KEY_C);
Bypass();
break;
case 0x20D3DA25:// TIME SEEK
UsbKeyboard.sendKeyStroke(KEY_SSTOP);
Bypass();
break;
default:
Serial.print(" ZA DŁUGO WCIŚNIĘTY PRZYCISK PILOTA ");
Serial.println(results.value, HEX);
}
delayMs(100);
}
//--------------------------------------------------------------------------------------------------------------
void Bypass(){
#if BYPASS_TIMER_ISR
delayMs(200);
#else
delay(130);
#endif
}
Generalnie to nie mam pojęcia o co chodzi. Na płycie której działa jest na intelu i5, a tamta na AMD. Ma ktoś jakieś pomysły?