Roomba

Características del roomba:

Roomba en Tinckercad
  1. Hecho con Arduino

  2. Simulado en Tinkercad

  3. Diseño innovador

Código del Roomba

int MA1=11;
int MA2=10;
int MB1=6;
int MB2=5;

const int pingPin = 3;  // pin connected to Echo Pin in the ultrasonic distance sensor
const int trigPin  = 2; // pin connected to trig Pin in the ultrasonic distance sensor

void setup() {
  // put your setup code here, to run once:
pinMode(MA1,OUTPUT);
pinMode(MA2,OUTPUT);
pinMode(MB1,OUTPUT);
pinMode(MB2,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(pingPin,INPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
int cm = ping(pingPin) ; 
  if (cm >= 100){
  analogWrite(MA1,150);
  analogWrite(MA2,0);
  analogWrite(MB1,200);
  analogWrite(MB2,0);
  }
  if(cm < 100){
  analogWrite(MA1,0);
  analogWrite(MA2,0);
  analogWrite(MB1,0);
  analogWrite(MB2,0);
  delay(1000);
  analogWrite(MA1,150);
  analogWrite(MA2,0);
  analogWrite(MB1,0);
  analogWrite(MB2,200);
  delay(500);
  analogWrite(MA1,0);
  analogWrite(MA2,0);
  analogWrite(MB1,0);
  analogWrite(MB2,0);
  delay(1000);
  }
  delay(50);
}
int ping(int pingPin) 
{ 
   // establish variables for duration of the ping, 
   // and the distance result in inches and centimeters: 
   long duration, cm; 
   // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. 
   // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: 
   pinMode(trigPin, OUTPUT); 
   digitalWrite(trigPin, LOW); 
   delayMicroseconds(2); 
   digitalWrite(trigPin, HIGH); 
   delayMicroseconds(5); 
   digitalWrite(trigPin, LOW); 

   pinMode(pingPin, INPUT); 
   duration = pulseIn(pingPin, HIGH); 

   // convert the time into a distance 
   cm = microsecondsToCentimeters(duration); 
   return cm ; 
}
long microsecondsToCentimeters(long microseconds) 
{ 
   // The speed of sound is 340 m/s or 29 microseconds per centimeter. 
   // The ping travels out and back, so to find the distance of the 
   // object we take half of the distance travelled. 
   return microseconds / 29 / 2; 
}