I got one of these a few years ago and it sat in the drawer until I had a project for it. It uses its own IR codes so I had to figure out how to capture those and use them in a sketch. It's a fun little control and sturdy, and since it uses real buttons instead of membrane buttons, it is a bit easier to use. These are still available at Radio Shack's website and there are usually ebay listings for them.
Radio Shack Make:It Remote Control
Here's an adaptation of an old Tronix tutorial which shows the button you pressed on an LCD.
// 12/1/21: Got the Tronix tutorial from the Wayback Machine:
// https://web.archive.org/web/20160601165103/http://tronixstuff.com/2011/03/30/tutorial-arduino-and-infra-red-control/
// Tronix tutorial was originally here but has changed their website:
// example 32.2 - IR receiver code translator
// for IR codes (ignores 2nd and 3rd signal repeat)
// http://tronixstuff.com/tutorials > chapter 32
// based on code by Ken Shirriff - http://arcfn.com
// 12/1/21: Updated to current IR Remote driver, Liquid Crystal LCD driver commands, changed cases to match Radio Shack remote.
// Got button combos for remote from:
// http://www.righto.com/2010/01/using-arbitrary-remotes-with-arduino.html
// WORKING WITH RADIO SHACK REMOTE! Phew.
// The Radio Shack Make:It remote uses its own codes, so you need to capture those and list
// them in the state machine. To do this for any unknown remote:
// Run ReceiveDemo.ino (in Examples folder for IRremote) and record the hash values for each button.
// Then see line 59 for use of IrReceiver.decodedIRData.decodedRawData in the switch case statement.
// There are other Examples that will also show the hash codes.
// Wiring: IR receiver to 5V, GND, D2. LCD to 5V, GND, SDA (A4), SCL (A5).
#include <Wire.h> // for I2C bus
#include <LiquidCrystal_I2C.h> // for I2C bus LCD module
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // set the LCD address - using 20x4 LCD
#include <IRremote.hpp> // use the library for IR
int receiver = 2; // pin of IR receiver to Arduino digital pin
void setup()
{
lcd.begin(20, 4);
lcd.backlight();
lcd.print("Radio Shack remote");
delay(1500);
lcd.clear();
IrReceiver.begin(receiver, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN); // Start the receiver
}
void loop()
{
if (IrReceiver.decode()) // have we received an IR signal?
{
translateIR();
for (int z = 0; z < 2; z++) // ignore 2nd and 3rd signal repeat
{
IrReceiver.resume(); // receive the next value
}
}
}
void translateIR() // takes action based on IR code received
{
switch (IrReceiver.decodedIRData.decodedRawData) // Uses .decodedRawData to interpret hash values
{
case 0x962814CA: lcd.print("Up"); break;
case 0x5990708A: lcd.print("Down"); break;
case 0xB2CC429A: lcd.print("Left"); break;
case 0xB012615A: lcd.print("Right"); break;
case 0x8D2A4BAF: lcd.print("Forward"); break;
case 0x1C22DE05: lcd.print("Reverse"); break;
case 0x7A6E10BA: lcd.print("Alt 1"); break;
case 0x97123E8A: lcd.print("Alt 2"); break;
// These aren't as easy to trigger but could be useful
case 0x23D3B043: lcd.print("forward left - 2+5"); break;
case 0x8D0FEBAB: lcd.print("forward right - 4+5"); break;
case 0xB2CC4299: lcd.print("reverse left - 2+6"); break;
case 0xB0126159: lcd.print("reverse right - 4+6"); break;
case 0x72F8273: lcd.print("forward up - 5+1"); break;
case 0xCA97DE33: lcd.print("forward down - 5+3"); break;
case 0x962814C9: lcd.print("reverse up - 6+1"); break;
case 0x59907089: lcd.print("reverse down - 6+3"); break;
default: lcd.print("Other button"); // Some buttons trigger this - bad reads? Who knows.
}
delay(750);
lcd.clear();
}