Trådlös temperatursensor (3 / 4 steg)
Steg 3: Skriva mottagaren koden
'------------------------------------------------------------
"18 X - mottagare
SYMBOL RCV_PIN = 7
SYMBOL DATA_RCVD = w3
SYMBOL DATA_RCVD_SIGN = b3
SYMBOL CHECK_DATA = b1
SYMBOL BAUDVÄRDE = N1200 ' måste b T2400 om du använder USB-seriell
symbolen temp = b12
symbol Cnt = w2 ' Counter
symbol Digit0 = b8 "Håll digit0 data
symbol Digit1 = b9 ' hålla digit1 data
symbol Digit2 = b10 "Håll digit2 data
symbol Digit3 = b11 "Håll digit3 data
symbol slvAddrWR = $70 "I2C skriva adress
symbol slvAddrRD = $71 "I2C läsa adress
PAUSA 1000
i2cslave slvAddrWR, i2cslow, i2cbyte "initiera I2C-7SEG
writei2c 0,(%01000111)
NXT:
LÅG 5
LÅG 6
SERIN RCV_PIN, BAUDRATE,("TP"), DATA_RCVD_SIGN, DATA_RCVD, CHECK_DATA
om CHECK_DATA = "x" då
SERTXD ("Val", DATA_RCVD_SIGN, #DATA_RCVD, 13, 10)
"bli grön
LÅG 5
HÖG 6
Pausa 100
Annat "kolla lite misslyckades att få korrekt
sertxd ("dåliga.", "tecken", DATA_RCVD_SIGN, "-", #DATA_RCVD_SIGN, ", rcvd1", DATA_RCVD, "-", #DATA_RCVD, ", chk", CHECK_DATA, "-", #CHECK_DATA, 13, 10)
"Vända röda
LÅG 6
HIGH 5
Slut om
Pausa 100
Låt cnt = DATA_RCVD
GOSUB konvertera "konvertera decimal i varje LED segment
"Rensa först 2 siffror
Digit3 = $0
Digit2 = $0
writei2c 1,(Digit0,Digit1,Digit2,Digit3) ' skriva varje siffra till 7-segment
GÅ TILL NXT
KONVERTERA: "uppslagstabell för 7-segment
Temp = cnt % 10
LOOKUP temp, ($3F, $06, $5B, $4F, $66, $6D, $ 7 d, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit0
Temp = cnt / 10% 10
LOOKUP temp, ($3F, $06, $5B, $4F, $66, $6D, $ 7 d, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit1
Temp = cnt / 100% 10
LOOKUP temp, ($3F, $06, $5B, $4F, $66, $6D, $ 7 d, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit2
Temp = cnt / 1000% 10
LOOKUP temp, ($3F, $06, $5B, $4F, $66, $6D, $ 7 d, $07, $7F, $6F, $77, $7 C, $39, $5E, $79, $71), Digit3
RETURNERA
'------------------------------------------------------------
När jag först började använda modulen jag fick några störningar och så ibland det skulle inte Visa rätt värde, så jag la en check byte i slutet, för att kontrollera att data har tagits emot korrekt. När data tas emot korrekt lysdioden blinkar grönt, om "dåliga" data tas emot det kommer blinkar rött.
Raderna
Digit3 = $0
Digit2 = $0
läggs för att stoppa de 2 första siffrorna på displayen från visar, när de inte behöver vara på.