Hallo,
mit dem simple "CARSYSTEM" bin ich etwas weitergekommen.
Es funktioniert so schon ausreichend. Ich gebe die Geschwindigkeit des Autos (1:87) mit der PWM vor.
Der Motor ist ja sehr klein. So wie diese Rüttelmotoren aus den Handys. Zur Entstörung habe ich 2x 1nF von den Kontakten zum Gehäuse und 100nF parallel zum Motor gelegt. Das reichte aber noch nicht. Mit 1µF paralolel geht es so lala. Sonst bootet der ATtiny ständig neu. Man sieht das auch ganz gut am Oszi.
Wenn noch Platz ist, kann ich auch einen Elko nehmen.
Wie binde ich jetzt den 2. threshold ein.
Wenn der 1. threshold erreicht wird, bleibt das Auto für eine Zeit mit Warnblinker stehen, und fährt dann wieder los.
Dieses entspräche dem, dass das vorfahrende Auto anhält.
Wenn das vorfahrende Auto nur zu langsam ist, soll das hintere Auto nur eine Zeitlang langsamer fahren.
Bei einer 2. if Abfrage fällt mir kein else ein. Aber das ist wohl der total falsche Weg.
Leider passen die IR Projekte nicht.(1:87).Code:const int halPin = A1; // Analog Hallsensor SS39ET #define speedM 0 //erklärung das PWM an 0 int threshold_1 = 570; // 560Schwellwert -Ausprobiert int threshold_2 = 700; // Stop Grenzwert const int blinkPin = 1; //Warnblinker void setup() { pinMode(0, OUTPUT); pinMode(speedM, OUTPUT); pinMode(1, OUTPUT); } void MotorControl(int M_SPEED)//läuft außerhalb des Loop { analogWrite(speedM, M_SPEED); //Der Ausgang wird aktiviert } void loop() { int val ; int Volt;//Irgendwie muß das ja heißen val = analogRead(halPin);//Hallsensor einlesen Volt = map(val, 0, 1023, 0, 1023);//Keine Einschränkung if (Volt > threshold_1)//Wenn über Schwellwert { MotorControl(0); digitalWrite(blinkPin, HIGH);//Motor steht Warnblinker delay (400); digitalWrite(blinkPin, LOW); delay(400); digitalWrite(blinkPin, HIGH); delay (400); digitalWrite(blinkPin, LOW); delay(400); digitalWrite(blinkPin, HIGH); delay (400); digitalWrite(blinkPin, LOW); delay(400); digitalWrite(blinkPin, HIGH); delay (400); digitalWrite(blinkPin, LOW); delay(400); digitalWrite(blinkPin, HIGH); delay (400); digitalWrite(blinkPin, LOW); delay(400); digitalWrite(blinkPin, HIGH); delay (400); digitalWrite(blinkPin, LOW); delay(400); } else { MotorControl(120); // Geschwindigkeit des Autos } }
Außerdem würde in Kurven auch die Randbebauung als Hindernis gesehen werden. Habe ich schon zur Genüge probiert. Dann lieber fast auffahren lassen und halten.
Danke
Achim







Zitieren

Lesezeichen