Advertisement
Guest User

Untitled

a guest
Aug 21st, 2016
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. function init_spi_display()
  2. local cs = 8 -- GPIO15, pull-down 10k to GND
  3. local dc = 4 -- GPIO2
  4. local res = 0 -- GPIO16
  5. spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, spi.DATABITS_8, 0)
  6. disp = u8g.ssd1306_128x64_spi(cs, dc, res)
  7. end
  8.  
  9. -- graphic test components
  10. function prepare()
  11. disp:setFont(u8g.font_6x10)
  12. disp:setFontRefHeightExtendedText()
  13. disp:setDefaultForegroundColor()
  14. disp:setFontPosTop()
  15. end
  16.  
  17. function box_frame(a)
  18. disp:drawStr(0, 0, "drawBox")
  19. disp:drawBox(5, 10, 20, 10)
  20. disp:drawBox(10+a, 15, 30, 7)
  21. disp:drawStr(0, 30, "drawFrame")
  22. disp:drawFrame(5, 10+30, 20, 10)
  23. disp:drawFrame(10+a, 15+30, 30, 7)
  24. end
  25.  
  26. function disc_circle(a)
  27. disp:drawStr(0, 0, "drawDisc")
  28. disp:drawDisc(10, 18, 9)
  29. disp:drawDisc(24+a, 16, 7)
  30. disp:drawStr(0, 30, "drawCircle")
  31. disp:drawCircle(10, 18+30, 9)
  32. disp:drawCircle(24+a, 16+30, 7)
  33. end
  34.  
  35. function r_frame(a)
  36. disp:drawStr(0, 0, "drawRFrame/Box")
  37. disp:drawRFrame(5, 10, 40, 30, a+1)
  38. disp:drawRBox(50, 10, 25, 40, a+1)
  39. end
  40.  
  41. function stringtest(a)
  42. disp:drawStr(30+a, 31, " 0")
  43. disp:drawStr90(30, 31+a, " 90")
  44. disp:drawStr180(30-a, 31, " 180")
  45. disp:drawStr270(30, 31-a, " 270")
  46. end
  47.  
  48. function line(a)
  49. disp:drawStr(0, 0, "drawLine")
  50. disp:drawLine(7+a, 10, 40, 55)
  51. disp:drawLine(7+a*2, 10, 60, 55)
  52. disp:drawLine(7+a*3, 10, 80, 55)
  53. disp:drawLine(7+a*4, 10, 100, 55)
  54. end
  55.  
  56. function triangle(a)
  57. local offset = a
  58. disp:drawStr(0, 0, "drawTriangle")
  59. disp:drawTriangle(14,7, 45,30, 10,40)
  60. disp:drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset)
  61. disp:drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53)
  62. disp:drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset)
  63. end
  64.  
  65. function ascii_1()
  66. local x, y, s
  67. disp:drawStr(0, 0, "ASCII page 1")
  68. for y = 0, 5, 1 do
  69. for x = 0, 15, 1 do
  70. s = y*16 + x + 32
  71. disp:drawStr(x*7, y*10+10, string.char(s))
  72. end
  73. end
  74. end
  75.  
  76. function extra_page(a)
  77. disp:drawStr(0, 12, "setScale2x2")
  78. disp:setScale2x2()
  79. disp:drawStr(0, 6+a, "setScale2x2")
  80. disp:undoScale()
  81. end
  82.  
  83.  
  84. -- the draw() routine
  85. function draw(draw_state)
  86. local component = bit.rshift(draw_state, 3)
  87.  
  88. prepare()
  89.  
  90. if (component == 0) then
  91. box_frame(bit.band(draw_state, 7))
  92. elseif (component == 1) then
  93. disc_circle(bit.band(draw_state, 7))
  94. elseif (component == 2) then
  95. r_frame(bit.band(draw_state, 7))
  96. elseif (component == 3) then
  97. stringtest(bit.band(draw_state, 7))
  98. elseif (component == 4) then
  99. line(bit.band(draw_state, 7))
  100. elseif (component == 5) then
  101. triangle(bit.band(draw_state, 7))
  102. elseif (component == 6) then
  103. ascii_1()
  104. elseif (component == 7) then
  105. extra_page(bit.band(draw_state, 7))
  106. end
  107. end
  108.  
  109. function graphics_test()
  110.  
  111. disp:firstPage()
  112. repeat
  113. draw(draw_state)
  114. until disp:nextPage() == false
  115.  
  116. if (draw_state <= 7 + 8*8) then
  117. draw_state = draw_state + 1
  118. else
  119. print("--- Restarting Graphics Test ---")
  120. draw_state = 0
  121. end
  122.  
  123. print("Heap: " .. node.heap())
  124. -- retrigger timer to give room for system housekeeping
  125. tmr.start(0)
  126. end
  127.  
  128. draw_state = 0
  129.  
  130. init_spi_display()
  131.  
  132. -- set up timer 0 with short interval, will be retriggered in graphics_test()
  133. tmr.register(0, 100, tmr.ALARM_SEMI, function() graphics_test() end)
  134.  
  135. print("--- Starting Graphics Test ---")
  136. tmr.start(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement