• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z dodaniem krańcówek do projektu.
#1
Witam
Robię pewien projekt robota sprzątającego i mam pewien problem z kodem.Jest to robot jeżdżący na dwóch kołach+trzecie nieelektroniczne podtrzymujące całością struje arduino uno z motor shieldem  l293d do tego mam podpięty czujnik odległości HC-SR04 i tu wszystko działa jak należy ale mam problem bo chciałem dołożyć dwie krańcówki te zwykłe z blaszką podpięte mam je do wyjścia A5 i A4  i nie wiem jak dopisać je do tego kodu co poniżej prosiłbym o pomoc jak to ogarnąć w pisaniu sketchy jestem laikiem. Z góry dziękuje za pomoc.    

Kod:
#include <AFMotor.h>

AF_DCMotor motor1(3); //M3 - motor lewy
AF_DCMotor motor2(2); //M2 - motor prawy

#define echoPin A1 // Echo Pin = Analog Pin A1
#define trigPin 9 // Trigger Pin = Digital Pin 9 - Servo 2
#define LEDPin 13 // Onboard LED

long duration; // Duration used to calculate distance
long HR_dist=0; // Calculated Distance
int minimumRange=5; //Minimum Sonar range
int maximumRange=200; //Maximum Sonar Range


void setup() {

Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)

motor1.setSpeed(250);//prędkość silnika lewego
motor1.run(FORWARD);//silnik lewy domyślnie do przodu
motor2.setSpeed(255);//prędkość silnika prawego
motor2.run(FORWARD);//silnik prawy domyślnie do przodu

}

void loop() {

motor1.run(FORWARD); //silnik lewy M3 do przodu
motor2.run(FORWARD);//silnik prawy M2 do przodu
getDistance();{
 }
}
void getDistance(){

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
HR_dist = duration/58.2;

if (HR_dist >= maximumRange || HR_dist <= minimumRange){

Serial.println("0");
digitalWrite(LEDPin, HIGH);

} else {

Serial.println(HR_dist);
digitalWrite(LEDPin, LOW);


if (HR_dist <=30 ){//jeżeli robot jest w odległości od przeszkody <=30

motor1.run(RELEASE);//silnik lewy bieg jałowy
motor2.run(RELEASE);//silnik prawy bieg jałowy
delay (500);//przez pół sekundy

motor1.run(BACKWARD);//silnik lewy do tyłu
motor2.run(BACKWARD);//silnik prawy do tyłu
delay (700);//przez 0,7 sekundy

motor1.run(RELEASE);// silnik lewy bieg jałowy
motor2.run(RELEASE);// silnik prawy bieg jałowy
delay(500); //przez pół sekundy

motor1.run(FORWARD);//silnik lewy do przodu |robot skręca w prawo
motor2.run(RELEASE);//silnik prawy bieg jałowy |
delay (500);//przez pół sekundy

}

}

}
 
Odpowiedź
#2
Krańcówki programujesz jak przyciski, mogą być też z przerwaniem zewnętrznym. Jest to podstawowa umiejętność, także polecem zapoznać się z jakimś kursem, np. tu: https://forbot.pl/blog//kurs-arduino-pod...rsu-id5290 .
 
Odpowiedź
#3
Temat do zamknięcia poradziłem sobie. Pozdrawiam
 
Odpowiedź
#4
W kursie znajdziesz przykłady, w arduino też są przykłady. Kiepsko szukasz. Na forum też są przykłady.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości