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: 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 */
Advertisement
Add Comment
Please, Sign In to add comment