ich hatte mich mal weit aus dem Fenster gelehnt und eine automatische Bandsäge versprochen. Die Mechanik ist fertig und ich dachte, da ich noch ein UNO mit easydriver rumfliegen habe, alles kein Problem. Falsch. Hat jemand einen Ansatz für einen Sketch, bei dem sich der NEMA solange dreht, bis ein Microtaster das beendet?
Na klar, aber nur zum Selberdenken, besteht aus 2 Teilen:
Motor drehen lassen
Taster einlesen
Wenn Taster gedrückt > Motor anhalten
Ganz ehrlich, das kannste Dir aus den mitgelieferten Demos zusammensetzen, da ist kein großes Hirnschmalz nötig. Und wenn das Zusammenstückeln nicht funktioniert, dann zeig was Du hast und dann wird konkret geholfen.
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Das kannst Du auch noch nachträglich ändern.
@Mahimus
Das ist nur der PULS für den Stepper-Treiber - bei jedem 0->1 Wechsel macht der Stepper einen Schritt (oder Mikroschritt), siehe A4988/DRV8825 (z.B. hier, Pololu)
postmaster-ino:
Das ist das Problem, bei 'magic numbers' - möchte fast drauf wetten, daß Das der DIR-Pin ist.
Über Magic numbers konnte ich im C++ einmaleins nichts finden
Damit wird also die Richtung des Steppers festgelegt.
Ah okay, wusste ich noch nicht, hab mir mal in ner Kaufwut Stepper bestellt, aber noch nie getestet
Also z.B. LOW = Uhrzeigersinn und HIGH = Gegenuhrzeigersinn?
'magic numbers' werden Zahlen genannt, Die einfach so im Code stehen, ohne großartige weitere Informationen.
Die harmloseste Variante sind Pin-Nummern, Die bekommt man beim Studium des Sketch wohl noch raus.
Besser ist hier aber, sprechende Variable-Namen zu benutzen - eben PinDir.
Da sich diese Pins NIE ändern (also zumindest nicht zur Laufzeit), macht man Diese const - also konstant - ab jetzt darf man den Variable-Namen auch mit großem Anfangsbuchstaben schreiben - geht zwar vorher auch, ist aber nicht 'nach gutem Ton'.
Weiter kann man, wenn die Pin-Nummern oben 'am Stück' aufgelistet sind, Diese ohne große Probleme anpassen.
Irgend welche Wartezeiten, statt irgendwo im Code zwei Sekunden abzuwarten
if (millis()-lastrun>=2000){...
packt man diese 2000 oben zu den Pins - eben als
uint32_t wartezeit=2000; //Wartezeit für ...
und setzt einen Kommentar dahinter, was diese Wartezeit bezweckt.
oha ... sehe erst jetzt den Zwinker-Smilie ... dann lasse ich hier 'Mal Gut sein'
'magic numbers' werden Zahlen genannt, Die einfach so im Code stehen, ohne großartige weitere Informationen.
Die harmloseste Variante sind Pin-Nummern, Die bekommt man beim Studium des Sketch wohl noch raus.
Besser ist hier aber, sprechende Variable-Namen zu benutzen - eben PinDir.
Da sich diese Pins NIE ändern (also zumindest nicht zur Laufzeit), macht man Diese const - also konstant - ab jetzt darf man den Variable-Namen auch mit großem Anfangsbuchstaben schreiben - geht zwar vorher auch, ist aber nicht 'nach gutem Ton'.
Weiter kann man, wenn die Pin-Nummern oben 'am Stück' aufgelistet sind, Diese ohne große Probleme anpassen.
Irgend welche Wartezeiten, statt irgendwo im Code zwei Sekunden abzuwarten
if (millis()-lastrun>=2000){...
packt man diese 2000 oben zu den Pins - eben als
uint32_t wartezeit=2000; //Wartezeit für ...
und setzt einen Kommentar dahinter, was diese Wartezeit bezweckt.
oha ... sehe erst jetzt den Zwinker-Smilie ... dann lasse ich hier 'Mal Gut sein'
MfG
Hehe^^ Ich bin mit C++ noch am Anfang, aber solche Dinge sind ja das A und O in jeder Programmiersprache
gnd, pin 8 an dir, pin 9 an step, 12v an den easy dirver und usb an den uno, der nema17 ruckelt aber nur, kann man da soviel verkehrt machen?
Setze die beiden delay(10) mal auf (100) dann wird sich der Motor zumindest drehen. Und dann spiele mal mit diesen Zeiten. Damit bestimmt du das Tempo des Motors. Je kleiner desto schneller. Zu klein, dann geht nicht mehr.
postmaster-ino:
Da sich diese Pins NIE ändern (also zumindest nicht zur Laufzeit), macht man Diese const - also konstant - ab jetzt darf man den Variable-Namen auch mit großem Anfangsbuchstaben schreiben - geht zwar vorher auch, ist aber nicht 'nach gutem Ton'.
Nö, das sehe ich anders.
Es gibt eine Konvention Objekt/Typ-Bezeichner mit großem Anfangsbuchstaben zu versehen,
nicht konstante Werte.
Für per #define definierte Konstanten werden zumeist Namen aus nur Großbuchstaben benutzt,
zum Erhöhen der Lesnbarkeit werden dann oft '_' als Trennung benutzt.
Für nur konstante Werte ist mir keine Notation über die Groß- oder Kleinschreibung bekannt.
Ich persönlich benutze zumeist Camel-Case für die Benennung.
Zusammengefasst also
class Test {
byte dummy;
} testObjekt;
#define NUM_LEDS 23
const byte pinLED = 5;
Whandall:
Sind aber alles letztlich Stilfragen, Geschmacksache.
Zum Glück gibt es ja keinen C++ Pabst der so etwas für alle beschließen könnte.
Die unterschiedlichen Stile sind manchmal sehr unterschiedlich. Das kann einen Anfänger ganz schön verwirren. Je nach Tageszeit und Blutschokoladepegel kann ich mich auch nach rund 10 Jahren C++-Praxis durchaus wie ein Anfänger fühlen.