附录(都没包含库文件,因为我的程序都不怎么完美,大家看下参考下就好,接线我会把我自己焊接时的草图贴出,由于程序达不到教程的标准就不出详细介绍了,以后改进后再出,坛里有编程好的也可以帮忙优化下)
(如果需要库文件的留言很多的话我也是可以贴出来的)
附录1(此部分程序只有easy transfer的部分是我改的,其他的都是厂家的源码)
由于代码太长了我直接打包上传了
Nano_AHRS3TX.zip
9.98KB
ZIP
59次下载
附录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);
XXXXXXXXXgin(57600); XXXXXgin(chipSelect); XXXXXgin(details(mydata), &Serial); XXXXXXgin(); irrecv.enableIRIn(); // 初始化红外接收器
File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
XXXXXXXXXXXint("[s:9]ressure(hpa): "); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint("Temperature(C): "); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint("Altitude(m): "); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint("YPR: "); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXintln("time(ms)"); XXXXXXXXXXXose(); }
}
void loop(void) {
time = millis();
XXXXXceiveData(); sensors_event_t event;
XXXXXXtEvent(&event); XXXXXXtTemperature(&temperature); File dataFile = SD.open("data.txt",FILE_WRITE);
if (dataFile){
XXXXXXXXXXXint(XXXXXXXXessure); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint(temperature); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint(XXXXXXessureToAltitude(seaLevelPressure, XXXXXXXXessure,temperature)); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint(mydata.yawDEG); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint(mydata.pitchDEG); XXXXXXXXXXXint("\\t"); XXXXXXXXXXXint(XXXXXXXXXllDEG); XXXXXXXXXXXintln(time); XXXXXXXXXXXose(); delay(1);
}
if (XXXXXXXXXcode(&results)){ back=XXXXXXXXXXlue; if (back==2155813097){
if (dataFile)
{
XXXXXXXXXXXintln("launched"); XXXXXXXXXXXose(); }
delay(2000);
XXXXXXXXXndSony(0xa90, 12); XXXXXXXXXndSony(0xa90, 12); XXXXXXXXXndSony(0xa90, 12); XXXXXXXXXndSony(0xa90, 12); XXXXXXXXXndSony(0xa90, 12); XXXXXXXXXndSony(0xa90, 12); delay(10010);
digitalWrite(launch,HIGH);
delay(2000);
digitalWrite(launch,LOW);
XXXXXXXXXsume(); }
else
{
XXXXXXXXXsume(); }
}
}
附录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 (XXXXXXXXXcode(&results)){ back=XXXXXXXXXXlue; XXXXXXXXXsume(); if (back==21677){
XXXXXXXXXintln(F("launch_in_10seconds")); }
else{
XXXXXXXXXintln(F("Error")); }
}
}
void setup()
{
XXXXXXXXXgin(9600); XXXXXXXXXintln(F("Enter_launch_password")); irrecv.enableIRIn(); // 初始化红外接收器
pinMode(3, OUTPUT);
}
void loop(){
result();
if (Serial.available() > 0) {
val=XXXXXXXXXad(); if (val==49){
XXXXXXXXXndNEC(0x807F18E9, 32); XXXXXXXXXndNEC(0x807F18E9, 32); XXXXXXXXXndNEC(0x807F18E9, 32); XXXXXXXXXndNEC(0x807F18E9, 32); XXXXXXXXXndNEC(0x807F18E9, 32); irrecv.enableIRIn();
}
}
}