Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********* Pleasedontcode.com **********
- Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- - Terms and Conditions:
- You have a non-exclusive, revocable, worldwide, royalty-free license
- for personal and commercial use. Attribution is optional; modifications
- are allowed, but you're responsible for code maintenance. We're not
- liable for any loss or damage. For full terms,
- please visit pleasedontcode.com/termsandconditions.
- - Project: Control Panel
- - Source Code NOT compiled for: Arduino Uno
- - Source Code created on: 2025-10-27 11:44:44
- ********* Pleasedontcode.com **********/
- /****** SYSTEM REQUIREMENTS *****/
- /****** SYSTEM REQUIREMENT 1 *****/
- /* realizza un contatore up/down che conta sia */
- /* tramite codice gray che binario, alternandoli */
- /* tramite un deviatore. Ci sono 3 pulsanti, */
- /* incremento, decremento e reset */
- /****** END SYSTEM REQUIREMENTS *****/
- /* START CODE */
- #include <Arduino.h>
- // Pin definitions
- const int BTN_UP = 2;
- const int BTN_DOWN = 3;
- const int BTN_RESET = 4;
- const int SWITCH_MODE = 5;
- const int LED_MSB = 6;
- const int LED_LSB = 7;
- // Variables
- int counter = 0;
- bool grayMode = false;
- bool ledsActive = false;
- unsigned long lastPress = 0;
- const unsigned long debounceDelay = 200;
- // Function prototypes
- void updateLEDs();
- int binaryToGray(int num);
- void setup() {
- // Set input pins with internal pull-up
- pinMode(BTN_DOWN, INPUT_PULLUP);
- pinMode(BTN_UP, INPUT_PULLUP);
- pinMode(BTN_RESET, INPUT_PULLUP);
- pinMode(SWITCH_MODE, INPUT_PULLUP);
- // Set output pins for LEDs
- pinMode(LED_MSB, OUTPUT);
- pinMode(LED_LSB, OUTPUT);
- // Initialize LEDs
- digitalWrite(LED_MSB, LOW);
- digitalWrite(LED_LSB, LOW);
- }
- void loop() {
- // Read mode switch
- grayMode = (digitalRead(SWITCH_MODE) == LOW);
- // Increment button
- if (digitalRead(BTN_UP) == LOW && millis() - lastPress > debounceDelay) {
- counter++;
- if (counter > 3) counter = 0; // Counter modulo 4
- ledsActive = true;
- lastPress = millis();
- updateLEDs();
- }
- // Decrement button
- if (digitalRead(BTN_DOWN) == LOW && millis() - lastPress > debounceDelay) {
- counter--;
- if (counter < 0) counter = 3;
- ledsActive = true;
- lastPress = millis();
- updateLEDs();
- }
- // Reset button
- if (digitalRead(BTN_RESET) == LOW && millis() - lastPress > debounceDelay) {
- counter = 0;
- ledsActive = false;
- lastPress = millis();
- updateLEDs();
- }
- }
- void updateLEDs() {
- if (!ledsActive) {
- digitalWrite(LED_MSB, LOW);
- digitalWrite(LED_LSB, LOW);
- return;
- }
- int value = counter;
- if (grayMode) {
- value = binaryToGray(counter);
- }
- digitalWrite(LED_MSB, (value >> 1) & 1);
- digitalWrite(LED_LSB, (value >> 0) & 1);
- }
- int binaryToGray(int num) {
- return num ^ (num >> 1);
- }
- /* END CODE */
Advertisement
Add Comment
Please, Sign In to add comment