lud: (Default)
[personal profile] lud
Давно хотел сделать что нибудь этакое и вот приобрёл для экспериментов программируемый контроллер Arduino. После того как наморгался светодиодами, начал думать, что бы такое учудить с ним интересное. Всякие утилитарные изделия из него (типа автоматического полива цветов) отложил до лучших времён. И решил сделать из него роботомашинку.

Были куплены: разъём 2,5 мама, 2 резистора на 10К, интегральная микросхема L293D, два инфракрасных датчика GP2Y0D810Z0F, тумблер и готовое шасси ARX_CH09 (с двигателями и прочим). С помощью запчастей из конструктора это всё было собрано вот в такого монстрика.





Код программы:
const int ledPin =  13;     // номер выхода, подключенного к светодиоду
const int sensorPinL = 8;   // Левый датчик
const int sensorPinR = 4;   // Правый датчик
const int rMotPinF = 5;     // Правый мотор вперёд
const int rMotPinB = 6;     // Правый мотор назад
const int lMotPinF = 9;     // Левый мотор вперёд
const int lMotPinB = 10;    // Левый мотор назад

const int wR = 255;
const int wL = 200;
const int wH = 70;
int sensorStateL = 0;
int sensorStateR = 0;
boolean fr = true; // первый датчик сработал справа

void setup() {
  pinMode(sensorPinL, INPUT);
  pinMode(sensorPinR, INPUT);
  pinMode(lMotPinF, OUTPUT);
  pinMode(lMotPinB, OUTPUT);
  pinMode(rMotPinF, OUTPUT);
  pinMode(rMotPinB, OUTPUT);
  pinMode(ledPin, OUTPUT);     
}

int sensorState(){ // опрашиваем датчики
  sensorStateL = digitalRead(sensorPinL);
  sensorStateR = digitalRead(sensorPinR);
  if (sensorStateL == HIGH && sensorStateR == HIGH){return 1;} // впереди пусто
  if (sensorStateL == LOW && sensorStateR == HIGH){return 2;} // препятствие слева
  if (sensorStateL == HIGH && sensorStateR == LOW){return 3;} // препятствие справа
  if (sensorStateL == LOW && sensorStateR == LOW){return 4;} // впереди стена
}

int edem(int lp, int lf, int rf, int lb, int rb){ // включаем моторы
  analogWrite(ledPin, lp);
  analogWrite(lMotPinF, lf);
  analogWrite(rMotPinF, rf);
  analogWrite(lMotPinB, lb);
  analogWrite(rMotPinB, rb);
}
 
void loop(){
  switch (sensorState()){
    case 1: // едем вперёд
      edem(255,wL,wR,0,0);
      break;
    case 2: // едем вправо
      fr = false;
      edem(wH,wL,wH,0,0);      
      break;
    case 3: // едем влево
      fr = true;
      edem(wH,wH,wR,0,0);
      break;
    case 4: // останавливаемся и разворачиваемся
      if (fr) {
        edem(0,0,0,wL,0);
        delay(700);
        edem(0,0,wR,0,0);
        delay(700);
      }else{
        edem(0,0,0,0,wR);
        delay(700);
        edem(0,wL,0,0,0);
        delay(700);
      }
      break;
  }
}

Схема:



Ездим мы вот так:


Может ещё что нибудь потом сделаю.

Date: 2012-10-26 06:09 pm (UTC)
From: [identity profile] izhivi.livejournal.com
О, здорово!
У нас народ тоже много чего на Ардуине делает :о) из последнего - не знаю, как правильно называется, вертолетная такая площадка с 4мя пропеллерами по углам.
А машинку собирались делать, купили пластмассовую игрушку, чтоб внутрь начинку пристроить (движки, аккум, да ардуино), но что-то заглохло.

Date: 2012-10-27 05:35 am (UTC)
From: [identity profile] lud.livejournal.com
квадрокоптер. думаю как ни будь сделать потом такую штуку.
а пока ищу помпу от водяного охлаждения для компа, чтобы из неё сделать систему полива (на время отпуска или просто на время склероза)))

Date: 2012-10-27 02:02 pm (UTC)
From: [identity profile] izhivi.livejournal.com
Поливалку наши сделали. Только без помпы. Перевернутая бутылка, из нее шланг, на нем электромагнитный клапан (вроде бы), датчик влажности в земле горшков. Простецки.

Date: 2012-10-28 04:18 am (UTC)
From: [identity profile] lud.livejournal.com
Ага. Но самое сложное время найти и начать.

Date: 2012-10-27 05:52 pm (UTC)
From: [identity profile] unis.livejournal.com
Фигасе... всегда восхищался людьми, которые из плат, проводов, паяльника и программатора делали хитрые самодельные девайсы.

Date: 2012-10-28 04:19 am (UTC)
From: [identity profile] lud.livejournal.com
Я себе ещё Raspberry Pi купил ))

Date: 2012-10-28 07:43 am (UTC)
From: [identity profile] unis.livejournal.com
Погуглил, интересный девайс ) Что на нем планируешь поднять?

December 2012

S M T W T F S
      1
2345678
9101112131415
1617181920 2122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2017 08:39 pm
Powered by Dreamwidth Studios