Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Pascal Schnabel

Members
  • Benutzer seit

  • Letzter Besuch

  1. Hallo zusammen, nach längerem rumprobieren habe ich eine Lösung über einen kleinen Umweg gefunden. Diese möchte ich anhand meinem Pseudocode veranschaulichen. Beim Start von „Button1“ wird der Schnellvorschub mit ‚Set_Steps‘ und ‚stepper1.SetMaxVelocity()‘ aktiviert und ein Callback beim erreichen der Zielposition gesetzt (‚PositionReachedCallback‘). In der Callback-Funktion wird erneut die maximale Geschwindigkeit gesetzt und der Motor in Vorwärtsrotation gesetzt: private void btnStart_Click(object sender, RoutedEventArgs e) { stepper1.SetMaxVelocity(Convert.ToInt32(v_SVS / proSchritt)); stepper1.SetSteps(Convert.ToInt32(s_SVS / proSchritt)); stepper1.PositionReachedCallback += SVS_finished; //setzen des Callbacks } void SVS_finished(BrickSilentStepper sender, int position) //Callback { stepper1.PositionReachedCallback -= SVS_finished; //detach Callback stepper1.SetMaxVelocity(Convert.ToInt32(v_NV / proSchritt)); stepper1.DriveForward(); } Beim Drücken von Button2 (Cancel) wird erneut die maximale Geschwindigkeit gesetzt und dem Motor gesagt, dass er in die entgegengesetzte Rotationsrichtung drehen soll. Danach wird die Zielposition berechnet und in einer while Schleife überprüft, ob die Zielposition erreicht wurde. Im Anschluss stoppt der Motor. private void btnCancel_Click(object sender, RoutedEventArgs e) { int target = Convert.ToInt32(-s_SRZ / proSchritt); //target position in steps stepper1.SetMaxVelocity(Convert.ToInt32(v_SRZ / proSchritt)); stepper1.DriveBackward(); stepper1.SetCurrentPosition(0); int i = 0; while (stepper1.GetCurrentPosition() <= target && i < 1000000) { i++; } stepper1.Stop(); } Ich finde die Lösung zwar nicht schön, aber Sie ist erstmal funktionsfähig. Sollte jemand wissen, warum mein erster Ansatz nicht funktioniert würde ich mich über eine Rückmeldung freuen.
  2. Hallo zusammen, ich habe ein kleines Problem bei der Programmierung der Steuerung eines Schrittmotors. Zur Programmierung nutze ich C# mit dem Net Framework 4.8. Des Weiteren habe ich auf meinem Rechner den Brick Viewer 2.3.16 installiert. Folgendes soll mein Programm können: Beim Drücken von „Button1“ soll der Motor zunächst mit Geschwindigkeit v_SVS (Schnellvorschub) einen bestimmten Weg drehen und danach mit reduzierter Geschwindigkeit v_NV (Normalvorschub) weiterdrehen Beim Drücken von „Button2“ soll der Motor gestoppt werden und anschließend mit einer Geschwindigkeit v_SRZ (Schnellrückzug) einen bestimmten Weg in die entgegengesetzte Richtung drehen bis er stoppt Anbei findet Ihr ein Diagramm des skizzierten Geschwindigkeitsverlaufs Die Programmierung für „Button1“ funktioniert bislang. Allerdings macht die Programmierung für Button2 Probleme. Bei Klick auf „Button2“ habe ich folgendes programmiert: stepper1.Stop(); stepper1.SetMaxVelocity(398); System.Threading.Thread.Sleep(2); stepper1.SetSteps(10000/2); Leider funktioniert die Programmierung bislang nicht erwartet. Der Schrittmotor stoppt, aber dreht nicht die vorgegebenen Schritte (1000) zurück. Eine Abfrage von GetRemainingSteps() gibt 0 zurück. Nach vielem Probieren habe ich festgestellt, dass wenn ich die Ausführung des Programmcodes ausreichend lange pausiere (Thread.Sleep) die Programmierung funktioniert. Das heißt, dass der Motor gestoppt wird und im Anschluss einen gewissen Weg in die entgegengesetzte Richtung dreht. In meinem Fall soll der Übergang aus der Phase Normalvorschub in den Schnellrückzug ohne Unterbrechung erfolgen. Aus diesem Grund wollte ich fragen, wie ich die Programmierung abändern kann, um ein Pausieren der Anwendung zu vermeiden und einen schnellen Übergang vom Normalvorschub in den Schnellrückzug zu ermöglichen? Über eure Hilfe wäre ich dankbar. Geschwindigkeitsverlauf.svg

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.