Étape 2: De Code
Code de
Dans de codes wordt gemaakt de gebruik van de libery supplémentaire. zonder deze zal het lcd scherm niet werken en zullen de ultrasone sensoren een stuk minder nauwkeurig zijn.
Code voor de ultrasone capteur :
#define echoPin 13
#define trigPin 12
#include
NewPing sonar (12, 13, 200) ;
void setup()
{
pinMode (trigPin, sortie) ;
pinMode (echoPin, entrée) ;
Serial.Begin(9600) ;
}
void loop() {}
int durée, distance ;
digitalWrite (trigPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin, basse) ;
durée = pulseIn (echoPin, HIGH) ;
distance = (durée / 2) / 29,1 ;
Serial.println(distance) ;
retarder (1000) ;
}
Code voor het lcd scherm :
#include
#include / / bibliotheek voor lcd
LiquidCrystal_I2C lcd (0 x 27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) ;
void setup()
{
Serial.Begin(9600) ;
LCD.Begin (16, 2) ;
pour (int i = 0; i < 3; i ++) ;
{
LCD.backlight() ;
Delay(250) ;
lcd.noBacklight() ;
Delay(250) ;
}
}
void loop() {}
LCD.backlight() ;
lcd.setCursor (0, 0) ;
LCD.Print ("Halo wereld: P") ; afstand est onjuist maar wordt wel op lcd geprint
}
Code de voor de drukknoppen :
#define drukknop1 13
#define drukknop2 12
#define drukknop3 8
buttonState int = 0 ;
int buttonState2 = 0 ;
int buttonState3 = 0 ;
void setup()
{
pinMode (drukknop1, entrée) ;
pinMode (drukknop2, entrée) ;
pinMode (drukknop3, entrée) ;
Serial.Begin(9600) ;
}
void loop() {}
buttonState = digitalRead(drukknop1) ;
buttonState2 = digitalRead(drukknop2) ;
buttonState3 = digitalRead(drukknop3) ;
ElseIf (buttonState == HIGH) {}
Serial.println ("button1 ingedrukt") ;
}
ElseIf (buttonState2 == HIGH) {}
Serial.println ("button2 ingedrukt") ;
}
ElseIf (buttonState2 == HIGH) {}
Serial.println ("button3 ingedrukt") ;
}
retarder (1000) ;
}
Laser code voor de :
void setup()
{
pinMode (13, sortie) ;
}
void loop()
{
digitalWrite (13, HIGH) ;
Delay(10000) ;
digitalWrite (13, faible) ;
Delay(2000) ;
}
Totale code :
#define drukknop1 52
#define drukknop2 53
#define drukknop3 51
#define laser 50
#define echoPin 48
#define trigPin 49
#define echoPin2 26
#define trigPin2 27
vanaf hier alleen voor arduino mega
#define echoPin3 22
#define trigPin3 23
#define echoPin4 24
#define trigPin4 25
/////
#define I2C_ADDR 0 x 27 / / Define adresse I2C pour le PCF8574A
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
#define LED_OFF 0
#define LED_ON 1
#include / / nieuwe bibliotheek toegevoegd voor betere ping
#include
#include / / bibliotheek voor lcd
LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin) ;
NewPing sonar (49, 48, 400) ;
NewPing sonar1 (27, 26, 400) ;
NewPing sonar2 (23, 22, 400) ;
NewPing sonar3 (25, 24, 400) ;
buttonState int = 0 ;
int buttonState2 = 0 ;
int buttonState3 = 0 ;
void setup()
{
pinMode (drukknop1, entrée) ;
pinMode (drukknop2, entrée) ;
pinMode (drukknop3, entrée) ;
Serial.Begin(9600) ;
/////////
pinMode (laser, sortie) ;
Serial.Begin (9600) ;
pinMode (trigPin, sortie) ;
pinMode (echoPin, entrée) ;
pinMode (trigPin2, sortie) ;
pinMode (echoPin2, entrée) ;
pinMode (trigPin3, sortie) ;
pinMode (echoPin3, entrée) ;
pinMode (trigPin4, sortie) ;
pinMode (echoPin4, entrée) ;
lcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE) ;
lcd.setBacklight(HIGH) ;
Serial.Begin(9600) ;
LCD.Begin (16, 2) ;
pour (int i = 0; i < 3; i ++) ;
{
LCD.backlight() ;
Delay(250) ;
lcd.noBacklight() ;
Delay(250) ;
}
}
void loop() {}
longue durée, distance, Durée2 distance2, entre, Durée3 distance3 Durée4, distance4, between2, oppervlakte, oppervlakte2 ;
Ultrasone 1
digitalWrite (trigPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin, basse) ;
durée = pulseIn (echoPin, HIGH) ;
distance = (durée / 2) / 29,1 ;
Ultrasone 2
digitalWrite (trigPin2, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin2, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin2, basse) ;
Durée2 = pulseIn (echoPin2, HIGH) ;
distance2 = (Durée2 / 2) / 29,1 ;
entre les deux = distance + distance2 + 18 ; afstand tussen us1 fr nous2
Ultrasone 3
digitalWrite (trigPin3, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin3, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin3, basse) ;
Durée3 = pulseIn (echoPin3, HIGH) ;
distance3 = (Durée3 / 2) / 29,1 ;
Ultrasone 4
digitalWrite (trigPin4, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin4, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin4, basse) ;
Durée4 = pulseIn (echoPin4, HIGH) ;
distance4 = (Durée4 / 2) / 29,1 ;
between2 = distance3 + distance4 + 18 ; afstand tussen nous 3 fr nous 4
oppervlakte = (entre * between2) ;
oppervlakte2 = (oppervlakte / 10000) ;
////
buttonState = digitalRead(drukknop1) ;
buttonState2 = digitalRead(drukknop2) ;
buttonState3 = digitalRead(drukknop3) ;
Si (buttonState == HIGH) {}
digitalWrite (laser, haute) ;
Serial.println(distance) ;
LCD.backlight() ;
lcd.setCursor (0, 0) ;
LCD.Print(distance) ;
Delay(100) ;
LCD.Print ("cm") ;
Delay(100) ;
}
ElseIf (buttonState2 == HIGH) {}
Serial.println (entre) ;
LCD.backlight() ;
lcd.setCursor (0, 0) ;
LCD.Print(between) ;
Delay(100) ;
LCD.Print ("cm") ;
Delay(100) ;
}
ElseIf (buttonState3 == HIGH) {}
Serial.println (oppervlakte2) ;
Delay(1000) ;
LCD.backlight() ;
lcd.setCursor (0, 0) ;
LCD.Print (oppervlakte2) ;
Delay(100) ;
LCD.Print (« m2 ») ;
Delay(100) ;
}
else {}
Serial.println ("maak een keuze") ;
LCD.backlight() ;
lcd.setCursor (0, 0) ;
LCD.Print ("maak een keuze") ;
digitalWrite (laser, faible) ;
Delay(1000) ;
}
}
test_druk_knoppen.INO us_1.INO lcd_test.INO laser_test.INO NewPing.rar LiquidCrystal_I2C.zip final_code.INO