Esse projeto é muito legal porque o Arduino Leonardo (ou o Micro) tem um diferencial: ele pode agir como um dispositivo HID, ou seja, ele pode simular um teclado ou mouse nativamente — coisa que o Uno, por exemplo, não faz.
🧠 Objetivo:
Criar um programa em C# que envie comandos via USB serial para o Arduino Leonardo, e ele moverá o mouse de acordo com esses comandos.
🧰 O que você vai precisar:
No lado C# (PC):
- Enviar comandos via Serial (COM).
- Pode usar
System.IO.Ports.SerialPort
.
No lado Arduino:
- Receber esses comandos via
Serial
. - Usar a biblioteca Mouse.h para movimentar o mouse.
🔌 Parte 1: Código no Arduino Leonardo
#include <Mouse.h>
void setup() {
Serial.begin(9600);
while (!Serial); // Aguarda a conexão
Mouse.begin();
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
command.trim();
if (command.startsWith("MOVE")) {
// Formato: MOVE x y
int spaceIndex = command.indexOf(' ');
int secondSpace = command.indexOf(' ', spaceIndex + 1);
int x = command.substring(spaceIndex + 1, secondSpace).toInt();
int y = command.substring(secondSpace + 1).toInt();
Mouse.move(x, y);
}
// Exemplo: Clique do mouse
else if (command == "CLICK") {
Mouse.click();
}
}
}
Esse código lê comandos como
MOVE 10 0
(move 10px pra direita) ouMOVE 0 -10
(10px pra cima).
💻 Parte 2: Código em C# para enviar comandos
using System;
using System.IO.Ports;
class MouseController
{
static void Main()
{
SerialPort serial = new SerialPort("COM5", 9600); // Ajuste a porta COM
serial.Open();
while (true)
{
Console.Write("Digite comando (ex: MOVE 10 0 ou CLICK): ");
string cmd = Console.ReadLine();
serial.WriteLine(cmd);
}
}
}
Certifique-se de que a porta COM usada é a certa (pode ver isso no Gerenciador de Dispositivos quando conecta o Leonardo).
🔐 Dicas importantes:
- Mouse.begin() é essencial — se não chamar, não funciona.
- Sempre espere a Serial estar pronta (
while (!Serial);
). - O Leonardo pode travar o mouse do PC se você mandar comandos infinitos. Teste com cuidado!
- Adicione uma tecla de emergência no Arduino para desabilitar o Mouse se der ruim.