Hier noch einmal die Videos zum Verständnis!
http://www.youtube.com/watch?v=Vy5ps...57F2-yk6BgOc3H
http://www.youtube.com/watch?v=tOEeS...57F2-yk6BgOc3H
Soll noch spektakulärer werden, sind nur die Anfänge!
Druckbare Version
Hier noch einmal die Videos zum Verständnis!
http://www.youtube.com/watch?v=Vy5ps...57F2-yk6BgOc3H
http://www.youtube.com/watch?v=tOEeS...57F2-yk6BgOc3H
Soll noch spektakulärer werden, sind nur die Anfänge!
Hallo thund3r und alle die mir bei meinem Projekt geholfen haben.
Ich wollte hiermit euch allen noch mal danken, die mir bei meinem ASURO-Projekt geholfen haben, hatte heute meine Abschlusspräsentation der FOS über den ASURO gehalten und eine "1" bekommen.
Dank eurer Hilfe hatte ich endlich Erfolg mit dem Greifer! :D
Nun hätte ich noch mal eine Frage, will nicht extra einen neuen Thread öffnen:
Ich kam heute nicht von dem ASURO weg und wollte deshalb das "nachprogrammieren" --> http://www.youtube.com/watch?v=Me5blu9WzzI
Jetzt ist meine Frage, wie kann ich die Linienfolge für eine bestimmte Strecke ausführen?
Ich will den Becher (anstatt ihn runterzuschmeißen) dann stehen lassen, herum fahren und ihn wieder zurückfahren.
Hallo
Freut mich das du mit den Projekten erfolgreich warst! weiter so!
Ich denk mal das hier im Programm beim druecken der Taster (wenn der Asuro gegn den Becher faehrt)
oder bei einem anderen Abbruchsignal (IR Signal, durch Odometrie gemessene Distanz o.ae.) der Linienfolge-part abgebrochen wird und in einen andere Handlungsroutine gewechselt wird.
So oder so aehnlich kann man das auf jedenfall realisieren.
Gruss Thund3r
ja, mein Problem ist nur noch, was kann ich in die while-Schleife für die Linienfolge schreiben. Sleep geht ja ned rein und wie kann ich überhaupt eine bestimmte Strecke fahren. Kann da mir einer mal einen Tipp geben, wie überhaupt eine bestimmte Strecke gefahren werden kann, den Rest kann ich mir vielleicht durch Ausprobieren erschließen!
Hier schon einmal mein bisheriges Programm, bei der zweiten Linienfolge will ich ihm dann eine bestimmte Strecke auf der Linie fahren lassen!
Anhang 22372
DANKE!!!
P.S. Der ASURO macht irgendwie süchtig, wollte eigentlich den ASURO nach meinem Abschlussbericht erst einmal ruhen lassen, aber youtube und die ganzen ASURO-Videos geben immer neue Ideen und ich versuche das mit meinem minimalen Programmierwissen nachzuspielen!
hallo
also mir geht es ähnlich wie powder999 =D ich mach den asuro auch als schulprojekt un das zählt dann ins abi rein. meine idee für das eigene projekt war ebenfalls ein asuro mit greifer. ich hab in youtube einen gesehen, der mit einem servo einen gegenstand hochgehoben und gegriffen hat das hab ich jetzt mal nachgebaut. mechanik funktioniert aber mein problem ist das programm ich bin gerade dabei die frequenz von meinem servo rauszufinden aber ich krieg sie nicht raus xD ich hab einen modelcraft Y-3009 Mini Servo vom Conrad. wie ist das mit der frequenz sind das immer 10er schritte? weil so hab ichs getestet also
BackLED(OFF,ON);
Sleep(10);-->Sleep(20);-->Sleep(30);-->usw
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
aber mitlerweile bin ich bei 320 un es tut sich immernoch nichts was mach ich falsch?
Hallo
Je nach Servotyp liegt die Mitte des Drehbereichs bei Impulslängen von ca. 1ms bis 1,5ms Dauer (ms bedeutet Millisekunden oder 1/1000 Sekunde). Der Impuls sollte alle 20ms wiederholt werden.
In der orginalen asuro-Library von der CD dauert ein Sleep(1) genau 1/72000 Sekunde, Sleep(72) dauert entsprechend eine 1ms. (Bei den neueren Libs wird ein 36kHz-Timer verwendet, deshalb dauert hier Sleep(36) eine Millisekunde.) Für 20ms Impulswiederholung müßte man Sleep(20*72-Impulslänge) warten. Da Sleep() aber einen 8bit-Parameter benötigt, muss man die Impulspause auf mehrere Aufrufe von Sleep verteilen. 20*72 wären 1440 Sleep(1)-Aufrufe, davon muss man noch die Impulsdauer abziehen und den Rest auf 255er Sleep()-Aufrufe verteilen:
(ungetestet)Code:#include "asuro.h"
#define libversion 72 // 72kHz oder 36kHz Library
int Impulspause;
char Servoimpuls = libversion; // 72 (oder 36) für eine Millisekunde (Servomitte?)
int main(void)
{
Init();
while(1)
{
BackLED(OFF,ON); // Impulsstart
Sleep(Servoimpuls);
BackLED(OFF,OFF); // Impulsende
Impulspause=libversion*20-Servoimpuls; // Anfang Pause; Dauer berechnen
while(Impulspause > 255) // 255er-Schritte
{
Sleep(255);
Impulspause -= 255;
}
Sleep(Impulspause); // Restpause
}
return(0);
}
Gruß
mic
erstmal danke also ich hab das programm getestet un es funktioniert auch aber mein servo bewegt sich nur ca ein drittel. deshalb geht mein greifer auch nicht komplett zu danach hör ich nur noch ein zahnrädchen das vibriert und man kann es auch leicht erkennen wenn man genauer hinsieht aber der servo bewegt sich nicht weiter
ich weis nicht ob das normal ist aber immer wenn ich den asuro ausschalte, egal was für ein programm drauf ist, dann dreht sich der servo ein stück
okay also ich hab jez mal n programm geschrieben un des funktioniert sogar halbwegs =D
#include <asuro.h>
#include <myasuro.h>
int main(void)
{
Init();
int x;
for(x=0; x<15; x++)
{
BackLED(OFF,ON);
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}
while(1);
return 0;
}
die frequenz habe ich mir jez mal ausgerechnet und mir dadraus die zeit für die pausen ausgerechnet. soweit geht eig alles
also bei meim asuro läuft des programm so ab: es wird gestartet dann fängt der servo an er dreht sich fast um 90° etwas weniger vielleicht 80° oder so aber dann ist schluss weil der greifer+ das objekt noch zu schwer sind da werd ich noch etwas dran verbessern. mit nem leichteren objekt gehts aber dann hab ich das problem, dass der servo sofort nachlässt wenn in meinem programm x>15 ist. kann man den auch irgendwie feststellen dass er das gewicht hält? oder hängt das auch mit dem gewicht zusammen? das problem dass er sich nochmal um ein stück drehen will, wenn man ihn ausmacht ist immernoch da
Sleep(0.125);
?