hi
i want to show numbers on 8 digit 7 segment that use 74hc595 chip
when i set single value , looper work fine and show number correct
but in for..next loop , its not work and wait 10 second , and just show last number on 7 segment
i want when u is 1 , show 1 on 7 segment ... to end..
the looper wait to ending for..next loop , then work and just display 10 on 7 segment
my code :
i want to show numbers on 8 digit 7 segment that use 74hc595 chip
when i set single value , looper work fine and show number correct
but in for..next loop , its not work and wait 10 second , and just show last number on 7 segment
i want when u is 1 , show 1 on 7 segment ... to end..
the looper wait to ending for..next loop , then work and just display 10 on 7 segment
my code :
B4X:
Sub Process_Globals
Dim bc As ByteConverter
Public Serial1 As Serial
Private pos() As Byte = Array As Byte (0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01) ' 0 to 7
Private num() As Byte = Array As Byte(0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90,0X7F,0XFF,0XBF) ' 0 to 9 . -
Private pos_data As Byte
Private num_data As Byte
Private adad As ULong
Private lPin, cPin, dPin As Pin
'for inline function
Private LATCH As Int = 4
Private CLOCK As Int = 7
Private DATA As Int = 8
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
lPin.Initialize(4,lPin.MODE_OUTPUT)
cPin.Initialize(7,cPin.MODE_OUTPUT)
dPin.Initialize(8, dPin.MODE_OUTPUT)
AddLooper("Loopey")
For u = 1 To 10
adad = u
Delay(1000)
Next
End Sub
Sub Loopey
Dim jj As String = NumberFormat(adad,0,0)
Dim cntr As Byte = 0
For y = jj.Length -1 To 0 Step -1
Dim ha As String =bc.StringFromBytes( bc.SubString2(jj,cntr,cntr+1))
Dim aa As Int=ha
Shiftout( num(aa),pos(y) )
cntr=cntr+1
Next
End Sub
Sub Shiftout (data_to_show As Byte , position As Byte)
pos_data=position
num_data=data_to_show
RunNative("shiftout_inline", Null)
End Sub
#If C
void shiftout_inline(B4R::Object* o) {
digitalWrite(b4r_main::_latch, LOW);
shiftOut(b4r_main::_data, b4r_main::_clock, MSBFIRST, b4r_main::_pos_data);
shiftOut(b4r_main::_data, b4r_main::_clock, MSBFIRST, b4r_main::_num_data);
digitalWrite(b4r_main::_latch, HIGH);
}
#End If