' Program: MOT43-V6.OSC ' This program ramps a DC Motor's speed ' up and down / forwards and backwards ' using a L298 H-Bridge. ' (revised: 01/10/08) ' modified for OOPic III+ v.C.1.1 Dim A As New oDCMotor2 Dim B As New oDCMotor2 Dim x As Byte Dim sw1 As New oDIO1 Dim Frq As New oFreq '//////////////////////////////////////// Sub Main() A.IOLineP = 18 ' PWM1 A.IOLine1 = 24 ' RD0 A.IOLine2 = 25 ' RD1 A.Operate = 1 A.PreScale = 1 A.Brake = cvOff B.IOLineP = 17 ' PWM2 B.IOLine1 = 26 ' RD2 B.IOLine2 = 27 ' RD3 B.Operate = 1 ' B.Prescale = 1 B.Brake = cvOff sw1.IOLine = 16 ' RC0 sw1.Direction = cvInput Do If sw1=0 Then sw1.Direction = cvOutput sw1 = 0 Call motrun Call motrun Call motrun Call motrun End If sw1.Direction = cvInput Cmd.Delay = 2 Loop End Sub ' /////////////////////////////////////// Sub motrun() ' ramp velocity up+down in one direction. For x = 40 To 126 A = x B = x Cmd.Delay = 200 Next x Cmd.Delay = 1000 ' A = 0 ' B = 0 For x = 0 To 40 A = 126 - x B = 126 - x Cmd.Delay = 200 Next x Call Play1 ' ramp velocity up+down in other direction. For x = 0 To 126 A = -1*x B = -1*x Cmd.Delay = 50 Next x Cmd.Delay = 1000 ' A = 0 ' B = 0 For x = 0 To 126 A = -1*(126 - x) B = -1*(126 - x) Cmd.Delay = 50 Next x End Sub ' //////////////////////////////////// Sub Play1() Frq.Beep(64000,100) Frq.Beep(64500,100) Frq.Beep(65000,100) Frq.Beep(63500,50) Frq.Beep(63600,50) Frq.Beep(0,100) Frq.Beep(5500,100) Frq.Beep(0,100) Frq.Beep(5500,100) Frq.Beep(0,100) End Sub