This module is part of the original MMBasic library. It is reproduced here with kind permission of Hugh Buckle and Geoff Graham. Be aware it may reference functionality which has changed or is deprecated in the latest versions of MMBasic.¶
Note: Any required file(s) are available in the attachments tab (top right).
PWMTRI.bas
' Author: Graeme Anderson
' Date: 29-Oct-2012
'
' Variable pulse width for front panel LED
' LED amplitude is a 'triangle' wave
iSeconds = 1 ' length of the whole cycle
Do
iState = 1
For y = 1 To 2
For x = 1 To 50 * iSeconds Step iSeconds
Pin(0) = iState ' first part of duty cycle
Pause x / 5
Pin(0) = Abs(iState - 1) ' reverse pin state
Pause iSeconds * 10 - x / 5 ' hold for remainder of duty cycle
Next
' revsere the logic for the second time through
iState = Abs(iState -1)
Next
Loop
PWMSIN.bas
' Author: Graeme Anderson
' Date: 29-Oct-2012
'
' Variable pulse width for front panel LED
' LED amplitude is a Sine wave
iSeconds = 1 ' length of the whole cycle
Do
iState = 1
For y = 1 To 2
For x = 0 To 90
Pin(0) = iState ' first part of duty cycle
Pause Sin(x*Pi/180) * iSeconds * 5
Pin(0) = Abs(iState - 1) ' reverse pin state
Pause (1-Sin(x*Pi/180)) * iSeconds * 5 ' hold for remainder of duty cycle
Next
' revsere the logic for the second time through
iState = Abs(iState -1)
Next
Loop