This code is from project: ESP12e oled "smartwatch", honestly it's a wrist display ;)
init.lua
node.setcpufreq(node.CPU80MHZ) dofile("display_init.lc") dofile("display_body.lc") dofile("wireless.lc") dofile("server.lc") dofile("gpio.lc")
display_init.lua
spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 8) disp = u8g.ssd1306_128x64_hw_spi(8, 6, 0) function prep() disp:setFont(u8g.font_6x10) disp:setFontRefHeightExtendedText() disp:setDefaultForegroundColor() disp:setFontPosTop() end ip = "none" mac = "none" ssid = "none" l0= "" l1= "" l2= "" l3= "" l4= "" l5= "" stat_screen = 1; -- range 123456789012345678901 21 chars function status_toggle() if (stat_screen == 1) then stat_screen = 0 else stat_screen = 1 end end function lines() disp:drawStr(0, 0, l0) disp:drawStr(0, 10, l1) disp:drawStr(0, 20, l2) disp:drawStr(0, 30, l3) disp:drawStr(0, 40, l4) disp:drawStr(0, 50, l5) end function clear_lines() l0="" l1="" l2="" l3="" l4="" l5="" end tmr.register(0, 1000, tmr.ALARM_SEMI, function() image_loop() end) tmr.start(0)
display_body.lua
function status() disp:drawStr(0, 0, "IP: "..ip) disp:drawStr(0, 10, "SSID: "..ssid) disp:drawStr(0, 20, "Bat/Uptime: "..adc.read(0).."/"..tmr.time().."s") disp:drawStr(0, 30, "Heap: "..node.heap()) for mac,ip in pairs(wifi.ap.getclient()) do disp:drawStr(0, 40, "Cli IP: "..ip) disp:drawStr(0, 50, "MAC "..mac) end end prep() function image_loop() disp:firstPage() repeat if (stat_screen == 1) then status() else lines() end until disp:nextPage() == false tmr.start(0) end
wireless.lua
wifi.sleeptype(wifi.MODEM_SLEEP) wifi.setmode(wifi.SOFTAP) cfg={} cfg.ssid="esp_watch" cfg.pwd="esp123123" cfg.auth=AUTH_WPA2_PSK cfg.max=1 wifi.ap.config(cfg) ip = wifi.ap.getip() mac = wifi.ap.getmac() ssid = cfg.ssid
server.lua
s = net.createServer(net.TCP, 1) s:listen(80, function(c) c:on("receive", function(c, pl) node.input(pl) c:close() end) end)
gpio.lua
gpio.mode(2, gpio.OUTPUT) gpio.mode(1, gpio.INT, gpio.PULLUP) gpio.mode(3, gpio.INT, gpio.PULLUP) function led_on(level) gpio.write(2, gpio.LOW) end function led_off(level) gpio.write(2, gpio.HIGH) end led_status = 0; tmr.register(1, 250, tmr.ALARM_AUTO, function() if (led_status == 1) then led_off() led_status = 0 else led_on() led_status = 1 end end) function notify_on() tmr.start(1) end function notify_off() tmr.stop(1) led_off() led_status = 0 end notify_off() gpio.trig(1, "down", status_toggle) gpio.trig(3, "down", notify_off)
No comments:
Post a Comment