Advertisement
Guest User

rocketcode_SpaceY

a guest
Jun 26th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #include <SparkFun_ADXL345.h>
  2. #include <Wire.h>
  3. #include <Servo.h>
  4. #include <BMP180.h>
  5. #include <SPI.h>
  6. #include <SD.h>
  7. #include <SoftwareSerial.h>
  8.  
  9. #define LED 7
  10. #define BUZZER 8
  11. #define SERVO 9
  12. #define VOL A2
  13. #define LDR A3
  14. #define offsetX -123 //numbers for calibration
  15. #define offsetY -16
  16. #define offsetZ -10
  17. #define gainX 133
  18. #define gainY 261
  19. #define gainZ 248
  20.  
  21. ADXL345 adxl = ADXL345();
  22. File data;
  23. Servo servo;
  24. BMP180 bmp;
  25.  
  26. float alt[2],pres,temp,volt;
  27. double a;
  28. int x,y,z;
  29. int condition;
  30. int ldr;
  31. unsigned long stagetime[3];
  32. int cond[4];
  33. int rescSys = 0;
  34. double accX = 0;
  35. double accY = 0;
  36. double accZ = 0;
  37.  
  38. void setup() {
  39. Serial.begin(9600);
  40. Serial1.begin(9600);
  41. Serial1.setTimeout(200);
  42. pinMode(LDR, INPUT);
  43. pinMode(LED,OUTPUT);
  44. pinMode(BUZZER,OUTPUT);
  45. pinMode(SERVO,OUTPUT);
  46. adxl.powerOn();
  47. adxl.setRangeSetting(4);
  48. adxl.setActivityXYZ(1, 1, 1);
  49. bmp.begin();
  50. servo.attach(SERVO);
  51. servo.write(100);
  52. data = SD.open("data.txt", FILE_WRITE);
  53. cond[0] = 0;
  54. cond[1] = 0;
  55. cond[2] = 0;
  56. cond[3] = 0;
  57. alt[0] = 0;
  58. alt[1] = 0;
  59. delay(15000);
  60. tone(BUZZER,3000,2000);
  61. ldr = analogRead(LDR);
  62.  
  63. /*for(int i=0;i<3;i++) {
  64. digitalWrite(LED,HIGH);
  65. tone(BUZZER,1000);
  66. delay(1000);
  67. digitalWrite(LED,LOW);
  68. noTone(BUZZER);
  69. delay(1000);
  70. }*/
  71. //LDRtest();
  72. //digitalWrite(LED,LOW);
  73. }
  74. void loop() {
  75. condition = checkCondition();
  76. //Serial.println((String)"CONDITION: "+condition);
  77. if(condition == 0) cond[0] = 1;
  78. else if(condition == 1) cond[1] = 1;
  79. else if(condition == 2 && rescSys == 0) {
  80. enableRescsys();
  81. cond[2] = 1;
  82. }
  83. else if(condition == 3) {
  84. cond[3] = 1;
  85. while(1) {
  86. //Serial.println("HELLO");
  87. tone(BUZZER,3000,250);
  88. dataGet();
  89. dataWrite();
  90. delay(500);
  91. }
  92. }
  93. dataGet();
  94. dataWrite();
  95. //bmpDisp();
  96. Serial.println(analogRead(LDR));
  97. alt[1] = alt[0];
  98. delay(500);
  99. }
  100. void dataGet() {
  101. bmp.read(3);
  102. alt[0] = bmp.alti;
  103. temp = bmp.temp;
  104. pres = bmp.pres;
  105. adxl.readAccel(&x, &y, &z);
  106.  
  107. accX = ((double)x - offsetX)/gainX;
  108. accY = ((double)y - offsetY)/gainY;
  109. accZ = ((double)z - offsetZ)/gainZ;
  110.  
  111. a = sqrt(accX*accX + accY*accY + accZ*accZ);
  112. }
  113. void dataWriteSD() {
  114. if(data) {
  115. Serial.print("Writing to data.txt...");
  116. data.println((String)"03"+';'+millis()+';'+alt[0]+';'+a+';'+volt+';'+cond[0]+';'+cond[1]+';'+cond[2]+';'); //cond[3]
  117. Serial.println("Done.");
  118. }
  119. else Serial.println("Error opening data.txt");
  120. }
  121. void dataWrite() {
  122. Serial1.println((String)"03"+';'+millis()+';'+alt[0]+';'+a+';'+volt+';'+cond[0]+';'+cond[1]+';'+cond[2]+';'+cond[3]);
  123. Serial.println((String)"03"+';'+millis()+';'+alt[0]+';'+a+';'+volt+';'+cond[0]+';'+cond[1]+';'+cond[2]+';'+cond[3]);
  124. }
  125. void bmpDisp() {
  126. Serial.println((String)"P="+pres+" MM.PT.CT | T="+temp+" *C | B="+alt[0]+" M. | A="+a+"M/C^2");
  127. }
  128. void enableRescsys() {
  129. servo.write(10);
  130. Serial.println("ENABLED");
  131. rescSys = 1;
  132. }
  133. int checkCondition() {
  134. if((alt[0] - alt[1] > 3.5 || alt[0] > 7) && cond[0] == 0) return 0;
  135. if((analogRead(LDR)>(ldr+100) || analogRead(LDR)>1000) && cond[1] == 0) return 1;
  136. if((cond[1] == 1) && (alt[0] >= 40)) return 2;
  137. if((cond[2] == 1) && (alt[0] <= 3)) return 3;
  138. return -1;
  139. }
  140. void LDRtest() {
  141. unsigned long tmp;
  142. unsigned int val;
  143. tmp = millis();
  144. while(millis() - tmp < 10000) { //10seс
  145. val = analogRead(LDR);
  146. if(val>900) {
  147. digitalWrite(LED,HIGH);
  148. tone(BUZZER,3000,10);
  149. }
  150. else digitalWrite(LED,LOW);
  151. }
  152. return;
  153. }
  154.  
  155. //VOLTAGE MEASURE!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement