Quantcast
Channel: Arduino – Michał Szałkowski – Blog
Viewing all articles
Browse latest Browse all 9

Robot wykrywający przeszkody

$
0
0

//określamy, które piny sterują silnikami
//piny sterujące prędkością silników
int EN1 = 6;
int EN2 = 5;

//piny sterujące kierunkiem jazdy
int IN1 = 7;
int IN2 = 4;

int R = 1; //jazda do przodu
int F = 0; //jazda do tyłu

//pin pod który jest podłączony czujnik
int SEN1 = 8;

//funkcje sterujące silnikami – pwm określa prędkość, reverse kierunek
void Motor1(int pwm, boolean reverse) {
  analogWrite(EN1,pwm); //ustawia wypełnienie PWM: 0 - silnik zatrzymany, 255 - pełna prędkość
  if(reverse) {
    digitalWrite(IN1,HIGH);
  }else{
    digitalWrite(IN1,LOW);
  }
}

void Motor2(int pwm, boolean reverse) {
  analogWrite(EN2,pwm); //ustawia wypełnienie PWM: 0 - silnik zatrzymany, 255 - pełna prędkość
  if(reverse) {
    digitalWrite(IN2,HIGH);
  }else{
    digitalWrite(IN2,LOW);
  }
}

//dla drugiego silnika identycznie, tylko IN1 i EN1 zamienione są na IN2 i EN2

void setup(){
  int i;
  for(i=4;i    pinMode(i, OUTPUT);  //ustaw piny 4,5,6,7 jako wyjścia
  }
  pinMode(SEN1,INPUT); //pin pod który podłączono czujnik jako wejście
}

void loop() {
  boolean in_range;
  in_range = !digitalRead(SEN1); //aktywnym stanem czujnika IR jest 0
  //(znak '!' oznacza negację)
  if(in_range) {//jeśli wykryto przeszkodę
    Motor1(255,R);//jedź do tyłu
    Motor2(255,R);
    delay(1000); //przez sekundę
    Motor1(255,R); //skręcaj
    Motor2(255,F);
    delay(1000);//przez sekundę
  }
  else {//jeśli nie widać przeszkody
    Motor1(255,F); //jedź prosto
    Motor2(255,F);
  }
}

wystarczy zamontować inaczej czujnik i przestawić

in_range = !digitalRead(SEN1);

na

in_range = digitalRead(SEN1);

by nasz robot nie spadł z stołu

pomocne linki

Wątek na formum związany z wykorzystaniem Arduino w robotyce:

http://www.forbot.pl/forum/topics20/kurs-arduino-kurs-wykorzystania-w-robotyce-vt5354.htm

Dokumętacja podzespołów:

http://www.dfrobot.com/wiki/index.php?title=IO_Expansion_Shield_For_Arduino%28V5%29_%28SKU:_DFR0088%29

http://www.dfrobot.com/wiki/index.php?title=Arduino_Motor_Shield_%28L293%29_%28SKU:_DRI0001%29

inne:

http://www.shop.kristech.eu/index.php?cPath=92_79&language=EN

Przydatny program:

http://fritzing.org/download/

2 wersja programu

Zachowanie podobne jeśli przeszkoda jest nieruchoma. Jeśli jednak zbiliza się robot zaczyna się cofać. By było to bezpieczne potrzeba jeszcze jednej czujki z tyłu pojazdu, której na razie nie posiadam ;/

//określamy, które piny sterują silnikami
//piny sterujące prędkością silników
int EN1 = 6;
int EN2 = 5;

//piny sterujące kierunkiem jazdy
int IN1 = 7;
int IN2 = 4;

int R = 1; //jazda do przodu
int F = 0; //jazda do tyłu

//pin pod który jest podłączony czujnik
int SEN1 = 8;

//funkcje sterujące silnikami – pwm określa prędkość, reverse kierunek
void Motor1(int pwm, boolean reverse) {
  analogWrite(EN1,pwm); //ustawia wypełnienie PWM: 0 - silnik zatrzymany, 255 - pełna prędkość
  if(reverse) {
    digitalWrite(IN1,HIGH);
  }else{
    digitalWrite(IN1,LOW);
  }
}

void Motor2(int pwm, boolean reverse) {
  analogWrite(EN2,pwm); //ustawia wypełnienie PWM: 0 - silnik zatrzymany, 255 - pełna prędkość
  if(reverse) {
    digitalWrite(IN2,HIGH);
  }else{
    digitalWrite(IN2,LOW);
  }
}

//dla drugiego silnika identycznie, tylko IN1 i EN1 zamienione są na IN2 i EN2

void setup(){
  int i;
  for(i=4;i    pinMode(i, OUTPUT);  //ustaw piny 4,5,6,7 jako wyjścia
  }
  pinMode(SEN1,INPUT); //pin pod który podłączono czujnik jako wejście
}
int stan = 1;
void loop() {
  boolean in_range;
  in_range = !digitalRead(SEN1); //aktywnym stanem czujnika IR jest 0
  //(znak '!' oznacza negację)
  if(in_range) {//jeśli wykryto przeszkodę
    Motor1(255,R);//jedź do tyłu
    Motor2(255,R);
    stan = 0;
  }else {//jeśli nie widać przeszkody
    if(stan == 0){
      Motor1(255,R); //skręcaj
      Motor2(255,F);
      delay(500);//przez sekundę
      stan = 1;
    }
    Motor1(255,F); //jedź prosto
    Motor2(255,F);
  }
}

Viewing all articles
Browse latest Browse all 9

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Dino Rey para colorear


Libros para colorear


Mandalas de flores para colorear


Sapos para colorear


Renos para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Love Quotes Tagalog


Kahit may Toyo ka


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario


Gwapo Quotes : Babaero Quotes


Winx Club para colorear


Girasoles para colorear


Gato para colorear


Dibujos para colorear de perros


Dromedario para colorear


Long Distance Relationship Tagalog Love Quotes


Tagalog Love Facts About Men


RE: Mutton Pies (mely)


El Vibora (1971) by Francisco V. Coching and Federico C. Javinal





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC