Menu
CoddyTech

Capteur de stationnement : Affichage

Fait partie de la section Projets du Journey Arduino de Coddy. Leçon 12 sur 24.

La dernière étape affiche la distance exacte à l’écran. L’écran LCD 16x2 est câblé de la manière habituelle : RS sur 12, E sur 11, D4 à D7 sur 5, 4, 3 et 2.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

La ligne du haut ne change jamais, alors écris Distance: une fois dans setup(), après lcd.begin(16, 2). Seule la ligne du bas est mise à jour dans loop().

Un écran LCD conserve chaque caractère jusqu’à ce qu’il soit remplacé. En passant de 250 cm à 8 cm, afficher 8 cm par-dessus 250 cm laisse l’ancienne fin de ligne, et l’écran affiche 8 cmcm. Affiche quelques espaces après le texte pour recouvrir les caractères laissés par un nombre plus long :

lcd.setCursor(0, 1);
lcd.print(cm);
lcd.print(" cm    ");

Les espaces évitent aussi le scintillement de lcd.clear(), qui effacerait tout l’écran dix fois par seconde.

challenge icon

Défi

Facile

Afficher la distance sur l’écran LCD :

  • inclure LiquidCrystal.h et créer lcd(12, 11, 5, 4, 3, 2)
  • dans setup() : lcd.begin(16, 2) et Distance: sur la ligne du haut
  • dans loop() : la distance et cm sur la ligne du bas, comme 57 cm, avec des espaces après

Conserve les lumières, les bips et l’affichage. Appuie sur Run, puis sur Check.

Essayez vous-même

// Le capteur de distance
const int trigPin = 9;
const int echoPin = 10;
// Les voyants d’avertissement
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;
// Le buzzer
const int buzzerPin = 8;

unsigned long lastBeep = 0;  // quand le dernier bip a commencé

// Envoie une impulsion et renvoie la distance en cm.
long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  return duration / 58;
}

// Vert quand la voie est libre, jaune quand l’objet est proche, rouge quand il est trop proche.
void showLights(long cm) {
  digitalWrite(greenPin, LOW);
  digitalWrite(yellowPin, LOW);
  digitalWrite(redPin, LOW);
  if (cm >= 100) {
    digitalWrite(greenPin, HIGH);
  } else if (cm >= 30) {
    digitalWrite(yellowPin, HIGH);
  } else {
    digitalWrite(redPin, HIGH);
  }
}

// Émet des bips de plus en plus rapides à mesure que l’objet se rapproche.
void beep(long cm) {
  if (cm >= 100) {
    noTone(buzzerPin);
  } else if (cm < 10) {
    tone(buzzerPin, 1000);  // trop proche : un son continu
  } else if (millis() - lastBeep >= cm * 10) {
    lastBeep = millis();
    tone(buzzerPin, 1000, 50);
  }
}

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(redPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long cm = readDistance();
  Serial.println(cm);
  showLights(cm);
  beep(cm);
  delay(100);
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Arduino