/*
I2C aansluitingen per Arduino:
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL) of SDA1, SCL1
*/
// Bibliotheek voor communicatie met I2C / TWI apparaten
#include <Wire.h>
// Bibliotheek voor het LCD scherm
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//LiquidCrystal_I2C lcd(0x3F, 16, 2);
const int trigPin = 12; // trigger pin
const int echoPin = 8; // echo in
float duration; // variabele voor tijdsduur als kommagetal (float)
float distance; // variabele voor afstand als kommagetal (float)
void setup() {
Serial.begin(9600); // stel de seriële monitor in
// Ultrasoon sensor
pinMode(trigPin, OUTPUT); // stel de trigger pin in als uitvoer
pinMode(echoPin, INPUT); // stel de echo pin in als invoer
// LCD scherm
lcd.init(); // initialiseer het LCD scherm
lcd.backlight(); // zet de backlight aan
}
void loop() {
// Ultrasoon sensor
digitalWrite(trigPin, LOW); // zet de trigPin op LOW
delayMicroseconds(2); // wacht 2ms zodat de trigPin ook daadwerkelijk LOW is
digitalWrite(trigPin, HIGH); // zet de trigPin op HIGH om ultrasoon geluid te zenden
delayMicroseconds(10); // wacht 10ms
digitalWrite(trigPin, LOW); // set de trigPin op LOW om het zenden te stoppen
duration = pulseIn(echoPin, HIGH); // vraag de tijdsduur op van hoe lang de echoPin HIGH was
distance = (duration * 0.0343) / 2; // bereken de afstand aan de hand van de snelheid van het geluid
// dit getal moet door 2 worden gedeeld omdat het geluid heen en terug is gegaan.
Serial.print("Afstand: "); // Toon het resultaat op de seriële monitor
Serial.println(distance);
// LCD scherm
lcd.clear(); // wis het scherm
lcd.setCursor(0, 0); // zet de cursor op positie 1, regel 1
lcd.print(distance); // schrijf op scherm
lcd.print(" cm"); // schrijf op scherm
delay(100); // wacht 100ms tot een volgende meting
}