#Region Project Attributes
#AutoFlushLogs: True
#StackBufferSize: 1200
#End Region
Sub Process_Globals
Public Serial1 As Serial
Private bmp As Adafruit_BMP280
Private ssd As AdafruitSSD1306
' Private d1pins As D1Pins
Private k=0,rmax,rmin As Int,l As Int
Private tmr As Timer
Private p(128),p_gl(128),py,maxx,minn,c1,c2,maxx_old,minn_old As Double
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
Log("AppStart")
ssd.InitializeI2C(12, 0x3c)
bmp.Initialize
If bmp.Initialize Then
Log("Successful")
Else
Log("not")
End If
ssd.ClearDisplay
ssd.Display
ssd.ClearDisplay
tmr.Initialize("tmr_Tick",150)
tmr.Enabled = True
Log(StackBufferUsage,"-----------")
maxx=0
minn=2e6
End Sub
Sub write_max_min
ssd.GFX.SetCursor(55, 0)
ssd.GFX.DrawRect(55,0,80,10,ssd.BLACK,True)
ssd.GFX.ConfigureText(1, ssd.WHITE, False)
ssd.GFX.DrawText(NumberFormat(Round(maxx/100), 4, 0))
ssd.GFX.SetCursor(55, 53)
ssd.GFX.DrawRect(55,53,80,63,ssd.BLACK,True)
' ssd.GFX.ConfigureText(1, ssd.WHITE, False)
ssd.GFX.DrawText(NumberFormat(minn/100, 4, 0))
'ssd.ClearDisplay
ssd.Display
End Sub
Private Sub tmr_Tick
p(k)=k*1e3-l*1e2
' Log(k," ",p(k))
'p(k)=bmp.ReadPressure'ReadTemperature
k=k+1
If k = 128 Then'ssd.GFX.Width
k= 0
l=l+1
glatten
normalize
plott
write_max_min
' ssd.INVERSE
End If
End Sub
Sub glatten
For i=0 To 4
p_gl(i)=p(i)
Next
For i=124 To 127
p_gl(i)=p(i)
Next
Dim acc As Long
For I1 = 0 To 4 '5 Pkte '17
acc = acc + p(I1)
Next
p_gl(2) = acc / 5 ' 17 Pkte
For I1 = 3 To 125 '5 Pkte
acc = acc + p(I1 + 2)-p(I1 -3)
p_gl(I1) = acc / 5 ' / 5
Next
End Sub
Sub plott
ssd.cleardisplay'GFX.DrawRect(0,0,127,63,ssd.BLACK,True)
For i=0 To 127
py=p_gl(i)*c1+c2
'Log("I=",i," p=",p(i)," py=",py)
If py>16 Then py=py-1
ssd.GFX.DrawCircle(i,py, 0, ssd.WHITE, True)
Next
' ssd.GFX.DrawCircle(4,4, 4, ssd.WHITE, True)
' ssd.GFX.DrawCircle(120,58, 4, ssd.WHITE, False)
ssd.Display
End Sub
Sub normalize
' Log("L=",l)
rmax=63
rmin=0'y-achse
maxx_old=maxx
minn_old=minn
' Log("L=",l," MAXX_old=",maxx_old," minn_old=",minn_old)
For i=2 To 125
' Log(i," ",p(i))
If p_gl(i)>maxx Then maxx=p_gl(i)
If p_gl(i)<minn Then minn=p_gl(i)
Next
' Log("maxx=",maxx," minn=",minn)
If maxx_old>maxx Then maxx=maxx_old
If minn_old<minn Then minn=minn_old
Log(maxx,";",minn)
c1=(rmax-rmin)/(maxx-minn)
' Log("c1=",c1)
c2=(rmin*maxx-rmax*minn)/(maxx-minn)
End Sub