$regfile = "m88def.dat" $crystal = 8000000 $hwstack = 40 ' default use 32 for the hardware stack $swstack = 40 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space Declare Sub calcvalves1 Declare Sub calcvalves2 Declare Sub calcvalves3 Declare Sub calcvalves4 Declare Sub calclight1 Declare Sub calclight2 Declare Sub calclight3 Declare Sub calclight4 Declare Sub sendvalves Declare Sub sendlight 'LCD config_____________________________________________________________________ Ddrc = &B11111111 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Initlcd Cls Cursor Off Noblink 'WS2801_________________________________________________________________________ Dim Rgb(12) As Byte 'Sensoreingänge_________________________________________________________________ Kap1 Alias Pind.5 Config Kap1 = Input Portd.5 = 1 Kap2 Alias Pind.6 Config Kap2 = Input Portd.6 = 1 Kap3 Alias Pind.7 Config Kap3 = Input Portd.7 = 1 Kap4 Alias Pinb.0 Config Kap4 = Input Portb.0 = 1 '_______________________________________________________________________________ '_______________________________________________________________________________ 'Variablen______________________________________________________________________ Dim S1 As String * 3 Dim S2 As String * 3 Dim S3 As String * 3 Dim S4 As String * 3 '_______________________________________________________________________________ 'Ventile________________________________________________________________________ Dim Valves(3)as Byte '_098765_ 20-15 Valves(1) = &B00000000 '4321098_ 14-8 Valves(2) = &B00000000 '7654321_ 7-1 Valves(3) = &B00000000 'Drinks_________________________________________________________________________ Dim 1caipirinha As Byte Dim 2tequilasunrise As Byte Dim 3cubalibre As Byte Dim 4mochito As Byte '_______________________________________________________________________________ Enable Interrupts '############################################################################### '############################################################################### gosub sendvalves 'Schieberegister leeren, damit Ventile zurücksetzen Do 'Ventilberechnung_______________________________________________________________ gosub calcvalves1 gosub calcvalves2 gosub calcvalves3 gosub calcvalves4 gosub sendvalves 'Lichtberechnung________________________________________________________________ gosub calclight1 gosub calclight2 gosub calclight3 gosub calclight4 gosub sendlight Loop End '############################################################################### '############################################################################### 'Ventilberechnung_______________________________________________________________ '_____________________________________________________________________caipirinha Sub calcvalves1 If 1caipirinha > 0 Then 'Befüllen starten Select Case 1caipirinha Case 1 To 20:'Zitronensaft '_098765_ 20-15 Valves(1) = &B01000000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 21 To 80:'Cachaca '_098765_ 20-15 Valves(1) = &B00100000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) End Select If 1caipirinha < 255 Then incr 1caipirinha End If end SUB 'Ventilberechnung_________________________________________________tequilasunrise Sub calcvalves2 If 2tequilasunrise > 0 Then 'Befüllen starten Select Case 2tequilasunrise Case 1 To 40:'Tequila '_098765_ 20-15 Valves(1) = &B00010000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 41 To 55:'Zitronensaft '_098765_ 20-15 Valves(1) = &B00001000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 61 To 180:'Orangensaft '_098765_ 20-15 Valves(1) = &B00000100 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 171 To 254:'Grenadine '_098765_ 20-15 Valves(1) = &B00000010 + Valves(1) '4321098_ 14-8 Valves(2) = &B00000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) End Select If 2tequilasunrise < 255 Then incr 2tequilasunrise End If end SUB 'Ventilberechnung______________________________________________________cubalibre Sub calcvalves3 If 3cubalibre > 0 Then Select Case 3cubalibre 'Befüllen starten Case 1 To 40:'Rum '_098765_ 20-15 Valves(1) = &B00000000 + Valves(1) '4321098_ 14-8 Valves(2) = &B10000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 61 To 200:'Cola '_098765_ 20-15 Valves(1) = &B00000000 + Valves(1) '4321098_ 14-8 Valves(2) = &B01000000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) End Select If 3cubalibre < 255 Then incr 3cubalibre End If end SUB 'Ventilberechnung________________________________________________________mochito Sub calcvalves4 If 4mochito > 0 Then Select Case 4mochito 'Befüllen starten Case 1 To 35:'Rum '_098765_ 20-15 Valves(1) = &B00000000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00100000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) Case 36 To 130:'Soda '_098765_ 20-15 Valves(1) = &B00000000 + Valves(1) '4321098_ 14-8 Valves(2) = &B00010000 + Valves(2) '7654321_ 7-1 Valves(3) = &B00000000 + Valves(3) End Select If 4mochito < 255 Then incr 4mochito End If end SUB 'Lichtberechnung________________________________________________________________ '_____________________________________________________________________caipirinha Sub calclight1 If 1caipirinha = 0 then rgb(1) = 0 rgb(2) = 0 Rgb(3) = 254 If Kap1 = 0 Then incr 1caipirinha 'Sensor für Caipirinha meldet etwas elseif 1caipirinha = 255 then If Kap1 = 1 Then 'Sensor für Caipirinha meldet nichts 1caipirinha = 0 rgb(1) = 0 rgb(2) = 0 Rgb(3) = 254 end if end if if 1caipirinha > 0 then rgb(1) = 255 - 1caipirinha rgb(2) = 1caipirinha rgb(3) = 0 end if end SUB 'Lichtberechnung__________________________________________________tequilasunrise Sub calclight2 If 2tequilasunrise = 0 then rgb(4) = 0 rgb(5) = 0 Rgb(6) = 254 If Kap2 = 0 Then incr 2tequilasunrise 'Sensor für Tequilasunrise meldet etwas elseif 2tequilasunrise = 255 then If Kap2 = 1 Then 'Sensor für Tequilasunrise meldet nichts 2tequilasunrise = 0 rgb(4) = 0 rgb(5) = 0 Rgb(6) = 254 end if end if if 2tequilasunrise > 0 then rgb(4) = 255 - 2tequilasunrise rgb(5) = 2tequilasunrise rgb(6) = 0 end if end SUB 'Lichtberechnung_______________________________________________________cubalibre Sub calclight3 If 3cubalibre = 0 then rgb(7) = 0 rgb(8) = 0 Rgb(9) = 254 If Kap3 = 0 Then incr 3cubalibre 'Sensor für Cubalibre meldet etwas elseif 3cubalibre = 255 then If Kap3 = 1 Then 'Sensor für Cubalibre meldet nichts 3cubalibre = 0 rgb(7) = 0 rgb(8) = 0 Rgb(9) = 254 end if end if if 3cubalibre > 0 then rgb(7) = 255 - 3cubalibre rgb(8) = 3cubalibre rgb(9) = 0 end if end SUB 'Lichtberechnung_________________________________________________________mochito Sub calclight4 If 4mochito = 0 then rgb(10) = 0 rgb(11) = 0 Rgb(12) = 254 If Kap4 = 0 Then incr 4mochito 'Sensor für Mochito meldet etwas elseif 4mochito = 255 then If Kap4 = 1 Then 'Sensor für Mochito meldet nichts 4mochito = 0 rgb(10) = 0 rgb(11) = 0 Rgb(12) = 254 end if end if if 4mochito > 0 then rgb(10) = 255 - 4mochito rgb(11) = 4mochito rgb(12) = 0 end if end SUB 'Senderoutinen################################################################## '############################################################################### sub sendvalves Config Spi = Hard , Master = Yes Spiinit Spiout Valves(1) , 3 Waitms 20 '_098765_ 20-15 Valves(1) = &B00000000 '4321098_ 14-8 Valves(2) = &B00000000 '7654321_ 7-1 Valves(3) = &B00000000 Spiout Valves(1) , 3 end SUB '_______________________________________________________________________________ Sub sendlight Config Spi = Soft , Din = Pind.4 , Dout = Portd.1 , Ss = None , Clock = Portd.0 Spiinit Spiout Rgb(1) , 12 waitms 1 end SUB