Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
f3303d00
Commit
f3303d00
authored
Jan 26, 2015
by
HuangRui
Browse files
Format ds18b20.lua.
parent
646eaec2
Changes
1
Hide whitespace changes
Inline
Side-by-side
lua_modules/ds18b20/ds18b20.lua
View file @
f3303d00
...
@@ -35,27 +35,27 @@ setfenv(1,M)
...
@@ -35,27 +35,27 @@ setfenv(1,M)
C
=
0
C
=
0
F
=
1
F
=
1
K
=
2
K
=
2
function
setup
(
dq
)
function
setup
(
dq
)
pin
=
dq
pin
=
dq
if
(
pin
==
nil
)
then
if
(
pin
==
nil
)
then
pin
=
defaultPin
pin
=
defaultPin
end
end
ow
.
setup
(
pin
)
ow
.
setup
(
pin
)
end
end
function
addrs
()
function
addrs
()
setup
(
pin
)
setup
(
pin
)
tbl
=
{}
tbl
=
{}
ow
.
reset_search
(
pin
)
ow
.
reset_search
(
pin
)
repeat
repeat
addr
=
ow
.
search
(
pin
)
addr
=
ow
.
search
(
pin
)
if
(
addr
~=
nil
)
then
if
(
addr
~=
nil
)
then
table.insert
(
tbl
,
addr
)
table.insert
(
tbl
,
addr
)
end
end
tmr
.
wdclr
()
tmr
.
wdclr
()
until
(
addr
==
nil
)
until
(
addr
==
nil
)
ow
.
reset_search
(
pin
)
ow
.
reset_search
(
pin
)
return
tbl
return
tbl
end
end
function
readNumber
(
addr
,
unit
)
function
readNumber
(
addr
,
unit
)
...
@@ -64,71 +64,71 @@ function readNumber(addr, unit)
...
@@ -64,71 +64,71 @@ function readNumber(addr, unit)
flag
=
false
flag
=
false
if
(
addr
==
nil
)
then
if
(
addr
==
nil
)
then
ow
.
reset_search
(
pin
)
ow
.
reset_search
(
pin
)
count
=
0
count
=
0
repeat
repeat
count
=
count
+
1
count
=
count
+
1
addr
=
ow
.
search
(
pin
)
addr
=
ow
.
search
(
pin
)
tmr
.
wdclr
()
tmr
.
wdclr
()
until
((
addr
~=
nil
)
or
(
count
>
100
))
until
((
addr
~=
nil
)
or
(
count
>
100
))
ow
.
reset_search
(
pin
)
ow
.
reset_search
(
pin
)
end
end
if
(
addr
==
nil
)
then
if
(
addr
==
nil
)
then
return
result
return
result
end
end
crc
=
ow
.
crc8
(
string.sub
(
addr
,
1
,
7
))
crc
=
ow
.
crc8
(
string.sub
(
addr
,
1
,
7
))
if
(
crc
==
addr
:
byte
(
8
))
then
if
(
crc
==
addr
:
byte
(
8
))
then
if
((
addr
:
byte
(
1
)
==
0x10
)
or
(
addr
:
byte
(
1
)
==
0x28
))
then
if
((
addr
:
byte
(
1
)
==
0x10
)
or
(
addr
:
byte
(
1
)
==
0x28
))
then
-- print("Device is a DS18S20 family device.")
-- print("Device is a DS18S20 family device.")
ow
.
reset
(
pin
)
ow
.
reset
(
pin
)
ow
.
select
(
pin
,
addr
)
ow
.
select
(
pin
,
addr
)
ow
.
write
(
pin
,
0x44
,
1
)
ow
.
write
(
pin
,
0x44
,
1
)
-- tmr.delay(1000000)
-- tmr.delay(1000000)
present
=
ow
.
reset
(
pin
)
present
=
ow
.
reset
(
pin
)
ow
.
select
(
pin
,
addr
)
ow
.
select
(
pin
,
addr
)
ow
.
write
(
pin
,
0xBE
,
1
)
ow
.
write
(
pin
,
0xBE
,
1
)
-- print("P="..present)
-- print("P="..present)
data
=
nil
data
=
nil
data
=
string.char
(
ow
.
read
(
pin
))
data
=
string.char
(
ow
.
read
(
pin
))
for
i
=
1
,
8
do
for
i
=
1
,
8
do
data
=
data
..
string.char
(
ow
.
read
(
pin
))
data
=
data
..
string.char
(
ow
.
read
(
pin
))
end
-- print(data:byte(1,9))
crc
=
ow
.
crc8
(
string.sub
(
data
,
1
,
8
))
-- print("CRC="..crc)
if
(
crc
==
data
:
byte
(
9
))
then
if
(
unit
==
nil
or
unit
==
C
)
then
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
625
elseif
(
unit
==
F
)
then
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
1125
+
320000
elseif
(
unit
==
K
)
then
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
625
+
2731500
else
return
nil
end
end
-- print(data:byte(1,9))
t1
=
t
/
10000
crc
=
ow
.
crc8
(
string.sub
(
data
,
1
,
8
))
t2
=
t
%
10000
-- print("CRC="..crc)
-- print("Temperature="..t1.."."..t2.." Centigrade")
if
(
crc
==
data
:
byte
(
9
))
then
-- result = t1.."."..t2
if
(
unit
==
nil
or
unit
==
C
)
then
return
t1
,
t2
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
625
end
elseif
(
unit
==
F
)
then
tmr
.
wdclr
()
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
1125
+
320000
elseif
(
unit
==
K
)
then
t
=
(
data
:
byte
(
1
)
+
data
:
byte
(
2
)
*
256
)
*
625
+
2731500
else
return
nil
end
t1
=
t
/
10000
t2
=
t
%
10000
-- print("Temperature="..t1.."."..t2.." Centigrade")
-- result = t1.."."..t2
return
t1
,
t2
end
tmr
.
wdclr
()
else
else
-- print("Device family is not recognized.")
-- print("Device family is not recognized.")
end
end
else
else
-- print("CRC is not valid!")
-- print("CRC is not valid!")
end
end
return
result
return
result
end
end
function
read
(
addr
,
unit
)
function
read
(
addr
,
unit
)
t1
,
t2
=
readNumber
(
addr
,
unit
)
t1
,
t2
=
readNumber
(
addr
,
unit
)
if
((
t1
==
nil
)
or
(
t2
==
nil
))
then
if
((
t1
==
nil
)
or
(
t2
==
nil
))
then
return
nil
return
nil
else
else
return
t1
..
"."
..
t2
return
t1
..
"."
..
t2
end
end
end
end
-- Return module table
-- Return module table
return
M
return
M
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment