• 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
Samochodzik z trybem auto :)
#1
Tongue 
Heeeja wszystkim Smile

Niedawno zaczęłam zabawę z arduino, nawet zrobiłam robota :Smile Tzn kupiłam kilka części i złożyłam bo program jest sklejką kilku inny z internetu :Smile Ale do rzeczy, jest do samochodzik sterowany zdalnie telefonem przez bt. Wszystko fajnie działa tak jak chciałam tylko jest problem z trybem "auto" :Sad  . Nie wiem dlaczego cały czas jedzie do przodu , jak dam ten kawałek kodu w pętli while to nie ma problemu i działa (czyli omija przeszkodę) ale jest problem z wyjściem bo naciskam stop na telefonie a robocik nie reaguje i cały czas działa w trybie auto .  Czy może mi ktoś poprawić to albo naprowadzić mnie :Tongue? (przyciski na telefonie na pewno są dobrze bo sprawdzałam w kilku innych  wariantachBig Grin

robot jest podobny do tego [Obrazek: robot_ikona.jpg]

a tu proszę cały kod

Kod:
#include <NewPing.h>  

#define TRIGGER_PIN 2
#define ECHO_PIN 3
#define MAX_DISTANCE 100

const int outPin = 5;
const int outPin2 = 6;
const int outPin3 = 11;
const int outPin4 = 10;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

unsigned int time;        
int distance;              
int triggerDistance = 30;    
int fDistance;            
int lDistance;
int rDistance;

void setup()
{
Serial.begin(9600);
pinMode(outPin, OUTPUT);  
pinMode(outPin2, OUTPUT);  
pinMode(outPin3, OUTPUT);  
pinMode(outPin4, OUTPUT);
}

void scan(){
time = sonar.ping();                
distance = time / US_ROUNDTRIP_CM;  
if(distance == 0){                  
 distance = 100;                  
}
delay(5);
}

void moveBackward(){
digitalWrite(outPin, LOW);
digitalWrite(outPin2, HIGH);
digitalWrite(outPin3, HIGH);
digitalWrite(outPin4, LOW);
}

void moveForward(){
digitalWrite(outPin, HIGH);
digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW);
digitalWrite(outPin4, HIGH);
}

void moveRight(){
digitalWrite(outPin, LOW);
digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW);
digitalWrite(outPin4, HIGH);
}

void moveLeft(){
digitalWrite(outPin, HIGH);
digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW);
digitalWrite(outPin4, LOW);
}

void moveStop(){
digitalWrite(outPin, LOW);
digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW);
digitalWrite(outPin4, LOW);
}


void loop()
{
  if (Serial.available()){
 char bt = Serial.read();

 if(bt == 'u'){            //do przodu
digitalWrite(outPin,HIGH);
digitalWrite(outPin2,LOW);
digitalWrite(outPin3,HIGH);
digitalWrite(outPin4,LOW);
 }
else if (bt == 'd'){       //do tyłu
digitalWrite(outPin,LOW);
digitalWrite(outPin2,HIGH);
digitalWrite(outPin3,LOW);
digitalWrite(outPin4,HIGH);
}
else if (bt == 's'){       //stop
digitalWrite(outPin,LOW);
digitalWrite(outPin2,LOW);
digitalWrite(outPin3,LOW);
digitalWrite(outPin4,LOW);
}
else if (bt == 'r'){       //prawo
digitalWrite(outPin,HIGH);
digitalWrite(outPin2,LOW);
digitalWrite(outPin3,LOW);
digitalWrite(outPin4,LOW);
}

 else if (bt == 'l'){       //lewo
digitalWrite(outPin,LOW);
digitalWrite(outPin2,LOW);
digitalWrite(outPin3,HIGH);
digitalWrite(outPin4,LOW);
 }
 else if (bt == 'e'){       //lewo w tym samym miejscu
digitalWrite(outPin,LOW);
digitalWrite(outPin2,HIGH);
digitalWrite(outPin3,HIGH);
digitalWrite(outPin4,LOW);
 }

 else if (bt == 'i'){       //prawo w tym samym miejscu
digitalWrite(outPin,HIGH);
digitalWrite(outPin2,LOW);
digitalWrite(outPin3,LOW);
digitalWrite(outPin4,HIGH);
 }

else if (bt == 'z') /// automatyczny
{
scan();                            
fDistance = distance;              
if(fDistance < triggerDistance){    
 moveBackward();              
 delay(1000);
 moveRight();                      
 delay(500);
 moveStop();                        
 scan();                          
 rDistance = distance;              
 moveLeft();
 delay(1000);                      
 moveStop();                      
 scan();                          
 lDistance = distance;            
 if(lDistance < rDistance){        
 moveRight();                  
 delay(200);
 moveForward();                
 }
 else{
 moveForward();                  
 }
}
else{
 moveForward();                  
}
}
}
}
[Obrazek: lpudoa819ca.png]
 
Odpowiedź
  


Wiadomości w tym wątku
Samochodzik z trybem auto :) - przez OnaTuJest - 05-07-2016, 15:17
RE: Samochodzik z trybem auto :) - przez adix - 05-07-2016, 23:28
RE: Samochodzik z trybem auto :) - przez OnaTuJest - 06-07-2016, 00:26
RE: Samochodzik z trybem auto :) - przez adix - 06-07-2016, 23:50
RE: Samochodzik z trybem auto :) - przez OnaTuJest - 07-07-2016, 13:50
RE: Samochodzik z trybem auto :) - przez mateqsz1990 - 11-07-2016, 13:33
RE: Samochodzik z trybem auto :) - przez OnaTuJest - 14-07-2016, 05:35
RE: Samochodzik z trybem auto :) - przez adix - 14-07-2016, 22:00

Skocz do:


Przeglądający: 1 gości