ESP8266学习之路 十三 (SPI读取max6675)

lua开发8266API手册:https://nodemcu.readthedocs.io/en/master/​​​​​​​

通过spi模块读取四路max6675温度数据

四路max6675连接同一个spi数据和时钟线,通过片选线选择使用哪个max6675模块

max6675.lua文件:

SpiPinCS1 = 8--GPIO15  
SpiPinCS2 = 7--GPIO13
SpiPinCS3 = 0--GPIO16
SpiPinCS4 = 1--GPIO5     --定义四路spi片选引脚

spi.setup(1, spi.MASTER, spi.CPOL_HIGH, spi.CPHA_HIGH, 8, 8)
gpio.mode(SpiPinCS1, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS2, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS3, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS4, gpio.OUTPUT, gpio.PULLUP)  --设置片选引脚模式


local SpiCount = 0  --计数定时1秒 把数据发送到ESP8266模块串口


tmr.alarm(1,100,1,function()
    SpiCount = SpiCount + 1
    if SpiCount >= 10 and SpiCount <= 11 then
        SpiCount = 11
        gpio.write(SpiPinCS1,0)     --拉低片选开始读数据
        --spi.send(1,0xff)
        SpiData1 = spi.recv(1,1)
        SpiData2 = spi.recv(1,1)    --读取max6675原始数据
        num=SpiData1:byte(1)*256 + SpiData2:byte(1)  --byte(1)转换为整数
        num=num*2
        num= num/16
        num=num*0.25            --计算得出实际温度
        print("temperture1:"..num)--串口打印温度数据
        gpio.write(SpiPinCS1,1)   --拉高片选,停止读数据

     elseif SpiCount >=20 and SpiCount <= 21 then
        SpiCount = 21
        gpio.write(SpiPinCS2,0)
        --spi.send(1,0xff)
        SpiData1 = spi.recv(1,1)
        SpiData2 = spi.recv(1,1)
        num=SpiData1:byte(1)*256 + SpiData2:byte(1)
        num=num*2
        num= num/16
        num=num*0.25
        print("temperture2:"..num)
        gpio.write(SpiPinCS2,1)

     elseif SpiCount >=30 and SpiCount <= 31 then
        SpiCount = 31
        gpio.write(SpiPinCS3,0)
        --spi.send(1,0xff)
        SpiData1 = spi.recv(1,1)
        SpiData2 = spi.recv(1,1)
        num=SpiData1:byte(1)*256 + SpiData2:byte(1)
        num=num*2
        num= num/16
        num=num*0.25
        print("temperture3:"..num)
        gpio.write(SpiPinCS3,1)

     elseif SpiCount >=40 and SpiCount <= 41 then
        SpiCount = 0
        gpio.write(SpiPinCS4,0)
        --spi.send(1,0xff)
        SpiData1 = spi.recv(1,1)
        SpiData2 = spi.recv(1,1)
        num=SpiData1:byte(1)*256 + SpiData2:byte(1)
        num=num*2
        num= num/16
        num=num*0.25
        print("temperture4:"..num)
        gpio.write(SpiPinCS4,1)
     end
end)

 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值