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.
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
}
}
Leider passen die IR Projekte nicht.(1:87).
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
Lesezeichen