Делаю робота. От простого к "посложнее".
- Войдите на сайт для отправки комментариев
Всем привет!
Решил сделать робота который-бы ездил по дому и охранял его.
Я - новичок, оговорюсь. По=этому буду потихо свои достижения тут выкладывать и слушать советы "бывалых" и отвечать на вопросы интересующихся. Ибо, если я буду делать без компании, то очень быстро мне это надоест, а так и мне веселее и может, кому пригодится моя работа. Собираюсь поставить на тележку PIR детекторы и ультразвуковые датчики расстояния. Тележка имеется, датчики заказал на аукционе (они в пути). Драйвер моторов имеется L293DNE.
Для начала на макетку поставил два двухцветовых светодиода и написал тестовую программу. По ней робот должен двигаться в цикле вперёд, назад, влево, вправо. Скетч прилагаю, а также видео. Если кому-то это интересно, то буду рад компании! Итак, ВПЕРЁД!!!
// Определяем какие пины за что отвечают const int RUN = 37; // ШИМ для моторов const int LM1 = 11; // Левый мотор 1 контакт const int LM2 = 10; // Левый мотор 2 контакт const int RM1 = 9; // Правый мотор 1 контакт const int RM2 = 8; // Правый мотор 2 контакт void setup() { pinMode(LM1, OUTPUT); pinMode(LM2, OUTPUT); pinMode(RM1, OUTPUT); pinMode(RM2, OUTPUT); pinMode(RUN, OUTPUT); } //------------------STOP--------------------- void stop_motors() // Функция остановки моторов { digitalWrite(LM1, LOW); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, LOW); } //---------------FORWARD----------------------- void forward() // Функция движения ВПЕРЁД { digitalWrite(LM1, LOW); digitalWrite(LM2, HIGH); digitalWrite(RM1, LOW); digitalWrite(RM2, HIGH); } //----------------BACK------------------------ void back() // Функция движения НАЗАД { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } //----------------LEFT------------------------ void left() // Функция поворота ВЛЕВО { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, HIGH); } //----------------RIGHT------------------------ void right() Функция поворота ВПРАВО { digitalWrite(LM1, LOW); digitalWrite(LM2, HIGH); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } //------------------------------------------- void loop() { forward(); // ВПЕРЁД delay(1000); back (); // НАЗАД delay(1000); left(); // В ЛЕВО delay(1000); right(); // В ПРАВО delay(1000); stop_motors(); // СТОП delay(2000); }
Вот видео без драйвера: http://www.youtube.com/watch?v=XK_b3bJ1TPQ
А вот уже с драйвером: http://www.youtube.com/watch?v=aRylWQwvSY0&context=C3fe4e09ADOEgsToPDskLkv4-01fw8Nb1rEkKhbZG9
Дальше планирую сделать управление через ШИМ, что б робот плааавно двигался. Я года два назад соорудил тележку с фотодатчиками. Она двигалась на свет. Так дети мои поначалу её как огня боялись, ибо она при обнаружении света от фонарика, как дурная рвала с места, на свет. Чуть не прыгала. Детвора отрывалась по-полной, играли, как с собачкой.
Здорово. А какие моторчики будут?
[quote=polk]
Здорово. А какие моторчики будут?
Платформа такая. На моторчиках ничего не написано. Китай.
Сделал ШИМ на начало движения вперёд:
Вот видео:
http://www.youtube.com/watch?v=jEF8MX02m7c&list=UUnrcjWJbcYI_G7uu9_dXnTQ...
[quote=AVL4ARDUINO]
Всем привет!
Решил сделать робота который-бы ездил по дому и охранял его.
Я - новичок, оговорюсь. По=этому буду потихо свои достижения тут выкладывать и слушать советы "бывалых" и отвечать на вопросы интересующихся. Ибо, если я буду делать без компании, то очень быстро мне это надоест, а так и мне веселее и может, кому пригодится моя работа. Собираюсь поставить на тележку PIR детекторы и ультразвуковые датчики расстояния. Тележка имеется, датчики заказал на аукционе (они в пути). Драйвер моторов имеется L293DNE.
Для начала на макетку поставил два двухцветовых светодиода и написал тестовую программу. По ней робот должен двигаться в цикле вперёд, назад, влево, вправо. Скетч прилагаю, а также видео. Если кому-то это интересно, то буду рад компании! Итак, ВПЕРЁД!!!