]> hydra-www.ietfng.org Git - acmetensortoys-esp-lua_lamp/commitdiff
Adds stary eyes animation. Not entirely happy with it
authorRachael <srbennett@gmail.com>
Thu, 17 Nov 2016 06:15:34 +0000 (22:15 -0800)
committerRachael <srbennett@gmail.com>
Thu, 17 Nov 2016 06:15:34 +0000 (22:15 -0800)
draw-staryeyes.lua [new file with mode: 0644]

diff --git a/draw-staryeyes.lua b/draw-staryeyes.lua
new file mode 100644 (file)
index 0000000..a2b8798
--- /dev/null
@@ -0,0 +1,31 @@
+return function(t,fb,g,r,b)
+  local c = string.char(g,r,b)
+  local cmax = math.max(r,g,b)
+  local i,v
+  
+  -- off channels stay off, on channels stay on, just minimally dim
+  local function adjust(val,bias) if val == 0 then return 0 elseif val <= bias then return 1 else return val - bias end end
+  -- update many pixels together with the same bias
+  local function drawbiased(...)
+    local i,v
+    local bias = math.random(cmax)
+    local ag = adjust(g,bias)
+    local ar = adjust(r,bias)
+    local ab = adjust(b,bias)
+    for i,v in ipairs(arg) do fb:set(v,ag,ar,ab) end
+  end
+
+  local function drawEq() for i,v in ipairs({3,6}) do fb:set(v,g,r,b) end end
+  local function drawTwinkleEyes() drawbiased(3,6) end
+  local ft = { [0] = drawEq, drawEq, drawTwinkleEyes }
+  fb:fill(0,0,0)
+  fb:set(3,c) fb:set(6,c) fb:set(10,c) fb:set(15,c) fb:set(17,c)
+  fb:set(18,c) fb:set(23,c) fb:set(24,c) fb:set(28,c) fb:set(29,c)
+  -- TODO make eyes (3&6 flicker)
+
+  local ix = 1;
+  t:register(400, tmr.ALARM_AUTO, function()
+    ft[math.random(#ft)]()
+    dodraw()
+  end)
+end
\ No newline at end of file