PedalinoMini VS Bounce2

Compare PedalinoMini vs Bounce2 and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
PedalinoMini Bounce2
6 5
443 559
- -
7.7 6.4
16 days ago 3 months ago
C C++
GNU General Public License v3.0 only MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

PedalinoMini

Posts with mentions or reviews of PedalinoMini. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-01-13.

Bounce2

Posts with mentions or reviews of Bounce2. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-02-26.
  • Scoreboard/7 Segment display code help
    2 projects | /r/arduino | 26 Feb 2023
    // INCLUDES // Interfacing to programmable LED strips, see https://fastled.io/ #include // For debouncing button input, see https://github.com/thomasfredericks/Bounce2 #include // DEFINES // How many LEDs are used in each digit #define NUM_LEDS_PER_DIGIT 29 // Total number of LEDs in the strip #define NUM_LEDS 116 // The pin which is connected to the DataIn of the LED strip #define DATA_PIN 2 // If defined, timer shows minutes and seconds MM:SS, rather than seconds SSSS // #define DISPLAY_MMSS // CONSTANTS // The following array defines the sequence of LEDs that should be lit to represent each digit 0-9 // This will vary depending on the order in which the strip has been physically wired through // the segments, the number of LEDs in each segment, whether there are any unused LEDs in the strip // (e.g. between digits) etc. // Segments of a 7-segment display are generally labelled as follows: // /-A-\ // F B // --G-/ // E C // \-D-/ // The way I've wired the strips is: // - Strip is fed through the segments in the order G->B->A->F->E->D->C (then onto the next digit) // - There are 4 LEDs in each segment // - There is a single unused LED in the strip between segments F and E // - This makes the total length of 29 LEDs in the strip for each digit // - I'm packing these into a single 32-bit integer, and since bitwise operations are MSB, this will // be counted from the right-hand side, and then padded at the front with 3x0s up to 32 bits. // e.g. 0b000ccccddddeeee0ffffaaaabbbbgggg const uint32_t digits[10] = { 0b00011111111111101111111111110000, // 0 0b00011110000000000000000011110000, // 1 0b00000001111111100000111111111111, // 2 0b00011111111000000000111111111111, // 3 0b00011110000000001111000011111111, // 4 0b00011111111000001111111100001111, // 5 0b00011111111111101111111100001111, // 6 0b00011110000000000000111111110000, // 7 0b00011111111111101111111111111111, // 8 0b00011111111000001111111111111111, // 9 }; // Input pins const byte leftPin = 6; const byte startPin = 5; const byte rightPin = 4; // GLOBALS // The array of RGB values assigned to each LED in the strip CRGB leds[NUM_LEDS]; // Bounce objects to read debounced button input Bounce2::Button btnStart = Bounce2::Button(); Bounce2::Button btnLeft = Bounce2::Button(); Bounce2::Button btnRight = Bounce2::Button(); // The time at which the counter was (most recently) started unsigned long startTime; // Duration is specified in ms. So 1000 = 1 second, 60000 = 1 minute, etc. unsigned long timerDuration = 0; // Keep track of elapsed time from previous start/stop cycles unsigned long cumulativeElapsedTime; // Keep track of the current state of the device enum State {Inactive, Active}; State state = State::Inactive; // Count direction enum Mode {CountUp, CountDown}; Mode mode = Mode::CountUp; // FUNCTIONS // Set the values in the LED strip corresponding to a particular display/value void setDigit(int display, int val, CHSV colour){ for(int i=0;i(leds, NUM_LEDS); // Configure the debounced inputs btnStart.attach(startPin, INPUT_PULLUP); btnLeft.attach(leftPin, INPUT_PULLUP); btnRight.attach(rightPin, INPUT_PULLUP); state = State::Inactive; } // This function runs over and over void loop() { // Check whether any buttons have been pressed btnStart.update(); btnLeft.update(); btnRight.update(); // Grab the current timestamp unsigned long currentTime = millis(); // Calculate the value to be displayed static long timeValue = 0; // The colour hue in which the time will be displayed int timeHue = 170; // What to do next depends on the current state of the device if(state == State::Active) { if(mode == Mode::CountDown) { // The time remaining is the total game duration, less the time spent during the // current period of play, less the time elapsed during any previous sessions // or other deductions timeValue = timerDuration - (currentTime - startTime) - cumulativeElapsedTime; // Map colour hue from green -> red based on fraction of time remaining timeHue = map(timeValue, 0, timerDuration, 0, 100); // Countdown has reached zero if(timeValue <= 0) { timeValue = 0; state = State::Inactive; } } else if(mode == Mode::CountUp) { // Time is however long since we started counting, plus any previous existing time timeValue = (currentTime - startTime) + cumulativeElapsedTime; // Constant colour timeHue = 0; } // Toggle whether timer is active if(btnStart.pressed()) { Stop(); } } else if(state == State::Inactive){ // Cycle colour hue while paused (BPM, from_value, to_value) timeHue = beatsin8(20, 0, 40); // Subtract from countdown duration if(btnLeft.pressed()) { if(timerDuration >= 60000) { timerDuration -= 60000; } timeValue = timerDuration; Reset(); } // Add to countdown duration if(btnRight.pressed()) { timerDuration += 60000; timeValue = timerDuration; Reset(); } // Start timer if(btnStart.pressed()) { // Set mode depending on whether duration had been set if(timerDuration == 0) { mode = Mode::CountUp; } else { mode = Mode::CountDown; } // Activate the counter Start(); } } // Display as mm:ss #ifdef DISPLAY_MMSS // Use modulo to calculate "remainder" seconds int seconds = (timeValue / 1000) % 60; int minutes = timeValue / 60000; // Units setDigit(3, seconds%10, CHSV(timeHue, 255, 255)); // Tens setDigit(2,(seconds/10)%10, CHSV(timeHue, 255, 255)); // Hundreds setDigit(1, minutes%10, CHSV(timeHue, 255, 255)); // Thousands setDigit(0,(minutes/10)%10, CHSV(timeHue, 255, 255)); // Display in seconds #else // Units setDigit(3, (timeValue / 1000) % 10, CHSV(timeHue, 255, 255)); // Tens setDigit(2, (timeValue / 10000) % 10, CHSV(timeHue, 255, 255)); // Hundreds setDigit(1, (timeValue / 100000) % 10, CHSV(timeHue, 255, 255)); // Thousands setDigit(0, (timeValue / 1000000) % 10, CHSV(timeHue, 255, 255)); #endif // Send the updated values to the LED strip FastLED.show(); delay(20); }
  • Need Help
    1 project | /r/arduino | 18 Feb 2022
    The associated library on Github has a short description of how to install the library.
  • AVR debounce with release?
    1 project | /r/arduino | 2 Oct 2021
    I use the Bounce2 library. https://github.com/thomasfredericks/Bounce2
  • Morningstar inspired midi controller, mostortion and deep six clones
    2 projects | /r/diypedals | 13 Jan 2021
    Thanks for the comments guys! As I said before I build everything with a teensy 3.1 I had for another project that never got made. There is a pretty good MIDI library for arduino/teensy that has great examples for send and receiving MIDI messages. Thats a great place to start getting the hang out of MIDI. The teensy site even has a diagram for building the pcb yourself , so thats what I also followed: https://www.pjrc.com/teensy/td_libs_MIDI.html. Another helpful library for using momentary switches with the arduino is the bounce library (https://github.com/thomasfredericks/Bounce2). I took this lib as a foundation for all the press events. As I said, the MC6 has a ton of different press events that you can assign messages to, but for my use case implementing all of those would've been an overkill. Another great source for understanding why such a library would be helpful is this site: https://www.coda-effects.com/2016/04/relay-bypass-conception-and-relay.html.
  • Crapdek v1.1, a simple stream deck. My first real creation with Arduino. Details, code, and more pics in comments.
    1 project | /r/arduino | 4 Jan 2021
    There's a lot of discussion in here about how to debounce your buttons (fixing the "jittery" nature of your buttons). As a software developer, I can tell you the easiest way is to use someone else's code! check out: https://github.com/thomasfredericks/Bounce2

What are some alternatives?

When comparing PedalinoMini and Bounce2 you can also consider the following projects:

libossia - A modern C++, cross-environment distributed object model for creative coding and interaction scoring

esp32-ble2mqtt - A BLE to MQTT bridge running on an ESP32

bluetooth - Cross-platform Bluetooth API for Go and TinyGo. Supports Linux, macOS, Windows, and bare metal using Nordic SoftDevice or HCI

Pigiron - Pigiron is a MIDI routing utility with an extensive OSC interface.

Band-Music-Controller-Project - This project is about showing what potential the Band 2 has as a standalone and app-less accessory. With Bluetooth enabled, this device can be a wrist-mounted music controller as well as a health tracker!

Magic-Pocket-Control-ESP32 - Blackmagic Design Camera Control for ESP32 devices (feat. LILYGO T-Display-S3, M5Stack M5CoreS3, M5Stack Basic, M5Stack M5StickC Plus, Freenove ESP32-S3-WROOM

Gesture-Detecting-Macro-Keyboard - Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32.

realearn - ReaLearn 2: Sophisticated MIDI/MCU/OSC learn for REAPER