Arduino Nano - Capteur ultrasonique - OLED
Ce tutoriel vous explique comment utiliser un Arduino Nano pour obtenir la distance à partir d'un capteur ultrasonique et l'afficher sur un écran OLED.
Préparation du matériel
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 de l'OLED et du capteur ultrasonique
Si vous ne connaissez pas les écrans OLED et les capteurs ultrasoniques (y compris les brochages, les fonctionnalités et la programmation), les tutoriels suivants peuvent vous fournir les informations nécessaires :
- Arduino Nano - OLED tutorial
- Arduino Nano - Ultrasonic Sensor tutorial
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Code Arduino Nano - Capteur Ultrasonique - 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-ultrasonic-sensor-oled
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define TRIG_PIN 12 // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor
#define ECHO_PIN 11 // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor
#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
String distance_str;
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
distance_str.reserve(10); // to avoid fragmenting memory when using String
}
void loop() {
// Produce a 10-microsecond pulse to the TRIG pin.
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure the pulse duration from the ECHO pin
long duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
float distance_cm = 0.017 * duration_us;
// print the value to Serial Monitor
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
distance_str = String(distance_cm, 2); // two decimal places
distance_str += " cm";
Serial.println(distance_str); // print the temperature in Celsius to Serial Monitor
oled_display_center(distance_str); // display temperature on OLED
}
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();
}
Étapes rapides
- Cliquez sur l'icône Libraries dans la barre latérale gauche de l'IDE Arduino.
- Recherchez “SSD1306” et localisez la bibliothèque SSD1306 fournie par Adafruit.
- Appuyez sur le bouton Install pour terminer l'installation.
- Vous serez invité à installer des dépendances de bibliothèque supplémentaires.
- Pour les installer toutes en même temps, cliquez sur le bouton Install All.
- Copiez le code et ouvrez-le avec l'IDE Arduino.
- Cliquez sur le bouton Upload de l'IDE Arduino pour compiler et téléverser le code sur l'Arduino Nano.
- Déplacez votre main devant le capteur.
- Vérifiez le résultat sur l'OLED et le moniteur série.
※ NOTE THAT:
Ce code centrera horizontalement et verticalement le texte sur un affichage OLED. Pour plus d'informations, veuillez consulter Comment centrer verticalement/horizontalement sur OLED.