Stap 2: De Code
De code
In de codes wordt gebruik gemaakt van de extra Liberty. zonder deze zal het LCD-scherm niet werken nl couette de ultrasone sensoren een stuk minder nauwkeurig zijn.
Code voor de ultrasone sensor:
#define echoPin 13
#define trigPin 12
#include
NewPing sonar (12, 13, 200);
VOID Setup
{
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
Serial.begin(9600);
}
void loop {}
int duur, afstand;
digitalWrite (trigPin, laag);
delayMicroseconds(2);
digitalWrite (trigPin, hoge);
delayMicroseconds(10);
digitalWrite (trigPin, laag);
duur = pulseIn (echoPin, hoge);
afstand = (duur / 2) / 29.1;
Serial.println(distance);
vertraging (1000);
}
Code voor het LCD-scherm:
#include
#include / / bibliotheek voor lcd
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positieve);
VOID Setup
{
Serial.begin(9600);
LCD.begin (16, 2);
for (int i = 0; ik < 3; i ++);
{
LCD.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
}
void loop {}
LCD.backlight();
lcd.setCursor (0, 0);
LCD.Print ("Halo wereld: P"); afstand is onjuist maar wordt wel op lcd geprint
}
Code voor de drukknoppen:
#define drukknop1 13
#define drukknop2 12
#define drukknop3 8
int buttonState = 0;
int buttonState2 = 0;
int buttonState3 = 0;
VOID Setup
{
pinMode (drukknop1, INPUT);
pinMode (drukknop2, INPUT);
pinMode (drukknop3, INPUT);
Serial.begin(9600);
}
void loop {}
buttonState = digitalRead(drukknop1);
buttonState2 = digitalRead(drukknop2);
buttonState3 = digitalRead(drukknop3);
else if (buttonState == HIGH) {}
Serial.println ("button1 ingedrukt");
}
else if (buttonState2 == HIGH) {}
Serial.println ("button2 ingedrukt");
}
else if (buttonState2 == HIGH) {}
Serial.println ("button3 ingedrukt");
}
vertraging (1000);
}
Code voor de laser:
VOID Setup
{
pinMode (13, OUTPUT);
}
void loop
{
digitalWrite (13, hoge);
delay(10000);
digitalWrite (13, laag);
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 0x27 / / I2C adres voor de PCF8574A definiëren
#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);
int buttonState = 0;
int buttonState2 = 0;
int buttonState3 = 0;
VOID Setup
{
pinMode (drukknop1, INPUT);
pinMode (drukknop2, INPUT);
pinMode (drukknop3, INPUT);
Serial.begin(9600);
/////////
pinMode (laser, uitvoer);
Serial.begin (9600);
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode (trigPin2, OUTPUT);
pinMode (echoPin2, INPUT);
pinMode (trigPin3, OUTPUT);
pinMode (echoPin3, INPUT);
pinMode (trigPin4, OUTPUT);
pinMode (echoPin4, INPUT);
lcd.setBacklightPin (BACKLIGHT_PIN, positieve);
lcd.setBacklight(HIGH);
Serial.begin(9600);
LCD.begin (16, 2);
for (int i = 0; ik < 3; i ++);
{
LCD.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
}
void loop {}
lange duur, afstand, Duur2, distance2, tussen, Duur3, distance3, veld Duur4, distance4, between2, oppervlakte, oppervlakte2;
Ultrasone 1
digitalWrite (trigPin, laag);
delayMicroseconds(2);
digitalWrite (trigPin, hoge);
delayMicroseconds(10);
digitalWrite (trigPin, laag);
duur = pulseIn (echoPin, hoge);
afstand = (duur / 2) / 29.1;
Ultrasone 2
digitalWrite (trigPin2, laag);
delayMicroseconds(2);
digitalWrite (trigPin2, hoge);
delayMicroseconds(10);
digitalWrite (trigPin2, laag);
veld Duur2 = pulseIn (echoPin2, hoge);
distance2 = (Duur2 / 2) / 29.1;
tussen = afstand + distance2 + 18; afstand tussen us1 nl us2
Ultrasone 3
digitalWrite (trigPin3, laag);
delayMicroseconds(2);
digitalWrite (trigPin3, hoge);
delayMicroseconds(10);
digitalWrite (trigPin3, laag);
veld Duur3 = pulseIn (echoPin3, hoge);
distance3 = (Duur3 / 2) / 29.1;
Ultrasone 4
digitalWrite (trigPin4, laag);
delayMicroseconds(2);
digitalWrite (trigPin4, hoge);
delayMicroseconds(10);
digitalWrite (trigPin4, laag);
veld Duur4 = pulseIn (echoPin4, hoge);
distance4 = (veld Duur4 / 2) / 29.1;
between2 = distance3 + distance4 + 18; afstand tussen ons 3 nl ons 4
oppervlakte = (tussen * between2);
oppervlakte2 = (oppervlakte / 10000);
////
buttonState = digitalRead(drukknop1);
buttonState2 = digitalRead(drukknop2);
buttonState3 = digitalRead(drukknop3);
Als (buttonState == HIGH) {}
digitalWrite (laser, hoge);
Serial.println(distance);
LCD.backlight();
lcd.setCursor (0, 0);
LCD.Print(distance);
delay(100);
LCD.Print ("cm");
delay(100);
}
else if (buttonState2 == HIGH) {}
Serial.println (tussen);
LCD.backlight();
lcd.setCursor (0, 0);
LCD.Print(between);
delay(100);
LCD.Print ("cm");
delay(100);
}
else if (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, laag);
delay(1000);
}
}