Arduino Nano - Compteur de Bouton - OLED

Ce tutoriel vous explique comment utiliser un Arduino Nano et un bouton pour compter les événements de pression, puis afficher la valeur sur un OLED. En détail :

Dans ce tutoriel, nous allons effectuer le debounce du bouton sans utiliser la fonction delay(). Pour plus d'informations, veuillez consulter Pourquoi avons-nous besoin de debounce ?

Vous pouvez modifier cela pour fonctionner avec différents capteurs à la place du bouton.

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Push Button
1×(Optional) Panel-mount Push Button
1×SSD1306 I2C OLED Display 128x64
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos d'OLED et de bouton

Si vous n'êtes pas familier avec l'OLED et les boutons (brochage, fonctionnalités, programmation, etc.), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage Arduino Nano Bouton OLED

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano - affichage du comptage des boutons sur OLED

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-button-count-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <ezButton.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C ezButton button(2); // create ezButton object for pin D2 unsigned long prev_count = 0; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display button.setDebounceTime(50); // set debounce time to 50 milliseconds button.setCountMode(COUNT_FALLING); } void loop() { button.loop(); // MUST call the loop() function first unsigned long count = button.getCount(); if (prev_count != count) { Serial.println(count); // print count to Serial Monitor oled.clearDisplay(); // clear display oled.println(count); // display count oled.display(); // show on OLED prev_count != count; } }

Étapes rapides

  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'IDE Arduino.
  • Recherchez "ezButton", puis trouvez la bibliothèque de boutons par ArduinoGetStarted.
  • Appuyez sur le bouton Install pour installer la bibliothèque ezButton.
Bibliothèque de bouton Arduino Nano
  • Rechercher “SSD1306” et localiser la bibliothèque SSD1306 créée par Adafruit.
  • Ensuite, appuyez sur le bouton Install pour terminer l'installation.
Bibliothèque OLED Arduino Nano
  • Vous serez invité à installer des dépendances de bibliothèque supplémentaires.
  • Pour les installer toutes, cliquez sur le bouton Install All.
Bibliothèque de capteurs Adafruit GFX pour Arduino Nano
  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Ensuite, cliquez sur le bouton Upload pour transférer le code vers l'Arduino Nano.
  • Après cela, appuyez plusieurs fois sur le bouton.
  • Enfin, observez le nombre qui change sur l'OLED.

Le code ci-dessus affiche le nombre de pressions sur le bouton dans le coin supérieur gauche. Modifions-le pour le faire apparaître au centre !

Code Arduino Nano - Alignement vertical et horizontal au centre sur OLED

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-button-count-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <ezButton.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C ezButton button(2); // create ezButton object for pin D2 unsigned long prev_count = 0; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display button.setDebounceTime(50); // set debounce time to 50 milliseconds button.setCountMode(COUNT_FALLING); } void loop() { button.loop(); // MUST call the loop() function first unsigned long count = button.getCount(); if (prev_count != count) { Serial.println(count); // print count to Serial Monitor String text = String(count); oled_display_center(text); prev_count != count; } } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

※ NOTE THAT:

Le code ci-dessous permet de centrer horizontalement et verticalement le texte sur un afficheur OLED. Pour plus d'informations, veuillez consulter Comment centrer verticalement/horizontalement sur OLED.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!