Como simular o Mouse com Arduino Leonardo?

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) ou MOVE 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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *