From c53a418700868caee62bf8873f9b2ce5ddb3e261 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 18 Jul 2016 17:40:34 +1000 Subject: [PATCH] Added HID and Midi examples --- .../HID/HID_Joystick/HID_Joystick.ino | 16 ++++++ .../HID_Joystick_button.ino | 34 ++++++++++++ .../HID/HID_Keyboard/HID_Keyboard.ino | 31 +++++++++++ .../examples/HID/HID_Mouse/HID_Mouse.ino | 32 +++++++++++ .../examples/MIDI/MIDI_test/MIDI_test.ino | 55 +++++++++++++++++++ 5 files changed, 168 insertions(+) create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick/HID_Joystick.ino create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick_button/HID_Joystick_button.ino create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Keyboard/HID_Keyboard.ino create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Mouse/HID_Mouse.ino create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/MIDI/MIDI_test/MIDI_test.ino diff --git a/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick/HID_Joystick.ino b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick/HID_Joystick.ino new file mode 100644 index 0000000..86ac2d7 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick/HID_Joystick.ino @@ -0,0 +1,16 @@ +byte lPin = 33; + +void setup() { + pinMode(lPin, OUTPUT); +} + +void loop() { + delay(1500); + Joystick.X(1000); + delay(1500); + Joystick.Y(1000); + delay(1500); + Joystick.X(0); + delay(1500); + Joystick.Y(0); +} diff --git a/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick_button/HID_Joystick_button.ino b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick_button/HID_Joystick_button.ino new file mode 100644 index 0000000..607828d --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Joystick_button/HID_Joystick_button.ino @@ -0,0 +1,34 @@ +#include + +#define lPin 33 +#define bPin 32 +#define BUTTON_DEBOUNCE_DELAY 1 + +int i=1, li=0; + +void setup() { + pinMode(lPin, OUTPUT); + HID.begin(); +} + +void loop() { + bool pressed = isButtonPressed(); + if(pressed){ + Joystick.button(i,1); + li=i; + }else{ + Joystick.button(i,0); + if(li==i)i++; + i=(i>32)?1:i; + } +} + +bool isButtonPressed() { + if (digitalRead(bPin) == HIGH) { + delay(BUTTON_DEBOUNCE_DELAY); + if (digitalRead(bPin) == HIGH) + + return true; + } + return false; +} \ No newline at end of file diff --git a/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Keyboard/HID_Keyboard.ino b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Keyboard/HID_Keyboard.ino new file mode 100644 index 0000000..df45574 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Keyboard/HID_Keyboard.ino @@ -0,0 +1,31 @@ +#define bPin 32 +#define lPin 33 +#define BUTTON_DEBOUNCE_DELAY 1 + +bool isButtonPressed(); + +void setup() { + + pinMode(lPin, OUTPUT); + pinMode(bPin, INPUT); +} + +void loop() { + //delay(1000); + if(isButtonPressed()){ + Keyboard.write(KEY_LEFT_GUI); + //Keyboard.print("Hello World !!!\n"); + } +} + +bool isButtonPressed() { + if (digitalRead(bPin) == HIGH) { + delay(BUTTON_DEBOUNCE_DELAY); + while (digitalRead(bPin) == HIGH) + ; + return true; + } + return false; +} + + diff --git a/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Mouse/HID_Mouse.ino b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Mouse/HID_Mouse.ino new file mode 100644 index 0000000..77b6027 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/HID/HID_Mouse/HID_Mouse.ino @@ -0,0 +1,32 @@ +#define lPin 33 +#define bPin 32 +#define BUTTON_DEBOUNCE_DELAY 1 +#define inc 32 + +bool isButtonPressed(); + +void setup() { + + pinMode(lPin, OUTPUT); + +} + +void loop() { + + if(isButtonPressed()){ + //Mouse.click(MOUSE_RIGHT); + //Mouse.click(MOUSE_LEFT); + Mouse.move(inc, inc, -5); + } + +} + +bool isButtonPressed() { + if (digitalRead(bPin) == HIGH) { + delay(BUTTON_DEBOUNCE_DELAY); + while (digitalRead(bPin) == HIGH) + ; + return true; + } + return false; +} diff --git a/STM32F1/libraries/A_STM32_Examples/examples/MIDI/MIDI_test/MIDI_test.ino b/STM32F1/libraries/A_STM32_Examples/examples/MIDI/MIDI_test/MIDI_test.ino new file mode 100644 index 0000000..cf9b9de --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/MIDI/MIDI_test/MIDI_test.ino @@ -0,0 +1,55 @@ +// ACHTUNG: +// für Midi Eingang die voids von usb_midi.cpp übernehmen -> siehe unten (sind auskommentiert im cpp file) +//#include +#define ledpiny 33 +boolean flip=0; +long sendtimer=millis(); +void setup() { + pinMode(ledpiny, OUTPUT); + //MidiUSB.begin(); +} + +void loop() { + // digitalWrite(ledpiny, MidiUSB.isConnected() ); + /* + void sendNoteOff(unsigned int channel, unsigned int note, unsigned int velocity); + void sendNoteOn(unsigned int channel, unsigned int note, unsigned int velocity); + */ + if (millis()-sendtimer>=500) + { + if (flip==0) + MidiUSB.sendNoteOn(1, 64, 127); +else + MidiUSB.sendNoteOff(1, 64, 0); + flip=!flip; + sendtimer=millis(); + + } + MidiUSB.poll(); + } + void USBMidi::handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) { + digitalWrite(ledpiny,0); +} + + +void USBMidi::handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) { + if (velocity>=0) + digitalWrite(ledpiny,1); +} + + + + void USBMidi::handleVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMidi::handleControlChange(unsigned int channel, unsigned int controller, unsigned int value) {} +void USBMidi::handleProgramChange(unsigned int channel, unsigned int program) {} +void USBMidi::handleAfterTouch(unsigned int channel, unsigned int velocity) {} +void USBMidi::handlePitchChange(unsigned int pitch) {} +void USBMidi::handleSongPosition(unsigned int position) {} +void USBMidi::handleSongSelect(unsigned int song) {} +void USBMidi::handleTuneRequest(void) {} +void USBMidi::handleSync(void) {} +void USBMidi::handleStart(void) {} +void USBMidi::handleContinue(void) {} +void USBMidi::handleStop(void) {} +void USBMidi::handleActiveSense(void) {} +void USBMidi::handleReset(void) {}