Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/********* 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: Counter Display - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2025-10-27 11:51:55 ********* 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, dettati */ /* dall'utente, */ /****** END SYSTEM REQUIREMENTS *****/ /* START CODE */ // Definitions of button and switch pins const int BTN_UP = 2; const int BTN_DOWN = 3; const int BTN_RESET = 4; const int SWITCH_MODE = 5; // LED output pins 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; // Setup function void setup() { // Imposta ingressi con pull-up interno pinMode(BTN_DOWN, INPUT_PULLUP); pinMode(BTN_UP, INPUT_PULLUP); pinMode(BTN_RESET, INPUT_PULLUP); pinMode(SWITCH_MODE, INPUT_PULLUP); // Imposta uscite per i LED pinMode(LED_MSB, OUTPUT); pinMode(LED_LSB, OUTPUT); // LED inizialmente spenti digitalWrite(LED_MSB, LOW); digitalWrite(LED_LSB, LOW); } // Loop function void loop() { // Lettura deviatore modalità grayMode = (digitalRead(SWITCH_MODE) == LOW); // Pulsante incremento if (digitalRead(BTN_UP) == LOW && millis() - lastPress > debounceDelay) { counter++; if (counter > 3) counter = 0; ledsActive = true; lastPress = millis(); updateLEDs(); } // Pulsante decremento if (digitalRead(BTN_DOWN) == LOW && millis() - lastPress > debounceDelay) { counter--; if (counter < 0) counter = 3; ledsActive = true; lastPress = millis(); updateLEDs(); } // Pulsante reset if (digitalRead(BTN_RESET) == LOW && millis() - lastPress > debounceDelay) { counter = 0; ledsActive = false; lastPress = millis(); updateLEDs(); } delay(10); } // Update LEDs 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); } // Conversione Binario → Gray int binaryToGray(int num) { return num ^ (num >> 1); } /* END CODE */
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)