'Uno Pin 8 to IN1 of ULN2003
'Uno pin 9 to IN2 of ULN2003
'Uno pin 10 to IN3 of ULN2003
'Uno pin 11 to IN4 of ULN2003
'Note the sequencing of the pins i.e 8, 10, 9, 11
'acc.Initialize(acc.FULL4WIRE, 8, 10, 9, 11, True)
#Region Project Attributes
#AutoFlushLogs: True
#CheckArrayBounds: True
#StackBufferSize: 300
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Public Serial1 As Serial
Dim acc As AccelStepper
Dim p4, p5, p6 As Pin 'got buttons connected to these pins
Dim p4click, p5click, p6click As Boolean = False
Dim t As Timer
Dim numberOfSteps As Long = 0
Dim prevNumberOfSteps As Long = 0
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
t.Initialize("t_tick", 20)
t.Enabled = True
p4.Initialize(4, p4.MODE_INPUT_PULLUP) 'button to nudge the shaft clockwise forward in "nudgesteps" - see value assigned to nudgesteps above
p5.Initialize(5, p5.MODE_INPUT_PULLUP) 'button that creates a random number and move the motor shaft accordingly (from shaft current position)
p6.Initialize(6, p6.MODE_INPUT_PULLUP) 'button to move motor shaft to home position via the shortest route (smallest travel angle)
p4.AddListener("p4_StateChanged") 'add a listener for the button
p5.AddListener("p5_StateChanged") 'add a listener for the button
p6.AddListener("p6_StateChanged") 'add a listener for the button
'Note the sequencing of the pins i.e 8, 10, 9, 11
acc.Initialize(acc.FULL4WIRE, 8, 10, 9, 11, True)
acc.CurrentPosition = 0
acc.MaxSpeed = 800
acc.Speed = 800
acc.Acceleration = 100
AddLooper("myLooper")
End Sub
Sub myLooper
acc.run
End Sub
Sub p4_StateChanged
If acc.distanceToGo = 0 Then
If p4click = False Then
Log("state 4 changed")
p4click = Not(p4click)
acc.move(4096)
Else
p4click = False
End If
End If
End Sub
Sub p5_StateChanged
If acc.distanceToGo = 0 Then
If p5click = False Then
Log("state 5 changed")
p5click = Not(p5click)
acc.moveTo(0)
Else
p5click = False
End If
End If
End Sub
Sub p6_StateChanged
If acc.distanceToGo = 0 Then
If p6click = False Then
Log("state 6 changed")
p6click = Not(p6click)
acc.move(-512)
Else
p6click = False
End If
End If
End Sub
Sub t_tick
numberOfSteps = acc.GetCurrentPosition
If numberOfSteps <> prevNumberOfSteps Then
prevNumberOfSteps = numberOfSteps
Log("NOS = ", numberOfSteps)
End If
End Sub