PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 Befehl für ein Paket von Befehlen?



stani
04.10.2009, 13:30
Hey Leute,

ich wollte mal fragen wie man mit einem Befehl so gesagt ein ganzes Programm laufen lassen kann.Ich will mir einen CNC Laser bauen.Der Schrittmotor hat 4 Anschlüsse.Ich hab den auch schon angeschlossen(Atmega8)und es geht in bei Richtungen.Kann ich das ganze Paket(wo der sich in eine Richtung dreht)mit nur einem Befehl befehlen?
z.B irgendwie M1R(Motor 1 Rechts).
Der Befehl für eine Richtung:

$regfile = "m8def.dat"

Config Portc = Output
M1 Alias Portc.1
M2 Alias Portc.2
M3 Alias Portc.3
M4 Alias Portc.4

Do

M1 = 1
M3 = 1
Waitms 0.6
M1 = 0
M2 = 1
Waitms 0.6
M3 = 0
M4 = 1
Waitms 0.6
M2 = 0
M1 = 1
Waitms 0.6
M1 = 0
M4 = 0





Loop



End



Danke für jede Hilfe

for_ro
04.10.2009, 14:28
Hallo stani,
falls du keine Werte zurückbekommen musst, kannst du ein MACRO und eine SUB verwenden. Siehe auch in der Hilfe. Mit Rückgabe wäre es eine Function.
Macro ist so ähnlich wie ein include. Die Befehlsfolge brauchst du in deinem Bascom Code nur einmal hinzuschreiben, beim Compilieren wird sie aber an jede Stelle eingefügt. Dein Bin-Code wird also nicht kleiner.
Bei einer Subroutine wird an der Stelle des Aufrufs unterbrochen und der Code der Sub ausgeführt. Wenn der beendet ist (Return) wird mit dem nächsten Befehl nach dem Aufruf fortgesetzt. Dazu muss sich das Programm die Rücksprungadresse merken. Es wird also etwas langsamer als die direkte Befehlsfolge. Dafür wird dein Bin-Code deutlich reduziert. Über Parameter kannst du auch Werte übergeben.
In deinem Fall würde ich dir die Sub empfehlen.

Waitms 0.6 geht übrigens nicht, da dort nur der Word-Wertebereich zugelassen ist. Was der Compiler daraus macht, kann ich dir nicht sagen. Entweder 0 oder 1. Willst du tatsächlich 600µs warten, dann schreibe
Waitus 600.

stani
06.10.2009, 16:29
Ok ich hab da noch ne kleine #Frage.Kann man den das Programm(Befehle)laufen lassen?Also wenn ich z.B ein Paket habe,dass der Motor sich 1 mal drehen soll(1 umdrehung),aber ich dann dazu schreibe wielange er sich so drehen soll.Ich will ja nicht für jede umdrehung so ein Code schreiben.Dan säße ich noch ne Woche dran.

Virus
06.10.2009, 16:53
hi,

cnc laser coole Sache,
was macht man eigentlich damit,
und wo gibt es ausreichen starke laser?

stani
06.10.2009, 17:11
Also die Laser gibt es in Laufwerken.In DVD Brennern sind die besten und stärksten.in Cd Brennern sind die IR also nicht sichtbar.Dazu bracht nman noch eine Comprimator Linse(heißt glaub ich so)und ein Gehäuse.Damit kann man dan irgendwas aus Plastik schneiden.Ich brauch das für meinen Vater.Er ist Airbrusher und er braucht so ein Teil um die Folien ausschneiden.

Virus
06.10.2009, 18:32
achso, airbushen kann ich auch^^
früher war ich mal modellbuaer,da ist eine airbrush hilfreich, dann hab ich beim automatiesieren von panzermodellen angefangen mit elektronik und mikrocontrollerlosen schaltungen und jetzt hats mich zum rp6 und hierher verschlagen.

aber die idee folien mit cnc laser zu schneiden ist genial.
ist der laser denn auch zentriert genug, sodass er die folie schneidet und nicht schmilzt? weil man braucht, und das ist ja der vorteil von cnc scharfe kanten

stani
07.10.2009, 14:01
also eigendlich schmiltzt es nicht,weil das nicht so lange dauert umnd es keine Reibung gibt.Aber währ hilfreich,wenn mir jemand helfen würde(Befehl für ein paar sekunden laufen lassen)

vklaffehn
07.10.2009, 14:54
Moin!
Also ich werf mal 'Funktion' oder 'Prozedur in den Raum.... ich kenn mich mit BASCOM nicht aus, aber im Prinzip müßtest Du eine Subroutine schreiben, in der Dein Motor sich dreht (wie Du oben hast) und dabei ein Zähler mitzählt, z.B. eine For..Next Schleife oder so. Dann mußt Du nur die Subroutine aufrufen (GOSUB???), in einer Variable vorher die Anzahl der Schleifendurchläufe festlegen und dementsprechend oft Deine Schleife durchlaufen. Schau Dir evtl. mal Variablen, Gosub und For..Next in der Bascom Hilfe an.

MfG
Volker

stani
08.10.2009, 14:17
sorry kenn mich auch nicht so toll mit BASCOM aus bin zwar schon etwas länger mit AVR beschäftigt aber bin eigendlich noch nicht so gut in BASCOM,dass ich sowas schreiben könnte:D Aber ich such mal

stani
08.10.2009, 14:51
ne alos ich gibs auf.Ich werd den CNC Laser ohne µC machen.Alles CNC sind mit LPT anschluss und nem Prog.Aber bei nem µC ohne Programm geht das doch garnicht .Und wenn ne Woche dran sitzen für 1 Bild.Jeden Schritt ein Befehl(oer mehrere).Man ich find nix im Internet.Keiner hat nichtmal ein Schaltplan oder so .Kann mir das einer erklären oder so oder mir ein Schaltplan geben?

vklaffehn
08.10.2009, 19:47
Hallo, irgendwie hab ich nicht ganz verstanden, was Du vorhast? Ich hab mir auch eine kleine Fräse gebaut, die wird über die serielle Schnittstelle angesprochen, nur halt nicht mit Bascom. Was genau willst Du denn machen?

stani
08.10.2009, 19:51
egal hab jetzt ne seite gefunden mit Schaltplan und Programm.Durch LPT werden beide Schrittmotoren angesteuert.Und ein G-Code Programm hab ich auch noch zum Umwandeln von Bildern in G-Codes.Müsste funzen.

stani
10.10.2009, 11:42
Hallo nochmal.Ich wollte mal nochwas zur Seite fragen wo der CNC LASER ist(Polnisch:D) http://c4r0.skrzynka.org/_hv/index.php?page=lasers/ploter

Da ist hanz unten so ein wort ,das man anklicken kann.Da kommt der Schaltplan.Und zwar ist da ein LPT Port wo durch 8 Transistoren 2 Schrittmotoren drangeschlossen sind.Wollte fragen ob das echt so geht,denn ich will jetzt nicht einfach so Geld dafür ausgeben.Programm hab ich auch schon von dan und zwar Mach2 und so ein G-Code Generator,der aus Bildern G-Codes macht.Kann das alles so gehen?