funzioni:
// FUNZIONI DI MOVIMENTO
void avanti()
{
servo_ruota_destra.write(180);
servo_ruota_sinistra.write(0);
}
void indietro()
{
servo_ruota_destra.write(0);
servo_ruota_sinistra.write(180);
}
void destra()
{
servo_ruota_destra.write(0);
servo_ruota_sinistra.write(0);
}
void sinistra()
{
servo_ruota_destra.write(180);
servo_ruota_sinistra.write(180);
}
void fermo()
{
servo_ruota_destra.write(90);
servo_ruota_sinistra.write(91);
}
// FUNZIONE AUTO-LIGHT
void auto_light()
{
if(luce > 900) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
}
// FUNZIONE EVITA OSTACOLI
void funzione_start() {
lcd.clear();
lcd.print("5");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C4);
delay(500);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
noTone(piezo);
delay(500);
lcd.clear();
lcd.print("4");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C4);
delay(500);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
noTone(piezo);
delay(500);
lcd.clear();
lcd.print("3");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C4);
delay(500);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
noTone(piezo);
delay(500);
lcd.clear();
lcd.print("2");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C4);
delay(500);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
noTone(piezo);
delay(500);
lcd.clear();
lcd.print("1");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C4);
delay(500);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
noTone(piezo);
delay(500);
lcd.clear();
lcd.print("START!");
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
digitalWrite(b, LOW);
tone(piezo, NOTE_C5);
delay(1000);
noTone(piezo);
funzione_evita_ostacoli = 1;
lcd.clear();
lcd.print("FUNZIONE ATTIVA:");
lcd.setCursor(0, 1);
lcd.print("-EVITA OSTACOLI-");
}
void funzione_stop() {
lcd.clear();
lcd.print("STOP!");
funzione_evita_ostacoli = 0;
fermo();
delay(200);
tone(piezo, NOTE_C5);
delay(200);
noTone(piezo);
tone(piezo, NOTE_C4);
delay(200);
noTone(piezo);
delay(200);
lcd.clear();
lcd.print(nome);
lcd.setCursor(0, 1);
lcd.print(versione);
digitalWrite(b, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
}
void evita_ostacoli()
{
int distanza = ping();
if (distanza > distanza_ostacolo) {
avanti();
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
digitalWrite(b, LOW);
}
else {
lcd.clear();
lcd.print("OSTACOLO");
lcd.setCursor(0, 1);
lcd.print("RILEVATO!");
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
fermo();
servo_ultrasuoni.write(30);
delay(300);
rightDistance = ping();
delay(400);
servo_ultrasuoni.write(150);
delay(300);
leftDistance = ping();
delay(400);
servo_ultrasuoni.write(90);
delay(200);
compareDistance();
}
}
void compareDistance()
{
if (leftDistance>rightDistance)
{
lcd.clear();
lcd.print("OSTACOLO A:");
lcd.setCursor(0, 1);
lcd.print("DESTRA!");
indietro();
delay(300);
destra();
delay(300);
fermo();
delay(200);
}
else if (rightDistance>leftDistance)
{
lcd.clear();
lcd.print("OSTACOLO A:");
lcd.setCursor(0, 1);
lcd.print("SINISTRA!");
indietro();
delay(300);
sinistra();
delay(300);
fermo();
delay(200);
}
else {
lcd.clear();
lcd.print("FUNZIONE ATTIVA:");
lcd.setCursor(0, 1);
lcd.print("-EVITA OSTACOLI-");
}
}
// DISPLAY SERIALE
void SerialTextDisplay() {
if (bluetooth.available()) {
TextLCD = bluetooth.read();
ContenutoTextLCD.concat(TextLCD);
if (ContenutoTextLCD != "") {
lcd.clear();
lcd.print(ContenutoTextLCD);
}
}
else {
ContenutoTextLCD="";
}
}