• 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 :)
#2
Po pierwsze zrobił bym minimalizacje kodu czyli nie powtarzał bym funkcji np przód, tył.(mam na mysli ta czesc kodu
Kod:
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);
}
Zrobił bym 4 pod programy do przodu, do tył ,prawo ,lewo .
Połącz do serial monitora i wstaw mi odczyt w tym miejscu co ci drukuje
Kod:
scan();                            
fDistance = distance;  
Serial.println(fDistance);          
if(fDistance < triggerDistance){    
moveBackward();              
delay(1000);
moveRight();                      
delay(500);
moveStop();                        
scan();                          
rDistance = distance;              
moveLeft();
delay(1000);                      
moveStop();                      
scan();                          
lDistance = distance;



oraz spróbuj ten 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;  
}  else{
moveForward();                  
}

        
if(lDistance < rDistance){        
moveRight();                  
delay(200);
moveForward();                
}


else{
moveForward();                  
}
}
}
}
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
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: 2 gości