Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. #include "I2Cdev.h"
  2. #include "MPU6050.h"
  3. #include "Wire.h"
  4. const int MPU2 = 0x69, MPU1=0x68;
  5. #include <SPI.h> //the communication interface with the modem
  6. #include "RF24.h"
  7.  
  8. long accelX, accelY, accelZ;
  9. float gForceX, gForceY, gForceZ, gyroX, gyroY, gyroZ,rotX, rotY, rotZ;
  10. long accelX2, accelY2, accelZ2;
  11. float gForceX2, gForceY2, gForceZ2;
  12.  
  13. #define ESPERA_INICIO 10
  14. #define ESPERA_FINAL 10
  15.  
  16. #define MAX_ACE 100
  17. #define MIN_ACE 30
  18.  
  19. unsigned long tiempoAnterior = 0;
  20. unsigned long etapa = 1;
  21.  
  22. bool tocando = 0;
  23.  
  24. // La dirección del MPU6050 puede ser 0x68 o 0x69, dependiendo
  25. // del estado de AD0. Si no se especifica, 0x68 estará implicito
  26. MPU6050 sensor;
  27.  
  28. // Valores RAW (sin procesar) del acelerometro y giroscopio en los ejes x,y,z
  29. int ax, ay, az;
  30. int gx, gy, gz;
  31.  
  32. RF24 radio(7,8); //5 and 10 are a digital pin numbers to which signals CE and CSN are connected.
  33.  
  34. const uint64_t pipe = 0xE8E8F0F0E1LL;
  35.  
  36. void setup() {
  37. Wire.begin();
  38. Wire.beginTransmission(MPU1);
  39. Wire.write(0x6B);
  40. Wire.write(0b00000000);
  41. Wire.endTransmission();
  42. Wire.beginTransmission(MPU1);
  43. Wire.write(0x1B);
  44. Wire.write(0x00000000);
  45. Wire.endTransmission();
  46. Wire.beginTransmission(MPU1);
  47. Wire.write(0x1C);
  48. Wire.write(0b00000000);
  49. Wire.endTransmission();
  50.  
  51. Wire.begin();
  52. Wire.beginTransmission(MPU2);
  53. Wire.write(0x6B);
  54. Wire.write(0b00000000);
  55. Wire.endTransmission();
  56. Wire.beginTransmission(MPU2);
  57. Wire.write(0x1B);
  58. Wire.write(0x00000000);
  59. Wire.endTransmission();
  60. Wire.beginTransmission(MPU2);
  61. Wire.write(0x1C);
  62. Wire.write(0b00000000);
  63. Wire.endTransmission();
  64.  
  65. sensor.initialize(); //Iniciando el sensor
  66. Serial.begin(9600);
  67. radio.begin(); //it activates the modem.
  68. radio.openWritingPipe(pipe);
  69. }
  70.  
  71. void loop() {
  72.  
  73. GetMpuValue(MPU1);
  74. //Serial.print("\t ||| \t");
  75. GetMpuValue(MPU2);
  76. //Serial.println("");
  77.  
  78. int x,y,z;
  79. int xCode, yCode, zCode;
  80. unsigned long diferencia = 0;
  81. int mensaje = 1;
  82.  
  83. x = abs(x);
  84. y = abs(y);
  85. z = abs(z);
  86.  
  87.  
  88. switch (etapa)
  89. {
  90. case 1:
  91. if ((x > MAX_ACE) or (y > MAX_ACE) or (z > MAX_ACE))
  92. {
  93. tiempoAnterior = millis();
  94. radio.write(&etapa, sizeof(etapa));
  95. etapa++;
  96. }
  97.  
  98. break;
  99.  
  100. case 2:
  101. diferencia = millis() - tiempoAnterior;
  102. if (diferencia > ESPERA_INICIO)
  103. {
  104. if ((x > MAX_ACE) or (y > MAX_ACE) or (z > MAX_ACE))
  105. {
  106. //confirma que hay un movimiento, y pasa INMEDIATAMENTE a la siguiente etapa
  107. radio.write(&etapa, sizeof(etapa));
  108.  
  109. tiempoAnterior = millis();
  110. etapa++;
  111. }
  112. else
  113. {
  114. etapa = 1;
  115. }
  116. }
  117.  
  118. break;
  119.  
  120. case 3: //etapa en la cual enviamos x, y, z
  121. if ((x < MIN_ACE) && (y < MIN_ACE) && (z < MIN_ACE))
  122. {
  123. tiempoAnterior = millis();
  124. radio.write(&etapa, sizeof(etapa));
  125. etapa++;
  126. }
  127. xCode = x + 1000;
  128. yCode = y + 2000;
  129. zCode = z + 3000;
  130. radio.write(&xCode, sizeof(xCode));
  131. radio.write(&yCode, sizeof(yCode));
  132. radio.write(&zCode, sizeof(zCode));
  133. //Serial.println(yCode);
  134.  
  135. break;
  136.  
  137. case 4:
  138. diferencia = millis() - tiempoAnterior;
  139. if (diferencia > ESPERA_FINAL)
  140. {
  141. if ((x < MIN_ACE) && (z < MIN_ACE))
  142. {
  143. //confirmar el positivo y negativo
  144. mensaje = 1;
  145. radio.write(&etapa, sizeof(etapa));
  146. etapa = 1;
  147. }
  148. else
  149. {
  150. etapa = 3;
  151. }
  152. }
  153. break;
  154. }
  155. }
  156.  
  157.  
  158.  
  159. void GetMpuValue(const int MPU){
  160. Wire.beginTransmission(MPU);
  161. Wire.write(0x3B);
  162. Wire.endTransmission();
  163. Wire.requestFrom(MPU,6);
  164. while(Wire.available() < 6);
  165. accelX = Wire.read()<<8|Wire.read();
  166. accelY = Wire.read()<<8|Wire.read();
  167. accelZ = Wire.read()<<8|Wire.read();
  168.  
  169. Wire.beginTransmission(MPU);
  170. Wire.write(0x43);
  171. Wire.endTransmission();
  172. Wire.requestFrom(MPU,6);
  173. while(Wire.available() < 6);
  174. gyroX = Wire.read()<<8|Wire.read();
  175. gyroY = Wire.read()<<8|Wire.read();
  176. gyroZ = Wire.read()<<8|Wire.read();
  177.  
  178.  
  179. gForceX = accelX / 16384.0;
  180. gForceY = accelY / 16384.0;
  181. gForceZ = accelZ / 16384.0;
  182. rotX = gyroX / 131.0;
  183. rotY = gyroY / 131.0;
  184. rotZ = gyroZ / 131.0;
  185. //Serial.print("gyro\t");
  186. Serial.print(rotX);
  187. /*Serial.print("\t");
  188. Serial.print(rotY);
  189. Serial.print("\t");
  190. Serial.print(rotZ);
  191. Serial.print("\tAcc\t");*/
  192. Serial.print(gForceX);
  193. /* Serial.print("\t");
  194. Serial.print(gForceY);
  195. Serial.print("\t");
  196. Serial.print(gForceZ);*/
  197. delay(100);
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement