aiuto su uno sketch su arduino

volevo chiedere un piccolo aiuto su uno sketch di mia creazione per paura di bruciacchiare qualcosa, non si sa mai, magari non succede niente…

In poche parole questo robot dovrebbe camminare e schivare ostacoli proseguendo dove c’è più spazio. Inoltre io ho cercato di incorporare a questo sketch uno schermo LCD dovrebbe attivarsi a seconda dei rilevamenti del sensore ad ultrasuoni che comanda anche lo sterzo.
Il tutto è motorizzato da 2 motori DC controllati da un doppio ponte H collegato ad arduino.

long duration;
long dursx;
long durdx; 
const int en1 = 11; //pin enable
const int en2 = 9;
const int m1fd = 4; //controlli motore
const int m2fd = 7;
const int m1bk = 2;
const int m2bk = 6;
const int pinping = 13; //pin sensore distanza
const int sterzo = 600; //durata dello sterzo
const int distanza = 500; //distanza minima ostacoli
int motore1 = 67;//pwm motore dx
int motore2 = 74;//pwm motore sx
/*
LiquidCrystal Library - Hello Worl
const int LCD RS pin to digital pin 12
const int LCD Enable pin to digital pin 10
const int LCD D4 pin to digital pin 3
const int LCD D5 pin to digital pin 8
const int LCD D6 pin to digital pin 5
const int LCD D7 pin to digital pin 1
const int LCD R/W pin to ground
const int 10K resistor:
const int ends to +5V and ground
const int wiper to LCD VO pin (pin 3)
*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 10, 3, 8, 5, 1);

void setup() {
 pinMode(m1fd, OUTPUT);
 pinMode(m1bk, OUTPUT);
 pinMode(m2fd, OUTPUT);
 pinMode(m2bk, OUTPUT);
 pinMode(en1, OUTPUT);
 pinMode(en2, OUTPUT);
 analogWrite(en1,motore1);
 analogWrite(en2,motore2);
 dritto();
// set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Sono,Porcibot,.,.,.,sterminare!");
 }

void loop() {
 if (echo() < distanza){ //trovato un ostacolo
  analogWrite(en1,170);
  analogWrite(en2,170);
  ferma();
  sinistra();
  delay(sterzo);
  ferma();
  dursx = echo(); //guarda a sinistra
  destra();
  delay(sterzo*2);
  ferma();
  durdx = echo(); //guarda a destra
  if (dursx < distanza && durdx < distanza){
    destra();
    delay(sterzo);
  } else if (dursx > durdx) {
    sinistra();
    delay(sterzo*2);
  } //sceglie dove c'è più spazio
  dritto();
  analogWrite(en1,motore1);
  analogWrite(en2,motore2);
 }
}

void dritto() {
 digitalWrite(m1bk,LOW);
 digitalWrite(m2bk,LOW);
 digitalWrite(m2fd,HIGH);
 digitalWrite(m1fd,HIGH);   
 // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Sono,Porcibot,.,.,.,sterminare!");
}

void rovescia() {
 digitalWrite(m1fd,LOW);
 digitalWrite(m2fd,LOW);
 digitalWrite(m1bk,HIGH);
 digitalWrite(m2bk,HIGH);
// set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Stò,effettuando,un,inversione,di,marcia!");
}

void destra() {
 digitalWrite(m1fd,LOW);
 digitalWrite(m2fd,HIGH);
 digitalWrite(m1bk,HIGH);
 digitalWrite(m2bk,LOW);
// set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("girare,a,destra!");
}

void sinistra() {
 digitalWrite(m1fd,HIGH);
 digitalWrite(m2fd,LOW);
 digitalWrite(m1bk,LOW);
 digitalWrite(m2bk,HIGH);
// set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("girare,a,sinistra!");
}

void ferma() {
 digitalWrite(m1fd,LOW);
 digitalWrite(m2fd,LOW);
 digitalWrite(m1bk,LOW);
 digitalWrite(m2bk,LOW);
 delay(50);
 // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Spostati,ho,fretta!");


}

long echo() {
 pinMode(pinping, OUTPUT);
 digitalWrite(pinping, LOW);
 delayMicroseconds(2);
 digitalWrite(pinping, HIGH);
 delayMicroseconds(5);
 digitalWrite(pinping, LOW);
 pinMode(pinping, INPUT);
 duration = pulseIn(pinping,HIGH);
 return duration;
}

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

  1. Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare, altrimenti una parte può non essere visualizzata

  2. il cross-posting è VIETATO
    http://forum.arduino.cc/index.php?topic=256489.msg1813978#msg1813978

  3. nella sezione inglese devi fare domande in inglese e non in italiano

  4. e la domanda dove stà? Hai postato un codice e spiegato a parole come hai collegato le cose.
    Ma non c'e' nessuna domanda. :fearful:

mi scuso davvero molto,soprattutto per i doppi massaggi, poichè e stato un errore,infatti credendo che non fosse stato inviatone ho mandato un altro, inoltre grazie dei link.
sono nuovo ed è la mia prima volta con un forum e arduino, grazie dei tuoi consigli.

Non usare il pin 1 per il display. Usa uno dei pin analogici che possono essere usati come digitali. Prendono il nuero da 14 a 19 ( A0 a A5)

Se non colleghi un uscita con un altra uscita non dovrebbe rompersi niente.

Ciao Uwe

potresti mandarmi uno schema :sweat_smile:

comunque per il resto va tutto bene ????

fa niente ho capito XD