main.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. PROJECT = "camerademo"
  2. VERSION = "1.0.0"
  3. sys = require("sys")
  4. --[[
  5. -- LCD接法示例, 以Air105开发板的HSPI为例
  6. LCD管脚 Air105管脚
  7. GND GND
  8. VCC 3.3V
  9. SCL (PC15/HSPI_SCK)
  10. SDA (PC13/HSPI_MOSI)
  11. RES (PC12/HSPI_MISO)
  12. DC (PE08) --开发板上的U3_RX
  13. CS (PC14/HSPI_CS)
  14. BL (PE09) --开发板上的U3_TX
  15. 提示:
  16. 1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
  17. 2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
  18. ]]
  19. if wdt then
  20. wdt.init(9000)--初始化watchdog设置为9s
  21. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  22. end
  23. spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,48*1000*1000,spi.MSB,1,1)
  24. -- log.info("lcd.init",
  25. -- lcd.init("st7735s",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))
  26. log.info("lcd.init",
  27. lcd.init("st7789",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  28. -- log.info("lcd.init",
  29. -- lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
  30. -- log.info("lcd.init",
  31. -- lcd.init("gc9306x",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))
  32. --GC032A输出rgb图像初始化命令
  33. local GC032A_InitReg =
  34. {
  35. zbar_scan = 0,--是否为扫码
  36. draw_lcd = 1,--是否向lcd输出
  37. i2c_id = 0,
  38. i2c_addr = 0x21,
  39. pwm_id = 5;
  40. pwm_period = 12*1000*1000,
  41. pwm_pulse = 0,
  42. sensor_width = 640,
  43. sensor_height = 480,
  44. color_bit = 16,
  45. init_cmd ="/luadb/GC032A_InitReg.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
  46. }
  47. --GC032A输出灰度图像初始化命令
  48. local GC032A_InitReg_Gray =
  49. {
  50. zbar_scan = 1,--是否为扫码
  51. draw_lcd = 1,--是否向lcd输出
  52. i2c_id = 0,
  53. i2c_addr = 0x21,
  54. pwm_id = 5;
  55. pwm_period = 24*1000*1000,
  56. pwm_pulse = 0,
  57. sensor_width = 640,
  58. sensor_height = 480,
  59. color_bit = 16,
  60. init_cmd ="/luadb/GC032A_InitReg_Gray.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
  61. }
  62. --注册摄像头事件回调
  63. camera.on(0, "scanned", function(id, str)
  64. if type(str) == 'string' then
  65. log.info("扫码结果", str)
  66. else
  67. log.info("拍照结果", str)
  68. end
  69. end)
  70. local camera_pwdn = gpio.setup(pin.PD06, 1, gpio.PULLUP) -- PD06 camera_pwdn引脚
  71. local camera_rst = gpio.setup(pin.PD07, 1, gpio.PULLUP) -- PD07 camera_rst引脚
  72. sys.taskInit(function()
  73. camera_rst(0)
  74. --下面两行只开一行!一个是屏幕输出rgb图像,一个是屏幕输出灰度图像并扫码
  75. -- local camera_id = camera.init(GC032A_InitReg)--屏幕输出rgb图像
  76. local camera_id = camera.init(GC032A_InitReg_Gray)--屏幕输出灰度图像并扫码
  77. log.info("摄像头启动")
  78. camera.start(camera_id)--开始指定的camera
  79. sys.wait(2000)
  80. -- log.info("摄像头停止")
  81. -- camera.stop(camera_id)--停止指定的camera
  82. -- sys.wait(2000)
  83. -- log.info("摄像头启动")
  84. -- camera.start(camera_id)--开始指定的camera
  85. -- sys.wait(2000)
  86. -- log.info("摄像头关闭")
  87. -- camera_rst(1)
  88. -- camera.close(camera_id)
  89. --下面的功能必须有支持camera.close的固件才能打开
  90. -- log.info("摄像头重新初始化")
  91. -- camera_rst(0)
  92. -- camera_id = camera.init(GC032A_InitReg_Gray)--屏幕输出灰度图像并扫码
  93. -- log.info("摄像头启动")
  94. -- camera.start(camera_id)--开始指定的camera
  95. --下面的功能必须有支持拍照的固件才能打开
  96. -- camera_rst(0)
  97. -- camera_id = camera.init(GC032A_InitReg)--屏幕输出灰度图像并扫码
  98. -- log.info("摄像头启动")
  99. -- camera.start(camera_id)--开始指定的camera
  100. -- sys.wait(2000)
  101. -- log.debug("摄像头捕获图像")
  102. -- camera.capture(camera_id, "/temp.jpg", 1)
  103. -- sys.wait(2000)
  104. -- local f = io.open("/temp.jpg", "r")
  105. -- local data
  106. -- if f then
  107. -- data = f:read("*a")
  108. -- log.info("fs", #data)
  109. -- f:close()
  110. -- end
  111. -- local uartid = 2 -- 根据实际设备选取不同的uartid
  112. -- --初始化
  113. -- local result = uart.setup(
  114. -- uartid,--串口id
  115. -- 115200,--波特率
  116. -- 8,--数据位
  117. -- 1--停止位
  118. -- )
  119. -- uart.write(uartid, data) --找个能保存数据的串口工具保存成文件就能在电脑上看了
  120. end)
  121. -- 用户代码已结束---------------------------------------------
  122. -- 结尾总是这一句
  123. sys.run()
  124. -- sys.run()之后后面不要加任何语句!!!!!