Skip to content

Instantly share code, notes, and snippets.

@bukowa
Created April 14, 2026 02:07
Show Gist options
  • Select an option

  • Save bukowa/7d2ec375794b249e6ed6490a62808ad2 to your computer and use it in GitHub Desktop.

Select an option

Save bukowa/7d2ec375794b249e6ed6490a62808ad2 to your computer and use it in GitHub Desktop.
stm32 keyboard
#include <Keyboard.h>
// Definicje pinów dla BluePill
#define LED_PIN PC13
#define USB_DISC_PIN PA12
void setup() {
// 1. Konfiguracja wbudowanej diody
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH); // Na BluePill HIGH = dioda zgaszona
// 2. TWARDY RESET USB (Kluczowe dla BluePill!)
// Wymusza na Windowsie ponowne rozpoznanie urządzenia
pinMode(USB_DISC_PIN, OUTPUT);
digitalWrite(USB_DISC_PIN, LOW);
delay(200);
pinMode(USB_DISC_PIN, INPUT);
// Dajemy systemowi Windows czas na załadowanie sterowników HID
delay(500);
// 3. Start wirtualnej klawiatury
Keyboard.begin();
// 4. Bezpieczne opóźnienie 5 sekund przed pierwszym wpisywaniem
// Dzięki temu płytka nie zacznie pisać w oknie Arduino IDE od razu po podłączeniu
delay(5000);
}
void loop() {
// --- Co płytka ma "pisać" na klawiaturze ---
// Wpisuje cały tekst i automatycznie dodaje ENTER (przejście do nowej linii)
Keyboard.println("Witaj ze swiata STM32! Klawiatura dziala.");
// Alternatywa: Jeśli chcesz wcisnąć konkretny klawisz (np. literę 'A' albo klawisz Windows):
// Keyboard.write('a');
// Keyboard.write(KEY_LEFT_GUI); // Klawisz Windows
// Krótkie mrugnięcie diodą na znak, że tekst został wysłany
digitalWrite(LED_PIN, LOW); // Włącz diodę
delay(100);
digitalWrite(LED_PIN, HIGH); // Wyłącz diodę
// Czekaj 5 sekund przed kolejnym wpisaniem tekstu
delay(5000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment