Hallo,
ich weiß dass es zu diesem thema unzählige beiträge schon unzählige beiträge gibt, allerdings habe ich ein folgendes Problem:
Die Servo mit Hilfe der FrontLED() funktion anzusteuern klappt, wenn auch im mom noch sehr primitiv, seht ihr ja im quellcode, aber das ist nicht das problem.
am bestern schaut ihr euch das video an, wenn die servo was "greifen" soll, bewegt sie sich so lande auf den gegenstand zu, bis sie diesen berührt und im nächsten moment fährt sie auch schon wieder zurück. wenn ich den "greifer" nur so, also ohne ein gegenstand bewege, funktioniert alles wunderbar,
wisst ihr woran das liegen könnte?
Code:#include <asuro.h> int main (void) { Init(); StatusLED(YELLOW); int x; int i; int p; FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); StatusLED(RED); //anders rum Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(175); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(175); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(175); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(175); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); FrontLED(ON); Sleep(175); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); StatusLED(RED); }
vielen DANK für eure tips!
max
Hallo
Du sendest pro Richtung jeweils nur 5 Impulse und in der Pause wird gar kein Impuls gesendet. Deshalb "federt" dein Greifer in der Pause mit Schaumstoff zurück. Versuche es mal so:
ungetestet, die Tabs rauben mir den letzten Nerv *evil*Code:#include "asuro.h" // Alle Sleep()s auf Basis der orginalen CD-Library mit 72kHz-Timer // Sleep(72) dauert dann ca. 1ms int main (void) { //int x; //int i; int p; Init(); while(1) // Programm endlos ausführen { // 1 Sekunde Greifer schliesen StatusLED(YELLOW); for(p=0; p<50; p++) // 50*22ms ergibt ca. eine Sekunde Richtung "Greifer schließen" { FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); // 21ms Impulspause } // 2 Sekunden halten StatusLED(RED); for(p=0; p<100; p++) { FrontLED(ON); Sleep(80); FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); } // 1 Sekunde Greifer öffen StatusLED(GREEN); for(p=0; p<50; p++) // 50*23ms ergibt ca. eine Sekunde Richtung "Greifer öffnen" { FrontLED(ON); Sleep(175); // 2,5ms? FrontLED(OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); } while(PollSwitch() == 0) // Blinken bis Taste gedrückt wird, dann Programm wiederholen { StatusLED(RED); for(p=0; p<200; p++) Sleep(72); StatusLED(OFF); for(p=0; p<300; p++) Sleep(72); } } return(0); // wird nie erreicht! }
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen