Advertisement
Guest User

Untitled

a guest
Apr 1st, 2016
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.18 KB | None | 0 0
  1. --Definitionen
  2. id  = 0
  3. sda = 3 --GPIO0
  4. scl = 4 --GPIO2
  5. dev_addr = 0x68 --Addr des Gyros
  6.  
  7. --print("IIC init")
  8.  
  9. --I2C initialisieren
  10. i2c.setup(id, sda, scl, i2c.SLOW)
  11.  
  12. --print("Wake")
  13.  
  14. --MPU aufwecken
  15. i2c.start(id)
  16. i2c.address(id, dev_addr, i2c.TRANSMITTER)
  17. i2c.write(id, 0x6b)
  18. i2c.write(id, 0x00)
  19.  
  20. -- Selbsttest Gyro
  21. --i2c.start(id)
  22. --i2c.address(id, dev_addr, i2c.TRANSMITTER)
  23. --i2c.write(id, 0x1b)
  24. --i2c.write(id, 0b01000000)
  25. --i2c.stop(id)
  26.  
  27. --print("Gyro init")
  28.  
  29. --Gyro einstellen auf 250Grad/sek
  30. i2c.start(id)
  31. i2c.address(id, dev_addr, i2c.TRANSMITTER)
  32. i2c.write(id, 0x1b)
  33. i2c.write(id, 0)
  34. i2c.stop(id)
  35.  
  36. --print("Funktion")
  37.  
  38. --Funktion zum Auslesen eines Registers
  39. function read_reg(reg_addr)
  40. --print("debug")
  41.     i2c.start(id)
  42.     i2c.address(id, dev_addr, i2c.TRANSMITTER)
  43.     i2c.write(id, reg_addr)
  44.     i2c.stop(id)
  45.     i2c.start(id)
  46.     i2c.address(id, dev_addr, i2c.RECEIVER)
  47.     c = i2c.read(id, 1)
  48.     i2c.stop(id)
  49.     return c
  50. end
  51.  
  52. -- Chance auf Reset (MPU abstecken, neustarten, Programm endet hier
  53. if (string.byte(read_reg(0x75)) == 104) then
  54.  
  55. while (true) do
  56. Gyro1 = (string.byte(read_reg( 0x45)))*256
  57. Gyro2 = string.byte(read_reg( 0x46))
  58. Gyro = Gyro1 + Gyro2
  59.  
  60. AccX1 = (string.byte(read_reg( 0x3B)))*256
  61. AccX2 = string.byte(read_reg( 0x3C))
  62. AccX = AccX1 + AccX2
  63.  
  64. AccZ1 = (string.byte(read_reg( 0x3F)))*256
  65. AccZ2 = string.byte(read_reg( 0x40))
  66. AccZ = AccZ1 + AccZ2
  67.  
  68. --out = string.format(%f;%f;%f, Gyro, AccX, AccZ)
  69. print(readdata())
  70. tmr.delay(10)
  71. end
  72.  
  73. end
  74.  
  75. ---##################################
  76. readdata = function()
  77.  
  78. Gyro1 = (string.byte(read_reg( 0x45)))*256
  79. Gyro2 = string.byte(read_reg( 0x46))
  80. Gyro = fillvalue(Gyro1 + Gyro2)
  81.  
  82. AccX1 = (string.byte(read_reg( 0x3B)))*256
  83. AccX2 = string.byte(read_reg( 0x3C))
  84. AccX = fillvalue(AccX1 + AccX2)
  85.  
  86. AccZ1 = (string.byte(read_reg( 0x3F)))*256
  87. AccZ2 = string.byte(read_reg( 0x40))
  88. AccZ = fillvalue(AccZ1 + AccZ2)
  89.  
  90. out = Gyro .. ";" .. AccX .. ";" .. AccZ
  91.  
  92. return out
  93. end
  94.  
  95. ---##################################
  96. fillvalue = function(startvalue)
  97. endvalue = startvalue
  98. tostring(endvalue)
  99. while (string.len(endvalue) < 5) do
  100. endvalue = ("0" .. endvalue)
  101. end
  102. return endvalue
  103. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement