So, seht mal her was dank eurer Hilfe entstanden ist:
https://www.youtube.com/watch?v=wcT9ApEAuvw(Sound ist leider etwas versetzt bei den Aufnahmen)
Werd ihn aufjedenfall nach und nach verbessern, mit mehr Sensoren
austatten, mehr KI. Irgendwas fällt einem ja immer ein!
Aber ich muss sagen: Die Platine zu löten, war der reinste Terror,
zumal ich mit dem Löten überhaupt keine Erfahrung hab, ich hab
wirklich 6 Stunden (mit Fehlersuche) gebraucht bis alles lief.
Fürchterlich, ich glaube ich werde nie wieder Lochrasterplatinen benutzen

Hier noch der Code:
Sobald ein Hinderniss auftaucht, schaut der Roboter einmal
nach links, einmal nach rechts und misst nochmal jeweils
den Abstand um herrauszufinden, ob es sich um
ein größeres Hinderniss handelt, oder ob er vorbei fahren kann!
int mState1 = 2;
int m1B = 28;
int m1A = 30;
int mState2 = 4;
int m2B = 32;
int m2A = 34;
int signal = 6;
int str = 0;
int sData = 0;
int gData = 0;
int cnt = 0;
int block = 0;
int forceAdd = 5;
void setup()
{
pinMode(mState1, OUTPUT);
pinMode(mState2, OUTPUT);
pinMode(signal, OUTPUT);
pinMode(str, INPUT);
pinMode(0, INPUT);
Serial.begin(9600);
}
void loop()
{
sData = analogRead(0);
// Serial.println(sData);
// delay(100);
if (sData > 400)
{
block = 1;
backward(25,240);
blocked();
}
if (block == 0)
forward(0, 40);
if (cnt == 1);
{
gData = Serial.read();
if (gData == 10)
forward(0,80);
if (gData == 20)
backward(0,80);
if (gData == 30)
left(0,80);
if (gData == 40)
right(0,80);
if (gData == 50)
hold(0);
delay(1);
}
}
void blocked()
{
tone(signal,500,50);
hold(2000);
left(200,50);
hold(1000);
sData = analogRead(0);
hold(1000);
if(sData > 250)
{
tone(signal,500,50);
right(300,50);
hold(1000);
sData = analogRead(0);
hold(2000);
if(sData > 250)
{
tone(signal,500,50);
left(200,50);
hold(1100);
backward(500,50);
hold(1500);
right(400,50);
hold(1000);
}
else
{
tone(signal,700,50);
delay(100);
tone(signal,700,50);
block = 0;
}
}
else
{
tone(signal,700,50);
delay(100);
tone(signal,700,50);
block = 0;
}
block = 0;
}
void forward(int time, int force)
{
analogWrite(mState1, force);
analogWrite(mState2, force + forceAdd);
digitalWrite(m1B, LOW);
digitalWrite(m2B, LOW);
digitalWrite(m1A, HIGH);
digitalWrite(m2A, HIGH);
delay(time);
}
void backward(int time, int force)
{
analogWrite(mState1, force);
analogWrite(mState2, force + forceAdd);
digitalWrite(m1B, HIGH);
digitalWrite(m2B, HIGH);
digitalWrite(m1A, LOW);
digitalWrite(m2A, LOW);
delay(time);
}
void hold(int time)
{
digitalWrite(m1B, LOW);
digitalWrite(m2B, LOW);
digitalWrite(m1A, LOW);
digitalWrite(m2A, LOW);
delay(time);
}
void left(int time, int force)
{
analogWrite(mState1, force);
analogWrite(mState2, force + forceAdd);
digitalWrite(m1B, LOW);
digitalWrite(m2B, HIGH);
digitalWrite(m1A, HIGH);
digitalWrite(m2A, LOW);
delay(time);
}
void right(int time, int force)
{
analogWrite(mState1, force);
analogWrite(mState2, force + forceAdd);
digitalWrite(m1B, HIGH);
digitalWrite(m2B, LOW);
digitalWrite(m1A, LOW);
digitalWrite(m2A, HIGH);
delay(time);
}