附录(都没包含库文件,因为我的程序都不怎么完美,大家看下参考下就好,接线我会把我自己焊接时的草图贴出,由于程序达不到教程的标准就不出详细介绍了,以后改进后再出,坛里有编程好的也可以帮忙优化下)
(如果需要库文件的留言很多的话我也是可以贴出来的)
附录1(此部分程序只有easy transfer的部分是我改的,其他的都是厂家的源码)
由于代码太长了我直接打包上传了
附录2
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include "SD.h"
#include <EasyTransfer.h>
#include <IRremote.h>
EasyTransfer ET;
IRsend irsend;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
long back=0;
unsigned long time;
int launch=8;
struct RECEIVE_DATA_STRUCTURE{
//put your variable definitions here for the data you want to receive
//THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
float yawDEG;
float pitchDEG;
float rollDEG;
};
RECEIVE_DATA_STRUCTURE mydata;
Adafruit_BMP085 bmp = Adafruit_BMP085(10085);
float seaLevelPressure = 1009;
float temperature;
const int chipSelect = 4;
void setup(void)
{
pinMode(launch,OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(57600);
SD.begin(chipSelect);
ET.begin(details(mydata), &Serial);
bmp.begin();
irrecv.enableIRIn(); // 初始化红外接收器
File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
dataFile.print("[s:9]ressure(hpa): ");
dataFile.print("\\t");
dataFile.print("Temperature(C): ");
dataFile.print("\\t");
dataFile.print("Altitude(m): ");
dataFile.print("\\t");
dataFile.print("YPR: ");
dataFile.print("\\t");
dataFile.println("time(ms)");
dataFile.close();
}
}
void loop(void) {
time = millis();
ET.receiveData();
sensors_event_t event;
bmp.getEvent(&event);
bmp.getTemperature(&temperature);
File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
dataFile.print(event.pressure);
dataFile.print("\\t");
dataFile.print(temperature);
dataFile.print("\\t");
dataFile.print(bmp.pressureToAltitude(seaLevelPressure,
event.pressure,temperature));
dataFile.print("\\t");
dataFile.print(mydata.yawDEG);
dataFile.print("\\t");
dataFile.print(mydata.pitchDEG);
dataFile.print("\\t");
dataFile.print(mydata.rollDEG);
dataFile.println(time);
dataFile.close();
delay(1);
}
if (irrecv.decode(&results)){
back=results.value;
if (back==2155813097){
if (dataFile)
{
dataFile.println("launched");
dataFile.close();
}
delay(2000);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
delay(10010);
digitalWrite(launch,HIGH);
delay(2000);
digitalWrite(launch,LOW);
irrecv.resume();
}
else
{
irrecv.resume();
}
}
}
附录3
#include <IRremote.h>
IRsend irsend; int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int val=0;
int back=0;
int pan=0;
void result()
{
if (irrecv.decode(&results)){
back=results.value;
irrecv.resume();
if (back==21677){
Serial.println(F("launch_in_10seconds"));
}
else{
Serial.println(F("Error"));
}
}
}
void setup()
{
Serial.begin(9600);
Serial.println(F("Enter_launch_password"));
irrecv.enableIRIn(); // 初始化红外接收器
pinMode(3, OUTPUT);
}
void loop(){
result();
if (Serial.available() > 0) {
val=Serial.read();
if (val==49){
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irrecv.enableIRIn();
}
}
}
(如果需要库文件的留言很多的话我也是可以贴出来的)
附录1(此部分程序只有easy transfer的部分是我改的,其他的都是厂家的源码)
由于代码太长了我直接打包上传了
附录2
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include "SD.h"
#include <EasyTransfer.h>
#include <IRremote.h>
EasyTransfer ET;
IRsend irsend;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
long back=0;
unsigned long time;
int launch=8;
struct RECEIVE_DATA_STRUCTURE{
//put your variable definitions here for the data you want to receive
//THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
float yawDEG;
float pitchDEG;
float rollDEG;
};
RECEIVE_DATA_STRUCTURE mydata;
Adafruit_BMP085 bmp = Adafruit_BMP085(10085);
float seaLevelPressure = 1009;
float temperature;
const int chipSelect = 4;
void setup(void)
{
pinMode(launch,OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(57600);
SD.begin(chipSelect);
ET.begin(details(mydata), &Serial);
bmp.begin();
irrecv.enableIRIn(); // 初始化红外接收器
File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
dataFile.print("[s:9]ressure(hpa): ");
dataFile.print("\\t");
dataFile.print("Temperature(C): ");
dataFile.print("\\t");
dataFile.print("Altitude(m): ");
dataFile.print("\\t");
dataFile.print("YPR: ");
dataFile.print("\\t");
dataFile.println("time(ms)");
dataFile.close();
}
}
void loop(void) {
time = millis();
ET.receiveData();
sensors_event_t event;
bmp.getEvent(&event);
bmp.getTemperature(&temperature);
File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
dataFile.print(event.pressure);
dataFile.print("\\t");
dataFile.print(temperature);
dataFile.print("\\t");
dataFile.print(bmp.pressureToAltitude(seaLevelPressure,
event.pressure,temperature));
dataFile.print("\\t");
dataFile.print(mydata.yawDEG);
dataFile.print("\\t");
dataFile.print(mydata.pitchDEG);
dataFile.print("\\t");
dataFile.print(mydata.rollDEG);
dataFile.println(time);
dataFile.close();
delay(1);
}
if (irrecv.decode(&results)){
back=results.value;
if (back==2155813097){
if (dataFile)
{
dataFile.println("launched");
dataFile.close();
}
delay(2000);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
irsend.sendSony(0xa90, 12);
delay(10010);
digitalWrite(launch,HIGH);
delay(2000);
digitalWrite(launch,LOW);
irrecv.resume();
}
else
{
irrecv.resume();
}
}
}
附录3
#include <IRremote.h>
IRsend irsend; int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int val=0;
int back=0;
int pan=0;
void result()
{
if (irrecv.decode(&results)){
back=results.value;
irrecv.resume();
if (back==21677){
Serial.println(F("launch_in_10seconds"));
}
else{
Serial.println(F("Error"));
}
}
}
void setup()
{
Serial.begin(9600);
Serial.println(F("Enter_launch_password"));
irrecv.enableIRIn(); // 初始化红外接收器
pinMode(3, OUTPUT);
}
void loop(){
result();
if (Serial.available() > 0) {
val=Serial.read();
if (val==49){
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irsend.sendNEC(0x807F18E9, 32);
irrecv.enableIRIn();
}
}
}