Sub SendByte(B as Byte)
Dim BitMask As Int = 0x01 'start at bit 0, shift each time around loop, to get data bits one-by-one
For BitNumber = 0 to 7
If Bit.And(B, BitMask) <> 0 Then
DataPin.DigitalWrite(True) 'bit is 1
Else
DataPin.DigitalWrite(False) 'bit is 0
End If
Sleep(1)
'cycle clock pin low to move bits in shift register(s) along by 1 bit
ClockPin.DigitalWrite(False)
Sleep(1)
ClockPin.DigitalWrite(True)
Sleep(1)
BitMask = BitMask + BitMask 'shift left for next bit
Next
End Sub
Sub SendBytes(B() As Byte)
For I = 0 to B.Length - 1
SendByte(B(I))
Next
'cycle load pin low to latch in shift register data
LoadPin.DigitalWrite(False)
Sleep(1)
LoadPin.DigitalWrite(True)
Sleep(1)
End Sub
Private Sub AppStart
ClockPin.Initialize(8, ClockPin.MODE_OUTPUT)
DataPin.Initialize(10, DataPin.MODE_OUTPUT)
LoadPin.Initialize(9, LoadPin.MODE_OUTPUT)
ClockPin.DigitalWrite(True) 'idle state
LoadPin.DigitalWrite(True) 'idle state
For I = 0x10 to 0xF0
SendBytes(Array As Byte(0xAA, I, I, 0x55)) 'test pattern - will look random, but if it is changing each second, then we are on the right track :-)
Sleep(1000)
Next
End Sub