Hättest du mal etwas Code mit dem man arbeiten kann?!
Und eventuell auch die Frage ob du richtig verdrahtet hast.
Werbung
Hättest du mal etwas Code mit dem man arbeiten kann?!
Und eventuell auch die Frage ob du richtig verdrahtet hast.
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
peinlich, peinlich... ich wollte eigentlich beides hochladen und habe es vergessen, aber ja klar, hier siehst du beides:
Code:
const int s0 = 53;
const int s1 = 52;
const int s2 = 51;
const int s3 = 50;
const int out = 40;
const int motor1 = 10;
const int motor2 = 11;
const int motor3 = 12;
const int motor4 = 13;
const int trigger = A1;
const int echo = A0;
float red=0,green=0,blue=0;
float redA[10], greenA[10], blueA[10];
float rav=0,gav=0,bav=0;
int counter;
int state=0;
unsigned long time=0;
int currentTime=0;
int previosTime=0;
void setup()
{
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(motor4,OUTPUT);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
// pinMode(irPin,INPUT);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
//Scaling to 20% frequency
digitalWrite(s0, HIGH);
digitalWrite(s1, LOW);
Serial.begin(9600);
}
int getDistance()
{
long distance=0;
long t=0;
digitalWrite(trigger,LOW);
delayMicroseconds(3);
noInterrupts();
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
t=pulseIn(echo,HIGH);
noInterrupts();
t=(t/2);
distance=(t/29.1);
return(distance);
}
void driveForward()
{
analogWrite(motor1,200);
analogWrite(motor4,223);
}
void driveBackward()
{
analogWrite(motor2,200);
analogWrite(motor3,223);
}
void turnLeft()
{
analogWrite(motor1,0);
analogWrite(motor4,200);
}
void turnRight()
{
analogWrite(motor1,200);
analogWrite(motor4,0);
}
void brake()
{
analogWrite(motor1,0);
analogWrite(motor2,0);
analogWrite(motor3,0);
analogWrite(motor4,0);
}
void loop()
{
int distance=getDistance();
Serial.println(distance);
if(distance<15)
{
turnRight();
// driveBackward();
}
else
{
driveForward();
}
Achtung nicht alle Variablen werden benutzt. Das liegt daran, dass ich nur den problematischen Code kopiert habe, alles andere läuft.
Und hier das Bild:
![]()
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
okay.
Code:const int s0 = 53; const int s1 = 52; const int s2 = 51; const int s3 = 50; const int out = 40; const int motor1 = 10; const int motor2 = 11; const int motor3 = 12; const int motor4 = 13; const int trigger = A1; const int echo = A0; float red=0,green=0,blue=0; float redA[10], greenA[10], blueA[10]; float rav=0,gav=0,bav=0; int counter; int state=0; unsigned long time=0; int currentTime=0; int previosTime=0; void setup() { pinMode(motor1, OUTPUT); pinMode(motor2, OUTPUT); pinMode(motor3, OUTPUT); pinMode(motor4,OUTPUT); pinMode(trigger, OUTPUT); pinMode(echo, INPUT); // pinMode(irPin,INPUT); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); //Scaling to 20% frequency digitalWrite(s0, HIGH); digitalWrite(s1, LOW); Serial.begin(9600); } int getDistance() { long distance=0; long t=0; digitalWrite(trigger,LOW); delayMicroseconds(3); noInterrupts(); digitalWrite(trigger,HIGH); delayMicroseconds(10); digitalWrite(trigger,LOW); t=pulseIn(echo,HIGH); noInterrupts(); t=(t/2); distance=(t/29.1); return(distance); } void driveForward() { analogWrite(motor1,200); analogWrite(motor4,223); } void driveBackward() { analogWrite(motor2,200); analogWrite(motor3,223); } void turnLeft() { analogWrite(motor1,0); analogWrite(motor4,200); } void turnRight() { analogWrite(motor1,200); analogWrite(motor4,0); } void brake() { analogWrite(motor1,0); analogWrite(motor2,0); analogWrite(motor3,0); analogWrite(motor4,0); } void loop() { int distance=getDistance(); Serial.println(distance); if(distance<15) { turnRight(); // driveBackward(); } else { driveForward(); } }
https://www.pic-upload.de/view-35155...tplan.jpg.html
- - - Aktualisiert - - -
Problem gelöst. Danke für die Hilfe.
Soweit ich das sehe, ist void brake() die einzige Stelle an der gegebene Fahrbefehle zurückgenommen werden.
Versuche doch einmal den Code wie unten anzupassen.
Da wird jeweils alle 4 Pins definiert. Damit werden vorhergehende Anweisungen auch zurückgenommen.
Code:void driveForward() { analogWrite(motor1,200); analogWrite(motor2,0); analogWrite(motor3,0); analogWrite(motor4,223); } void driveBackward() { analogWrite(motor1,0); analogWrite(motor2,200); analogWrite(motor3,223); analogWrite(motor4,0); } void turnLeft() { analogWrite(motor1,0); analogWrite(motor2,0); analogWrite(motor3,0); analogWrite(motor4,200); } void turnRight() { analogWrite(motor1,200); analogWrite(motor2,0); analogWrite(motor3,0); analogWrite(motor4,0); }
Lesezeichen