#define IMDX 3 #define IMSX 9 #define ddx 7 #define dsx 8 #define buzzer 2 #define fotorSX A0 #define fotorCE A1 #define fotorDX A2 #define pot A3 #define trig 4 #define echo 6 int sx=0; int ce=0; int dx=0; int posizione; int velocita; int distanza; int durata; int pros=0; void setup() { Serial.begin(9600); pinMode(fotorSX,INPUT); pinMode(fotorCE,INPUT); pinMode(fotorDX,INPUT); pinMode(IMSX,OUTPUT); pinMode(IMDX,OUTPUT); pinMode(dsx,OUTPUT); pinMode(ddx,OUTPUT); pinMode(buzzer,OUTPUT); pinMode(trig,OUTPUT); pinMode(echo,INPUT); } void loop() { posizione=analogRead(pot); Serial.println(posizione); velocita=map(posizione,0,1023,0,255); sx=analogRead(fotorSX); Serial.print("sx"); Serial.println(sx); delay(5); dx=analogRead(fotorDX); Serial.print("dx"); Serial.println(dx); delay(5); ce=analogRead(fotorCE); Serial.print("ce"); Serial.println(ce); delay(5); digitalWrite(trig,LOW); delayMicroseconds(2); digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW); durata=pulseIn(echo,HIGH); distanza=durata/58; if(distanza>=10) { if(ce>=sx&&ce>=dx&&ce>700) { digitalWrite(dsx,HIGH); digitalWrite(ddx,HIGH); analogWrite(IMSX,velocita); analogWrite(IMDX,velocita); delay(100); } if(sx>dx) { digitalWrite(dsx,HIGH); digitalWrite(ddx,HIGH); analogWrite(IMSX,0); analogWrite(IMDX,velocita); delay(100); } if(dx>sx) //O { digitalWrite(dsx,HIGH); digitalWrite(ddx,HIGH); analogWrite(IMSX,velocita); analogWrite(IMDX,0); delay(100); } if(ce>=sx && ce>=dx && ce<=700) { analogWrite(IMSX,0); analogWrite(IMDX,0); delay(100); } } if(distanza<10) { analogWrite(IMSX,0); analogWrite(IMDX,0); digitalWrite(buzzer,HIGH); delay(500); digitalWrite(buzzer,LOW); digitalWrite(dsx,LOW); digitalWrite(ddx,LOW); analogWrite(IMSX,velocita); analogWrite(IMDX,velocita); delay(1000); } }