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.
Ich weiß wirklich nicht wo der Fehler liegt.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); } }
Danke für eure Hilfe







Zitieren
Lesezeichen