Ragazzi questa sera volevo consegnare il mio robottino fai da me a mia nipote come regalo per la befana
ma sbaglio qualche cosa nel codice potete aiutarmi? Il robot va in dietro e gira
Ho sempre usato sensori infrared per fare queste cose ma li avevo finiti così ho montato un HC-SR04
Ma sbaglio qualcosa!!!
// pin collegati a trigger ed echo del sensore a ultrasuoni
int pinTrig = 10;
int pinEcho = 11;
// durata dell'impulso echo in microsecondi
unsigned long durata;
// distanza dell'ostacolo in centimetri
int distanza;
// timeout della funzione pulseIn() in assenza di impulso echo
unsigned long timeout = 100000;
#define PWMA 3
#define PWMB 9
#define AIN1 4
#define AIN2 7
#define BIN1 8
#define BIN2 12
#define STBY 2
void setup(){
// imposto i pin del sensore
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
// Motori
pinMode( STBY,OUTPUT );
pinMode( PWMA,OUTPUT );
pinMode( PWMB,OUTPUT );
pinMode( AIN1,OUTPUT );
pinMode( AIN2,OUTPUT );
pinMode( BIN1,OUTPUT );
pinMode( BIN2,OUTPUT );
digitalWrite( STBY,HIGH );
}void loop()
{
int dist = analogRead(pinEcho);
if ( distanza < 15 ) { gira(); }
else { avanti(); }
}
void avanti()
{
digitalWrite( AIN1,HIGH );
digitalWrite( AIN2,LOW );
digitalWrite( BIN1,HIGH );
digitalWrite( BIN2,LOW );
analogWrite( PWMA,100 );
analogWrite( PWMB,100 );
}
void indietro()
{
digitalWrite( AIN1,LOW );
digitalWrite( AIN2,HIGH );
digitalWrite( BIN1,LOW );
digitalWrite( BIN2,HIGH );
analogWrite( PWMA,100 );
analogWrite( PWMB,100 );
}
void alt()
{
analogWrite( PWMA,50 );
analogWrite( PWMB,50 );
digitalWrite( AIN1,LOW );
digitalWrite( AIN2,LOW );
digitalWrite( BIN1,LOW );
digitalWrite( BIN2,LOW );
}
void gira()
{
// STOP x 1/2 sec
alt();
delay( 500 );
// INDIETRO x 1/2 secondo
indietro();
delay( 500 );
// STOP x 1/2 sec
alt();
delay( 500 );
// Gira
digitalWrite( AIN1,LOW );
digitalWrite( AIN2,HIGH );
digitalWrite( BIN1,HIGH );
digitalWrite( BIN2,LOW );
analogWrite( PWMA,100 );
analogWrite( PWMB,100 );
delay( 200 );
}