Afgerond Robot project.

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 11
Geregistreerd: 23 Dec 2016, 14:35

Afgerond Robot project.

Berichtdoor maxgrin » 26 Dec 2016, 22:24

Hoi, Ik ben de laatste paar dagen(4) bezig geweest met een robot. Hij heeft twee functies die je met een pot meter aan kunt geven. auto_mode en manual_mode. Bij auto_mode gaat hij zelf rondrijden en ontwijkt hij obstakels. In manual_mode kun je hem besturen met een afstandsbediening.
Hier is mijn code:
Code: Alles selecteren
#define Green 24
#define Red 25
#define TRIGGER_PIN 22
#define ECHO_PIN 23
#define MAX_DISTANCE 400
#include <AFMotor.h>
#include <IRremote.h>
#include <NewPing.h>
int IRpin = 44;
int PotPin = A8;
int mode;
IRrecv irrecv(IRpin);
decode_results results;
AF_DCMotor motorR(1);
AF_DCMotor motorL(2);
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
  irrecv.enableIRIn();
  Serial.begin(9600);
  motorR.setSpeed(100);
  motorL.setSpeed(103);
  pinMode(Green, OUTPUT);
  pinMode(Red, OUTPUT);
pinMode(PotPin, INPUT);
}

void loop() {
checkMode();
}

void Forward() {
  motorR.run(FORWARD);
  motorL.run(FORWARD);
}
void Backward() {
  motorR.run(BACKWARD);
  motorL.run(BACKWARD);
  delay(250);
}

void Right() {
  motorL.run(BACKWARD);
  motorR.run(FORWARD);
  delay(375);
}

void Left() {
  motorL.run(FORWARD);
  motorR.run(BACKWARD);
  delay(375);
}
void Brake() {
  motorR.run(RELEASE);
  motorL.run(RELEASE);
  delay(100);
}

void auto_mode() {
int dist = sonar.ping_median(5);
dist = sonar.convert_cm(dist);
  if (dist < 35 & dist != 0) {
 Brake();
    digitalWrite(Green, LOW);
    digitalWrite(Red, HIGH);
    Backward();
    Brake();
    Right();
  }
  else {
    Forward();
  }
  }
 


void manual_mode() {
  if (irrecv.decode(&results)) {
   
    Serial.print("irCode: ");           

    Serial.print(results.value, HEX);

    Serial.print(",  bits: ");           

    Serial.println(results.bits);

    irrecv.resume(); 
  }
delay(10);
  if (results.value == 0xC796DFC || results.value == 0xB10C7C8B) {
    Forward();
  } else if (results.value == 0xDB510F56) {
    Backward();
  }
  else if(results.value == 0x4B12992B|| results.value == 0x7E16B93A){
   
  motorL.run(BACKWARD);
  motorR.run(FORWARD);
    delay(375);
    results.value == 0xC796DFC;
    delay(10);
  }
  else if(results.value == 0x1BE8C80D || results.value == 0x8ECEA106 || results.value == 0xC2A82EEA
){
 
    motorR.run(BACKWARD);
  motorL.run(FORWARD);
    delay(375);
results.value == 0xC796DFC;
delay(10);
  } 
   else if(results.value == 0xEFF8316D|| results.value == 0xF4704794){
   Brake();
  }
  else if(results.value == 0x37FF1DB2 || results.value == 0xE5EDF8D7){
   Right();
}
}

void checkMode(){
  mode = analogRead(PotPin);
  if(mode <= 512){
    manual_mode();
  }
  else if(mode >= 513){
    auto_mode();
  }
 
 
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Afgerond Robot project.

Berichtdoor shooter » 28 Dec 2016, 21:44

maak een filmpje ervan, altijd leuk om te kijken.
het is dus gelukt met je rechtsaf!
paul deelen
shooter@home.nl

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten