Hi! I have been working on a code for a while that I can easily use, for example, a web server or serial connection. this is the default code.
#include <Arduino.h>
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("SmarStick™", "SmartStick_electronics");
const int pinVRX = 32;
const int pinVRY = 33;
const int pinSW = 21;
const int pinOBLED = 2;
const int threshold = 300;
int neutralX, neutralY;
void setup() {
Serial.begin(9600);
bleKeyboard.begin();
pinMode(pinVRX, INPUT);
pinMode(pinVRY, INPUT);
pinMode(pinSW, INPUT_PULLUP);
pinMode(pinOBLED, OUTPUT);
neutralX = analogRead(pinVRX);
neutralY = analogRead(pinVRY);
}
void loop() {
int xValue = analogRead(pinVRX);
int yValue = analogRead(pinVRY);
bool buttonPressed = !digitalRead(pinSW);
int deltaX = xValue - neutralX;
int deltaY = yValue - neutralY;
if (deltaX > threshold) {
joystick_left();
} else if (deltaX < -threshold) {
joystick_right();
} else if (deltaY > threshold) {
joystick_up();
} else if (deltaY < -threshold) {
joystick_down();
} else {
}
if (buttonPressed) {
joystick_button();
}
if (bleKeyboard.isConnected()) {
digitalWrite(pinOBLED, LOW);
} else {
digitalWrite(pinOBLED, HIGH);
delay(500);
digitalWrite(pinOBLED, LOW);
delay(500);
}
delay(100);
}
void joystick_up() {
Serial.println("naar boven");
//Changeable action here
bleKeyboard.releaseAll();
}
void joystick_left() {
Serial.println("naar links");
//Changeable action here
bleKeyboard.releaseAll();
}
void joystick_right() {
Serial.println("naar rechts");
//Changeable action here
bleKeyboard.releaseAll();
}
void joystick_down() {
Serial.println("naar beneden");
//Changeable action here
bleKeyboard.releaseAll();
}
void joystick_button() {
Serial.println("Joystickknop ingedrukt");
//Changeable action here
bleKeyboard.releaseAll();
delay(500);
}
I want people to be able to easily select what will be placed where it currently says: //Changeable action here. I have created an HTML code where you can select what happens with one of the Changeable actions. this is the HTML code:
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SmartStick_electronics</title>
</head>
<body>
<h1>Pas uw SmartStick aan:</h1>
<form id="codeForm">
<label for="joystick_up">Optie joystick omhoog:</label>
<select id="joystick_up">
<!-- Dropdown-opties hier -->
<option value="//geen actie">Geen actie</option>
<option value=" bleKeyboard.press(KEY_LEFT_ARROW);"> pijltje naar links</option>
<option value=" bleKeyboard.press(KEY_RIGHT_ARROW);"> pijltje naar rechts</option>
<option value=" bleKeyboard.press(KEY_UP_ARROW);"> pijltje omhoog</option>
<option value=" bleKeyboard.press(KEY_DOWN_ARROW);"> pijltje omlaag</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_WWW_BACK);"> Vorige pagina(webbrowser)</option>
<option value=" bleKeyboard.press(KEY_MEDIA_CALCULATOR);"> Open Rekenmachine</option>
<option value=" bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);"> Volgend nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);"> vorige nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_STOP);"> Stop Media</option>
<option value=" bleKeyboard.press(KEY_MEDIA_MUTE);"> Geluid dempen</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_UP);"> Volume Hoger</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);"> Volume omlaag</option>
<option value=" bleKeyboard.press(KEY_TAB);"> Tab toets</option>
<option value=" bleKeyboard.press(KEY_RETURN);"> enter toets</option>
<option value=" bleKeyboard.press(KEY_ESC);"> Esc toets</option>
<option value=" bleKeyboard.press(KEY_PRTSC);"> Print Screen toets</option>
<option value=" bleKeyboard.press(KEY_DELETE);"> Delete toets</option>
<option value=" bleKeyboard.press(KEY_HOME);"> Home toets</option>
<option value=" bleKeyboard.press(KEY_NUM_0);"> 0 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_1);"> 1 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_2);"> 2 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_3);"> 3 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_4);"> 4 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_5);"> 5 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_16);"> 6 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_7);"> 7 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_8);"> 8 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_9);"> 9 toets</option>
<option value=" bleKeyboard.press('A');"> A</option>
<option value=" bleKeyboard.press('B');"> B</option>
<option value=" bleKeyboard.press('C);"> C</option>
<option value=" bleKeyboard.press('D');"> D</option>
<option value=" bleKeyboard.press('E');"> E</option>
<option value=" bleKeyboard.press('F');"> F</option>
<option value=" bleKeyboard.press('G');"> G</option>
<option value=" bleKeyboard.press('H');"> H</option>
<option value=" bleKeyboard.press('I');"> I</option>
<option value=" bleKeyboard.press('J');"> J</option>
<option value=" bleKeyboard.press('K');"> K</option>
<option value=" bleKeyboard.press('L');"> L</option>
<option value=" bleKeyboard.press('M');"> M</option>
<option value=" bleKeyboard.press('N');"> N</option>
<option value=" bleKeyboard.press('O');"> O</option>
<option value=" bleKeyboard.press('P');"> P</option>
<option value=" bleKeyboard.press('Q');"> Q</option>
<option value=" bleKeyboard.press('R');"> R</option>
<option value=" bleKeyboard.press('S');"> S</option>
<option value=" bleKeyboard.press('T');"> T</option>
<option value=" bleKeyboard.press('U');"> U</option>
<option value=" bleKeyboard.press('V');"> V</option>
<option value=" bleKeyboard.press('W');"> W</option>
<option value=" bleKeyboard.press('X');"> X</option>
<option value=" bleKeyboard.press('Y');"> Y</option>
<option value=" bleKeyboard.press('Z');"> Z</option>
</select><br><br>
<label for="joystick_left">Optie joystick naar links:</label>
<select id="joystick_left">
<!-- Dropdown-opties hier -->
<option value="//geen actie">Geen actie</option>
<option value=" bleKeyboard.press(KEY_LEFT_ARROW);"> pijltje naar links</option>
<option value=" bleKeyboard.press(KEY_RIGHT_ARROW);"> pijltje naar rechts</option>
<option value=" bleKeyboard.press(KEY_UP_ARROW);"> pijltje omhoog</option>
<option value=" bleKeyboard.press(KEY_DOWN_ARROW);"> pijltje omlaag</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_WWW_BACK);"> Vorige pagina(webbrowser)</option>
<option value=" bleKeyboard.press(KEY_MEDIA_CALCULATOR);"> Open Rekenmachine</option>
<option value=" bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);"> Volgend nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);"> vorige nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_STOP);"> Stop Media</option>
<option value=" bleKeyboard.press(KEY_MEDIA_MUTE);"> Geluid dempen</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_UP);"> Volume Hoger</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);"> Volume omlaag</option>
<option value=" bleKeyboard.press(KEY_TAB);"> Tab toets</option>
<option value=" bleKeyboard.press(KEY_RETURN);"> enter toets</option>
<option value=" bleKeyboard.press(KEY_ESC);"> Esc toets</option>
<option value=" bleKeyboard.press(KEY_PRTSC);"> Print Screen toets</option>
<option value=" bleKeyboard.press(KEY_DELETE);"> Delete toets</option>
<option value=" bleKeyboard.press(KEY_HOME);"> Home toets</option>
<option value=" bleKeyboard.press(KEY_NUM_0);"> 0 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_1);"> 1 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_2);"> 2 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_3);"> 3 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_4);"> 4 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_5);"> 5 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_16);"> 6 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_7);"> 7 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_8);"> 8 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_9);"> 9 toets</option>
<option value=" bleKeyboard.press('A');"> A</option>
<option value=" bleKeyboard.press('B');"> B</option>
<option value=" bleKeyboard.press('C);"> C</option>
<option value=" bleKeyboard.press('D');"> D</option>
<option value=" bleKeyboard.press('E');"> E</option>
<option value=" bleKeyboard.press('F');"> F</option>
<option value=" bleKeyboard.press('G');"> G</option>
<option value=" bleKeyboard.press('H');"> H</option>
<option value=" bleKeyboard.press('I');"> I</option>
<option value=" bleKeyboard.press('J');"> J</option>
<option value=" bleKeyboard.press('K');"> K</option>
<option value=" bleKeyboard.press('L');"> L</option>
<option value=" bleKeyboard.press('M');"> M</option>
<option value=" bleKeyboard.press('N');"> N</option>
<option value=" bleKeyboard.press('O');"> O</option>
<option value=" bleKeyboard.press('P');"> P</option>
<option value=" bleKeyboard.press('Q');"> Q</option>
<option value=" bleKeyboard.press('R');"> R</option>
<option value=" bleKeyboard.press('S');"> S</option>
<option value=" bleKeyboard.press('T');"> T</option>
<option value=" bleKeyboard.press('U');"> U</option>
<option value=" bleKeyboard.press('V');"> V</option>
<option value=" bleKeyboard.press('W');"> W</option>
<option value=" bleKeyboard.press('X');"> X</option>
<option value=" bleKeyboard.press('Y');"> Y</option>
<option value=" bleKeyboard.press('Z');"> Z</option>
</select><br><br>
<label for="joystick_right">Optie joystick naar rechts:</label>
<select id="joystick_right">
<!-- Dropdown-opties hier -->
<option value="//geen actie">Geen actie</option>
<option value=" bleKeyboard.press(KEY_LEFT_ARROW);"> pijltje naar links</option>
<option value=" bleKeyboard.press(KEY_RIGHT_ARROW);"> pijltje naar rechts</option>
<option value=" bleKeyboard.press(KEY_UP_ARROW);"> pijltje omhoog</option>
<option value=" bleKeyboard.press(KEY_DOWN_ARROW);"> pijltje omlaag</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_WWW_BACK);"> Vorige pagina(webbrowser)</option>
<option value=" bleKeyboard.press(KEY_MEDIA_CALCULATOR);"> Open Rekenmachine</option>
<option value=" bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);"> Volgend nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);"> vorige nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_STOP);"> Stop Media</option>
<option value=" bleKeyboard.press(KEY_MEDIA_MUTE);"> Geluid dempen</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_UP);"> Volume Hoger</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);"> Volume omlaag</option>
<option value=" bleKeyboard.press(KEY_TAB);"> Tab toets</option>
<option value=" bleKeyboard.press(KEY_RETURN);"> enter toets</option>
<option value=" bleKeyboard.press(KEY_ESC);"> Esc toets</option>
<option value=" bleKeyboard.press(KEY_PRTSC);"> Print Screen toets</option>
<option value=" bleKeyboard.press(KEY_DELETE);"> Delete toets</option>
<option value=" bleKeyboard.press(KEY_HOME);"> Home toets</option>
<option value=" bleKeyboard.press(KEY_NUM_0);"> 0 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_1);"> 1 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_2);"> 2 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_3);"> 3 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_4);"> 4 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_5);"> 5 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_16);"> 6 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_7);"> 7 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_8);"> 8 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_9);"> 9 toets</option>
<option value=" bleKeyboard.press('A');"> A</option>
<option value=" bleKeyboard.press('B');"> B</option>
<option value=" bleKeyboard.press('C);"> C</option>
<option value=" bleKeyboard.press('D');"> D</option>
<option value=" bleKeyboard.press('E');"> E</option>
<option value=" bleKeyboard.press('F');"> F</option>
<option value=" bleKeyboard.press('G');"> G</option>
<option value=" bleKeyboard.press('H');"> H</option>
<option value=" bleKeyboard.press('I');"> I</option>
<option value=" bleKeyboard.press('J');"> J</option>
<option value=" bleKeyboard.press('K');"> K</option>
<option value=" bleKeyboard.press('L');"> L</option>
<option value=" bleKeyboard.press('M');"> M</option>
<option value=" bleKeyboard.press('N');"> N</option>
<option value=" bleKeyboard.press('O');"> O</option>
<option value=" bleKeyboard.press('P');"> P</option>
<option value=" bleKeyboard.press('Q');"> Q</option>
<option value=" bleKeyboard.press('R');"> R</option>
<option value=" bleKeyboard.press('S');"> S</option>
<option value=" bleKeyboard.press('T');"> T</option>
<option value=" bleKeyboard.press('U');"> U</option>
<option value=" bleKeyboard.press('V');"> V</option>
<option value=" bleKeyboard.press('W');"> W</option>
<option value=" bleKeyboard.press('X');"> X</option>
<option value=" bleKeyboard.press('Y');"> Y</option>
<option value=" bleKeyboard.press('Z');"> Z</option>
</select><br><br>
<label for="joystick_down">Optie joystick omlaag:</label>
<select id="joystick_down">
<!-- Dropdown-opties hier -->
<option value="//geen actie">Geen actie</option>
<option value=" bleKeyboard.press(KEY_LEFT_ARROW);"> pijltje naar links</option>
<option value=" bleKeyboard.press(KEY_RIGHT_ARROW);"> pijltje naar rechts</option>
<option value=" bleKeyboard.press(KEY_UP_ARROW);"> pijltje omhoog</option>
<option value=" bleKeyboard.press(KEY_DOWN_ARROW);"> pijltje omlaag</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_WWW_BACK);"> Vorige pagina(webbrowser)</option>
<option value=" bleKeyboard.press(KEY_MEDIA_CALCULATOR);"> Open Rekenmachine</option>
<option value=" bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);"> Volgend nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);"> vorige nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_STOP);"> Stop Media</option>
<option value=" bleKeyboard.press(KEY_MEDIA_MUTE);"> Geluid dempen</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_UP);"> Volume Hoger</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);"> Volume omlaag</option>
<option value=" bleKeyboard.press(KEY_TAB);"> Tab toets</option>
<option value=" bleKeyboard.press(KEY_RETURN);"> enter toets</option>
<option value=" bleKeyboard.press(KEY_ESC);"> Esc toets</option>
<option value=" bleKeyboard.press(KEY_PRTSC);"> Print Screen toets</option>
<option value=" bleKeyboard.press(KEY_DELETE);"> Delete toets</option>
<option value=" bleKeyboard.press(KEY_HOME);"> Home toets</option>
<option value=" bleKeyboard.press(KEY_NUM_0);"> 0 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_1);"> 1 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_2);"> 2 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_3);"> 3 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_4);"> 4 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_5);"> 5 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_16);"> 6 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_7);"> 7 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_8);"> 8 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_9);"> 9 toets</option>
<option value=" bleKeyboard.press('A');"> A</option>
<option value=" bleKeyboard.press('B');"> B</option>
<option value=" bleKeyboard.press('C);"> C</option>
<option value=" bleKeyboard.press('D');"> D</option>
<option value=" bleKeyboard.press('E');"> E</option>
<option value=" bleKeyboard.press('F');"> F</option>
<option value=" bleKeyboard.press('G');"> G</option>
<option value=" bleKeyboard.press('H');"> H</option>
<option value=" bleKeyboard.press('I');"> I</option>
<option value=" bleKeyboard.press('J');"> J</option>
<option value=" bleKeyboard.press('K');"> K</option>
<option value=" bleKeyboard.press('L');"> L</option>
<option value=" bleKeyboard.press('M');"> M</option>
<option value=" bleKeyboard.press('N');"> N</option>
<option value=" bleKeyboard.press('O');"> O</option>
<option value=" bleKeyboard.press('P');"> P</option>
<option value=" bleKeyboard.press('Q');"> Q</option>
<option value=" bleKeyboard.press('R');"> R</option>
<option value=" bleKeyboard.press('S');"> S</option>
<option value=" bleKeyboard.press('T');"> T</option>
<option value=" bleKeyboard.press('U');"> U</option>
<option value=" bleKeyboard.press('V');"> V</option>
<option value=" bleKeyboard.press('W');"> W</option>
<option value=" bleKeyboard.press('X');"> X</option>
<option value=" bleKeyboard.press('Y');"> Y</option>
<option value=" bleKeyboard.press('Z');"> Z</option>
</select><br><br>
<label for="joystick_button">Optie joystick ingedrukt:</label>
<select id="joystick_button">
<!-- Dropdown-opties hier -->
<option value="//geen actie">Geen actie</option>
<option value=" bleKeyboard.press(KEY_LEFT_ARROW);"> pijltje naar links</option>
<option value=" bleKeyboard.press(KEY_RIGHT_ARROW);"> pijltje naar rechts</option>
<option value=" bleKeyboard.press(KEY_UP_ARROW);"> pijltje omhoog</option>
<option value=" bleKeyboard.press(KEY_DOWN_ARROW);"> pijltje omlaag</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_WWW_BACK);"> Vorige pagina(webbrowser)</option>
<option value=" bleKeyboard.press(KEY_MEDIA_CALCULATOR);"> Open Rekenmachine</option>
<option value=" bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);"> Volgend nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);"> vorige nummer/video</option>
<option value=" bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);"> Pauze knop</option>
<option value=" bleKeyboard.press(KEY_MEDIA_STOP);"> Stop Media</option>
<option value=" bleKeyboard.press(KEY_MEDIA_MUTE);"> Geluid dempen</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_UP);"> Volume Hoger</option>
<option value=" bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);"> Volume omlaag</option>
<option value=" bleKeyboard.press(KEY_TAB);"> Tab toets</option>
<option value=" bleKeyboard.press(KEY_RETURN);"> enter toets</option>
<option value=" bleKeyboard.press(KEY_ESC);"> Esc toets</option>
<option value=" bleKeyboard.press(KEY_PRTSC);"> Print Screen toets</option>
<option value=" bleKeyboard.press(KEY_DELETE);"> Delete toets</option>
<option value=" bleKeyboard.press(KEY_HOME);"> Home toets</option>
<option value=" bleKeyboard.press(KEY_NUM_0);"> 0 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_1);"> 1 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_2);"> 2 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_3);"> 3 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_4);"> 4 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_5);"> 5 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_16);"> 6 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_7);"> 7 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_8);"> 8 toets</option>
<option value=" bleKeyboard.press(KEY_NUM_9);"> 9 toets</option>
<option value=" bleKeyboard.press('A');"> A</option>
<option value=" bleKeyboard.press('B');"> B</option>
<option value=" bleKeyboard.press('C);"> C</option>
<option value=" bleKeyboard.press('D');"> D</option>
<option value=" bleKeyboard.press('E');"> E</option>
<option value=" bleKeyboard.press('F');"> F</option>
<option value=" bleKeyboard.press('G');"> G</option>
<option value=" bleKeyboard.press('H');"> H</option>
<option value=" bleKeyboard.press('I');"> I</option>
<option value=" bleKeyboard.press('J');"> J</option>
<option value=" bleKeyboard.press('K');"> K</option>
<option value=" bleKeyboard.press('L');"> L</option>
<option value=" bleKeyboard.press('M');"> M</option>
<option value=" bleKeyboard.press('N');"> N</option>
<option value=" bleKeyboard.press('O');"> O</option>
<option value=" bleKeyboard.press('P');"> P</option>
<option value=" bleKeyboard.press('Q');"> Q</option>
<option value=" bleKeyboard.press('R');"> R</option>
<option value=" bleKeyboard.press('S');"> S</option>
<option value=" bleKeyboard.press('T');"> T</option>
<option value=" bleKeyboard.press('U');"> U</option>
<option value=" bleKeyboard.press('V');"> V</option>
<option value=" bleKeyboard.press('W');"> W</option>
<option value=" bleKeyboard.press('X');"> X</option>
<option value=" bleKeyboard.press('Y');"> Y</option>
<option value=" bleKeyboard.press('Z');"> Z</option>
</select><br><br>
<button type="button" onclick="generateCode()">Ververs code</button>
<button type="button" onclick="copyCodeToClipboard()">Kopieer Code</button>
<button type="button" onclick="downloadCode()">Download Code</button>
</form>
<h2>Uw gegenereerde code</code>:</h2>
<pre id="generatedCode"></pre>
<script>
function downloadCode() {
var generatedCode = document.getElementById("generatedCode").innerText;
var blob = new Blob([generatedCode], { type: 'text/plain' });
var url = window.URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'SmartStick_code.ino';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
}
</script>
<script>
function copyCodeToClipboard() {
var generatedCode = document.getElementById("generatedCode").innerText;
navigator.clipboard.writeText(generatedCode).then(function() {
alert("Code gekopieerd naar klembord!");
}, function(err) {
console.error('Kon de tekst niet kopiëren: ', err);
});
}
</script>
<script>
function generateCode() {
var joystick_up = document.getElementById("joystick_up").value;
var joystick_left = document.getElementById("joystick_left").value;
var joystick_right = document.getElementById("joystick_right").value;
var joystick_down = document.getElementById("joystick_down").value;
var joystick_button = document.getElementById("joystick_button").value;
var generatedCode = `\#include <Arduino.h>
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("SmarStick™", "SmartStick_electronics");
const int pinVRX = 32;
const int pinVRY = 33;
const int pinSW = 21;
const int pinOBLED = 2;
const int threshold = 300;
int neutralX, neutralY;
void setup() {
Serial.begin(9600);
bleKeyboard.begin();
pinMode(pinVRX, INPUT);
pinMode(pinVRY, INPUT);
pinMode(pinSW, INPUT_PULLUP);
pinMode(pinOBLED, OUTPUT);
neutralX = analogRead(pinVRX);
neutralY = analogRead(pinVRY);
}
void loop() {
int xValue = analogRead(pinVRX);
int yValue = analogRead(pinVRY);
bool buttonPressed = !digitalRead(pinSW);
int deltaX = xValue - neutralX;
int deltaY = yValue - neutralY;
if (deltaX > threshold) {
joystick_left();
} else if (deltaX < -threshold) {
joystick_right();
} else if (deltaY > threshold) {
joystick_up();
} else if (deltaY < -threshold) {
joystick_down();
} else {
}
if (buttonPressed) {
joystick_button();
}
if (bleKeyboard.isConnected()) {
digitalWrite(pinOBLED, LOW);
} else {
digitalWrite(pinOBLED, HIGH);
delay(500);
digitalWrite(pinOBLED, LOW);
delay(500);
}
delay(100);
}
void joystick_up() {
Serial.println("naar boven");
${joystick_up}
bleKeyboard.releaseAll();
}
void joystick_left() {
Serial.println("naar links");
${joystick_left}
bleKeyboard.releaseAll();
}
void joystick_right() {
Serial.println("naar rechts");
${joystick_right}
bleKeyboard.releaseAll();
}
void joystick_down() {
Serial.println("naar beneden");
${joystick_down}
bleKeyboard.releaseAll();
}
void joystick_button() {
Serial.println("Joystickknop ingedrukt");
${joystick_button}
bleKeyboard.releaseAll();
delay(500);
}
`;document.getElementById("generatedCode").innerText = generatedCode;
}
// Functie om de code automatisch te genereren bij laden van de pagina
window.onload = generateCode;
</script>
</body>
</html>
I only have 1 problem here. If people want to upload this code to an esp32 they must first install the arduino ide and the BLEkeyboard library. Is it also possible to make this unnecessary and, for example, possible to make this via a web server or serial connection?
