Автомобильный пылесос, контроллер Arduino, несколько датчиков, мотор-редукторы с колёсами, драйвер двигателей (например — L293D) и батарея — вот и всё, что понадобится для сборки самодельного робота-пылесоса.
Программа робота-пылесоса
#define trigPin 12 #define echoPin 13 #define ir1 7 #define ir2 6 void setup() { Serial.begin(9600); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ir1, INPUT); pinMode(ir2,INPUT); } void loop() { int duration, distance; int flag,val1,val2; val1=digitalRead(ir1); val2=digitalRead(ir2); Serial.println(val1); Serial.println(val2); digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } delay(500); if (distance >=20) { delay(100); Serial.println("forward"); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW); delay(150); Serial.println("STOP"); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); } if (distance<=20) { if (val1==1 ) { Serial.print("turn right"); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW); delay(2000); } if (val2==1) { Serial.print("turn left"); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); delay(500); } } if(distance<=10) { Serial.print("rearrange back"); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,HIGH); delay(1000); Serial.print("rearranged left"); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW); delay(100); } if (distance<=20) { Serial.print("Algorithum"); Serial.print("free right"); digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); if(val2==0) { Serial.print("smart adjust"); digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); delay(500); } } }
Ссылки
DIY Smart Vacuum Cleaning Robot using Arduino
По теме
Самодельный робот-пылесос на базе Arduino
Робот пылесос - Часть1: Механика
Самодельный робот-пылесос v. 2.0. Часть 1: Корпус, турбина, механика
PANDA - самодельный робот-чистильщик на базе Arduino и 3D-печати
Разбираем робот-пылесос iRobot Roomba Sage 4110