Hallo,
ich möchte einen simplen Roboter bauen. Ähnlich einem Knicklenker. Ein Motor treibt eine durchgehende Achse an. Ein Servo reagiert auf 2 Taster(Fühler) indem es einfach bis zu einem Punkt nach links oder rechts dreht. Nach 1,5 Sekunden wieder auf Mitte. Wenn ein Fühler tastet, soll er noch rückwärts fahren. Statt H-Brücke ein Relais.
Schaltplan:
Bild hier
Für den Arduino habe ich diesen Sketch, welcher auch super funktioniert:
Code:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // Widerstand an A0 messen
int val; // Die variable vom analog pin
const int relaisPin = 13; // Arbeitender DigitalPin
void setup()
{
myservo.attach(9); // Servo auf DigitalPin 9
pinMode(13, OUTPUT);// ist der schaltende Ausgang
}
void loop()
{
int val = analogRead(potpin); // Variable von den Widerständen messen
val = map(val, 0, 1023, 30, 150); //Eingrenzung des Servowinkels
if (val <= 50)
{
myservo.write(30); // sets position to the scaled value
digitalWrite(relaisPin, HIGH);
delay(1500);
}
else
{
myservo.write(90);
digitalWrite(relaisPin, LOW);
}
if (val >= 130)
{
myservo.write(150); // sets position to the scaled value
digitalWrite(relaisPin, HIGH);
delay(1500);
}
else
{
myservo.write(90);
digitalWrite(relaisPin, LOW);
}
}
Wenn ich nun diesen Sketch auf den ATtiny spielen will, läuft nichts. Statt "servo h" habe ich servo8bit h.
Zusätzlich habe ich noch AVR insight installiert.
Code:
#include <Servo8Bit.h>
Servo8Bit myServo; //Servo program mit ATtiny45.
//Für ATtiny 85 VCC an8 -GND an 4
//Widerstandsbrücke an Pin 7
//Motorrelais an Pin 6
// Servo an Pin 5
int potPin = A1; // Widerstand an Pin 7 messen
int val; // Die variable vom analog pin
const int relaisPin = 1; // Arbeitender DigitalPin6
void setup()
{
myServo.attach(0); // Servo auf DigitalPin Pin 5
pinMode(relaisPin, OUTPUT);// ist der schaltende Ausgang
}
void loop()
{
int val = analogRead(potPin); // Variable von den Widerständen messen
val = map(val, 0, 1023, 30, 150); //Eingrenzung des Servowinkels
if (val <= 50)
{
myServo.write(30); // sets position to the scaled value
digitalWrite(relaisPin, HIGH);
delay(1500);
}
else
{
myServo.write(90);
digitalWrite(relaisPin, LOW);
}
if (val >= 130)
{
myServo.write(150); // sets position to the scaled value
digitalWrite(relaisPin, HIGH);
delay(1500);
}
else
{
myServo.write(90);
digitalWrite(relaisPin, LOW);
}
}
Ich weiß wirklich nicht wo der Fehler liegt.
Danke für eure Hilfe
Lesezeichen