Hättest du mal etwas Code mit dem man arbeiten kann?!
Und eventuell auch die Frage ob du richtig verdrahtet hast.
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:
![]()
PS pack den code bitte in sog. code-tags, also "[ C O D E ] dein code [ / C O D E ]" ... nur ohne die leerzeichen dann wird der code umformatiert und ist besser lesbar
und das bild ist irgendwie kaum lesbar, keine ahnung ob beim hochladen umskalliert worden ist
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