Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ --"); Serial.println(“”); 测试阶段1(); } 其他的 { Serial.println(“-----------------------------------”); 序列号.println(“空气阶段进行中”); Serial_C++_Arduino_Samd21 - Fatal编程技术网

C++ --"); Serial.println(“”); 测试阶段1(); } 其他的 { Serial.println(“-----------------------------------”); 序列号.println(“空气阶段进行中”); Serial

C++ --"); Serial.println(“”); 测试阶段1(); } 其他的 { Serial.println(“-----------------------------------”); 序列号.println(“空气阶段进行中”); Serial,c++,arduino,samd21,C++,Arduino,Samd21,--"); Serial.println(“”); 测试阶段1(); } 其他的 { Serial.println(“-----------------------------------”); 序列号.println(“空气阶段进行中”); Serial.println(“-----------------------------------”); Serial.println(“”); } } void WaitingPhase() { Serial.println(“---------

--"); Serial.println(“”); 测试阶段1(); } 其他的 { Serial.println(“-----------------------------------”); 序列号.println(“空气阶段进行中”); Serial.println(“-----------------------------------”); Serial.println(“”); } } void WaitingPhase() { Serial.println(“-----------------------------------”); Serial.println(“正在进行的等待阶段”); Serial.println(“-----------------------------------”); Serial.println(“”); 数字写入(O2Pin,低); 数字写入(MICS6814引脚,低电平); 数字写入(MICSVZ89TEPin,低电平); 数字写入(DcPin,低电平); 数字写入(D13_led_引脚,低电平); 数字写入(M_led_引脚,低电平); 睡眠(); 字节秒=0; 字节分钟=00; 字节小时数=00; rtc.设置时间(小时、分钟、秒); rtc.设置日期(日、月、年); rtc.setAlarmTime(00,00,10); rtc.enableAlarm(rtc.MATCH_HHMMSS); rtc.standbyMode(); 陆地酶(); } 无效测试阶段2() { Serial.println(“-----------------------------------”); Serial.println(“测试阶段完成”); Serial.println(“-----------------------------------”); Serial.println(“”); Serial.println(“-----------------------------------”); Serial.println(“起始地面阶段”); Serial.println(“-----------------------------------”); Serial.println(“”); 陆地酶(); } 无效测试阶段1() { 如果((gForceX>=3.60)| |(gForceX=2.9)和&(gForceY=3.30)| |(gForceX=2.9)和&(gForceY=3)|(gForceX=2.9)和&(gForceY)
#include <Adafruit_BME280.h>  // include Adafruit BME280 library
  #include <Adafruit_INA219.h>  // include INA219
  #include <SD.h>          // include Arduino SD library
  #include "Open_Cansat_GPS.h"
  #include <RTCZero.h>

  //include our new sensors
  #include <MICS6814.h>
  #include <MICS-VZ-89TE.h>
  #include "MQ131.h"

  #include <Wire.h>
  #include <SPI.h>

  #include "RFM69.h"       // include RFM69 library

  // Local
  #define PC_BAUDRATE       115200
  #define MS_DELAY    0  // Number of milliseconds between data sending and LED signalization
  #define LED_DELAY     100
  #define Serial SerialUSB
  RTCZero rtc;

  // RFM69
  #define NETWORKID       0        
  #define MYNODEID        1         
  #define TONODEID        2          
  #define FREQUENCY       RF69_433MHZ   
  #define FREQUENCYSPECIFIC 433000000  // Should be value in Hz, now 433 Mhz will be set
  #define CHIP_SELECT_PIN   43 //radio chip select
  #define INTERUP_PIN       9 //radio interrupt

  // BME280 SETTING
  #define BME280_ADDRESS_OPEN_CANSAT 0x77
  #define SEALEVELPRESSURE_HPA    1013.25

  //define our sensor pins
  //MICS6814
  #define PIN_CO  0
  #define PIN_NO2 0
  #define PIN_NH3 0
  #define MICS6814Pin 6
  //OZONE2CLICK
  const byte pinSS = 2; //cs pin
  const byte pinRDY = 12;
  const byte pinSCK = 13;
  const byte O2Pin = 10;
  //SMUART
  bool flag1 = false;
  bool flag2 = false;
  byte rxData[30];
  byte one, two;
  #define DcPin 8
  //MICSVZ89TE
  #define MICSVZ89TEPin 7
  int datas [7];
  bool MICS_status;
  int MICS_voc;
  int MICS_eqco2;
  //PHASES
  float CurrentTime;
  const byte day = 17;
  const byte month = 11;
  const byte year = 15;

  //our sensors settings
  //MICS6814
  MICS6814 gas(PIN_CO, PIN_NO2, PIN_NH3);
  //gyroscope
  long accelX, accelY, accelZ;
  float gForceX, gForceY, gForceZ;

  long gyroX, gyroY, gyroZ;
  float rotX, rotY, rotZ;
  // SD card
  #define sd_cs_pin 35 // set SD's chip select pin (according to the circuit)

  // create object 'rf69' from the library, which will
  // be used to access the library methods by a dot notation
  RFM69 radio(CHIP_SELECT_PIN, INTERUP_PIN, true);

  // define our own struct data type with variables; used to send data
  typedef struct
  {
    int16_t messageId;
    uint16_t year;
    uint8_t month;
    uint8_t day;
    uint8_t hour;
    uint8_t minute;
    uint8_t sec;
    float longitude;
    float latitude;
    uint8_t num_of_satelites;
    float temperature;
    float pressure;
    float altitude;
    float humidity_bme280;
    float voltage_shunt;
    float voltage_bus;
    float current_mA;
    float voltage_load;
    int16_t rssi;
  } messageOut;

  messageOut cansatdata; //create the struct variable

  // create object 'bme' from the library, which will
  // be used to access the library methods by a dot notation
  Adafruit_BME280 bme;

  // create object 'ina219' from the library with address 0x40
  // (according to the circuit, which will be used to access the
  // library methods by a dot notation
  Adafruit_INA219 ina219(0x40);

  // create object 'gps' from the library
  OpenCansatGPS gps;

  // SD card 
  File file; // SD library variable

  // LEDS
  #define D13_led_pin 42  // D13 LED
  #define M_led_pin 36  // MLED

  // Local variables
  int idCounter = 1;
  bool isBmeOk = true;
  bool isSdOk = true;
  bool isRadioOk = true;
  bool isGpsConnected = true;

  

    void RTCBegin ()
  {
    rtc.begin();
  }

  void RTCSleep ()
{

  digitalWrite(O2Pin, LOW);
  digitalWrite(MICS6814Pin, LOW);
  digitalWrite(MICSVZ89TEPin, LOW);
  digitalWrite(DcPin, LOW);
  digitalWrite(D13_led_pin, LOW);
  digitalWrite(M_led_pin, LOW);
  GyroscopeSleep();
  delay(1000);
  
  byte seconds = 0;
  byte minutes = 00;
  byte hours = 00;
 
  rtc.setTime(hours, minutes, seconds);
  rtc.setDate(day, month, year);

  rtc.setAlarmTime(00, 00, 10);
  rtc.enableAlarm(rtc.MATCH_HHMMSS);

  rtc.standbyMode();
  delay(1000);
  TerrestrialPhase();
   // Sleep until next alarm match
}

  

void TerrestrialPhase()
  {    
    Serial.begin(9600);
    Serial.println("------------------------------");
    Serial.println("TERRESTRIAL PHASE IN PROGRESS");
    Serial.println("------------------------------");
    Serial.println(" ");    
    digitalWrite(DcPin, HIGH);
    digitalWrite(MICS6814Pin, HIGH);
    digitalWrite(MICSVZ89TEPin, HIGH);
    digitalWrite(O2Pin, HIGH);
    delay(2000);
    MICSVZ89TEMeasure();
    MICSVZ89TEMeasure();
    MICSVZ89TEMeasure();
    MICSVZ89TEMeasure();
    MICS6814Calibrate();
    MICS6814Measure();
    SMUARTTurnOn();
    delay(10000);
    SMUARTMeasure();
    delay(10000);
    SMUARTMeasure();
    delay(1000);
    SMUARTMeasure();
    delay(1000);
    SMUARTMeasure();
    delay(10000);
    SDSave();
    delay(1000);
    
  }
   
  void LandingChecker()
  {
    CurrentTime = millis();
    Serial.println(CurrentTime);
    if (CurrentTime >= 3000)
    {
      Serial.println("------------------------------");
      Serial.println("AIR PHASE DONE");
      Serial.println("------------------------------");
      Serial.println(" ");
      Serial.println("------------------------------");
      Serial.println("STARTING TESTING PHASE");
      Serial.println("------------------------------");
      Serial.println(" ");
      TestingPhase1();
    }
        else 
    {
      Serial.println("------------------------------");
      Serial.println("AIR PHASE IN PROGRESS");
      Serial.println("------------------------------");
      Serial.println(" ");
    }
  }

  void WaitingPhase()
  {  
  Serial.println("------------------------------");
  Serial.println("WAITING PHASE IN PROGRESS");
  Serial.println("------------------------------");
  Serial.println(" ");
  digitalWrite(O2Pin, LOW);
  digitalWrite(MICS6814Pin, LOW);
  digitalWrite(MICSVZ89TEPin, LOW);
  digitalWrite(DcPin, LOW);
  digitalWrite(D13_led_pin, LOW);
  digitalWrite(M_led_pin, LOW);
  GyroscopeSleep();
  
  byte seconds = 0;
  byte minutes = 00;
  byte hours = 00;
 
  rtc.setTime(hours, minutes, seconds);
  rtc.setDate(day, month, year);

  rtc.setAlarmTime(00, 00, 10);
  rtc.enableAlarm(rtc.MATCH_HHMMSS);

  rtc.standbyMode();
  TerrestrialPhase();
  }
    
  void TestingPhase2()
  {    
      Serial.println("------------------------------");
      Serial.println("TESTING PHASE DONE");
      Serial.println("------------------------------");
      Serial.println(" ");
      Serial.println("------------------------------");
      Serial.println("STARTING TERRESTRIAL PHASE");
      Serial.println("------------------------------");
      Serial.println(" ");
      TerrestrialPhase();
  }
  
  void TestingPhase1()
  {
    
    if (((gForceX >= 3.60) || (gForceX <= 0.40)) && ((gForceY >= 2.9) && (gForceY <= 3.20)))
    {
      Serial.println("------------------------------");
      Serial.println("SATELITE POSITION: VERY GOOD");
      Serial.println("------------------------------");
      Serial.println(" ");
      TestingPhase2();
    }

    else if (((gForceX >= 3.30) || (gForceX <= 0.70)) && ((gForceY >= 2.9) && (gForceY <= 3.30)))
    {
      Serial.println("------------------------------");
      Serial.println("SATELITE POSITION: GOOD");
      Serial.println("------------------------------");
      Serial.println(" ");
      TestingPhase2();
    }

    else if (((gForceX >= 3) || (gForceX <= 1)) && ((gForceY >= 2.9) && (gForceY <= 4)))
    {
      Serial.println("------------------------------");
      Serial.println("SATELITE POSITION: OK");
      Serial.println("------------------------------");
      Serial.println(" ");
      TestingPhase2();
    }

    else
    {
      Serial.println("------------------------------");
      Serial.println("SATELITE POSITION: BAD");
      Serial.println("------------------------------");
      Serial.println(" ");
      Serial.println("------------------------------");
      Serial.println("TESTING PHASE FAILED");
      Serial.println("------------------------------");
      Serial.println(" ");
      WaitingPhase();
    }
    }
   
  void SDSave()
  {
    while(!Serial);
    
    if (!SD.begin(sd_cs_pin))
    {
      Serial.println("SD card initialization failed!");
      return;
    }
    
    Serial.println("SD card initialized");

    file = SD.open("data.txt", FILE_WRITE); // Open test.txt for write

    // Rrite to the file and print info to serial
    // print an error to the serial in case it does not succeed
    if (file) 
    {
      file.println(" ");
      file.println("--------------------------");
      file.println("GyKoVySAT TERRESTRIAL DATA");
      file.println("--------------------------");
        file.println("OZONE");
      file.print(PPMO2);
        file.println(" ppm");
      file.print(PPBO2);
        file.println(" ppb");
      file.print(MGM3O2);
        file.println(" mg/m³");
      file.print(UGM3O2);
        file.println(" ug/m³");

        file.println("SMOKE PARTICLES STANDART");
      file.print(SSmoke1);
        file.println(" μg/m³");
      file.print(SSmoke2);
        file.println(" μg/m³");
      file.print(SSmoke3);
        file.println(" μg/m³");

        file.println("SMOKE PARTICLES ENVIROMENTAL");
      file.print(ESmoke1);
        file.println(" μg/m³");
      file.print(ESmoke2);
        file.println(" μg/m³");
      file.print(ESmoke3);
        file.println(" μg/m³");

        file.println("VOC");
      file.print(MICS_voc);
        file.println(" ppm");

        file.println("CO2");
      file.print(MICS_eqco2);
        file.println(" ppm");

        file.println("CO");
      file.print(COData);
        file.println(" ppm");

        file.println("NO2");
      file.print(NO2Data);
        file.println(" ppm");

        file.println("NH3");
      file.print(NH3Data);
        file.println(" ppm");
      
      
        
      file.close();

      DataCounter =  DataCounter + 1;
    } 
    else 
    {
      Serial.println("Error opening data.txt for writing");
    }
    delay(1000);
    RTCBegin();
    RTCSleep();
    delay(1000);
    TerrestrialPhase();
  }