NEW TUTORIAL: Create an Infrared Controlled Mouse with Arduino Micro, Leonardo, or Yun



In this tutorial we’re going to use the mouse and keyboard emulation abilities of a variety of Arduino devices combined within infrared receiver to make a remote control mouse with some keyboard commands thrown in for good measure.
There are a variety of reasons why you might want to create an infrared remote control mouse or keyboard. Suppose you’re making a PowerPoint presentation and you don’t want to be stuck standing next to the laptop as you click through the slides. Or perhaps you’ve set up your Raspberry Pi as a media server or you have some sort of Home Theater PC connected to your TV.

However for me the ability to do mouse and keyboard remotely is much more personal. As a result of my disability, I cannot use a traditional mouse. I control my computer using dictation software. However the mouse commands for that software have limits or are somewhat inconvenient to use. I can however use a traditional TV remote by poking at the buttons with a stick in my mouth. I originally developed this project because it helps me overcome my disability and allows me to do productive things like write tutorials for the Adafruit Learning System. If you’re interested, here is a link to my personal blog about how this project was originally developed. I use it every day and I could not have written this tutorial without it.

Hardware Needed

We originally intended this tutorial to have support for Pro Trinket as well as any ATmega32u4 based boards such as the Arduino Leonardo, Arduino Micro, and Arduino Yun. However there appeared to be some conflicts between IRLib infrared library and the Pro Trinket mouse and keyboard libraries. If we can resolve those problems at a later date we will update this tutorial. For now we are sticking to the ATmega32u4 based boards. We will be using Arduino Micro however the code will work identically with an Arduino Leonardo and the Leonardo portion of the Arduino Yun. 

You will need an IR sensor such as the TSOP38238 shown at the right.

You will need some sort of infrared remote control. All of our example code has been written for the Adafruit Mini Remote Control shown on the right but you can modify the code to use any ordinary TV remote if it uses a protocol supported by IRLib.

Although it is not 100% necessary, we will also add 2 NeoPixel’s as indicator lights that will help you know whether or not you are in mouse mode or keyboard mode and if you have pressed the Control, Alt, or Shift buttons. The NeoPixel also indicates whether or not you are dragging the mouse or clicking it.

Software Libraries

The mouse and keyboard libraries for the Leonardo, Micro, and Yun are already installed as part of the standard Arduino IDE. You can find more about these libraries at

You also need the IRLib Infrared Library for Arduino available on GitHub.. For an introduction to using this library, see our previous tutorial Using an Infrared Library for Arduino

If you’re using NeoPixels as indicator lights you will need down eight the Adafruit NeoPixel Library from GitHub.

See the full tutorial here!

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.