From 114ab9a304ab6996f7845c5b1194c9dd4056f7a8 Mon Sep 17 00:00:00 2001 From: BlitzCityDIY Date: Wed, 21 May 2025 10:51:16 -0400 Subject: [PATCH] adding ir remote example Adding IR remote Arduino example for the Sparkle Motion Stick --- .../.feather_esp32_v2.test.only | 0 ...Arduino_Sparkle_Motion_Stick_IR_Remote.ino | 88 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/.feather_esp32_v2.test.only create mode 100644 Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/Arduino_Sparkle_Motion_Stick_IR_Remote.ino diff --git a/Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/.feather_esp32_v2.test.only b/Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/.feather_esp32_v2.test.only new file mode 100644 index 000000000..e69de29bb diff --git a/Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/Arduino_Sparkle_Motion_Stick_IR_Remote.ino b/Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/Arduino_Sparkle_Motion_Stick_IR_Remote.ino new file mode 100644 index 000000000..dac459c32 --- /dev/null +++ b/Sparkle_Motion_Stick_Examples/Arduino_Sparkle_Motion_Stick_IR_Remote/Arduino_Sparkle_Motion_Stick_IR_Remote.ino @@ -0,0 +1,88 @@ +// SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries +// SPDX-FileCopyrightText: 2025 Tim Cocks for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +/* + * Based on the SimpleReceiver.cpp and SimpleSender.cpp from the + * Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote. + * by Armin Joachimsmeyer + ************************************************************************************ + * MIT License + * + * Copyright (c) 2020-2023 Armin Joachimsmeyer + * + */ + +#include + +#include // include the library +#include + +#define NEOPIXEL_STRIP_PIN 21 +#define NUM_PIXELS 8 + +#define IR_RECEIVE_PIN 10 + +Adafruit_NeoPixel NEOPIXEL_STRIP(NUM_PIXELS, NEOPIXEL_STRIP_PIN, NEO_GRB + NEO_KHZ800); + +uint8_t upCmd = 0x5; +uint8_t downCmd = 0xD; +uint8_t rightCmd = 0xA; +uint8_t leftCmd = 0x8; + +uint16_t pixelHue = 0; +uint8_t brightness = 25; + +void setup() { + Serial.begin(115200); + //while (!Serial); + Serial.println("Adafruit Sparkle Motion IR Remote Control NeoPixels Demo"); + IrReceiver.begin(IR_RECEIVE_PIN); + Serial.print("IRin on pin "); + Serial.print(IR_RECEIVE_PIN); + NEOPIXEL_STRIP.begin(); + NEOPIXEL_STRIP.setBrightness(25); +} + +void loop() { + /* + * Check if received data is available and if yes, try to decode it. + * When left or right buttons are pressed, change the pixelHue. + * When up or down buttons are pressed, change the brightness. + */ + if (IrReceiver.decode()) { + if (IrReceiver.decodedIRData.protocol == UNKNOWN) { + Serial.println("unknown"); + IrReceiver.printIRResultRawFormatted(&Serial, true); + IrReceiver.resume(); + } else { + IrReceiver.resume(); + //IrReceiver.printIRResultShort(&Serial); + + // Ignore repeat codes from holding down the button + if (IrReceiver.decodedIRData.flags == 0){ + //Serial.printf("Command: %d\n",IrReceiver.decodedIRData.command); + if (IrReceiver.decodedIRData.command == upCmd){ + Serial.println("UP btn"); + brightness = min(brightness + 25, 255); + }else if (IrReceiver.decodedIRData.command == downCmd){ + Serial.println("DOWN btn"); + brightness = max(brightness - 25, 0); + }else if (IrReceiver.decodedIRData.command == leftCmd){ + Serial.println("LEFT btn"); + pixelHue = (pixelHue - 8192) % 65536; + }else if (IrReceiver.decodedIRData.command == rightCmd){ + Serial.println("RIGHT btn"); + pixelHue = (pixelHue + 8192) % 65536; + } + + NEOPIXEL_STRIP.setBrightness(brightness); + NEOPIXEL_STRIP.fill(NEOPIXEL_STRIP.gamma32(NEOPIXEL_STRIP.ColorHSV(pixelHue))); + NEOPIXEL_STRIP.show(); + delay(100); + } + } + Serial.println(); + } +}