It's running!!!
This commit is contained in:
parent
6bc29687da
commit
f76e1f5594
|
@ -1,31 +1,22 @@
|
|||
//player1,remote controler
|
||||
#include<SPI.h>
|
||||
#include<nRF24L01.h>
|
||||
#include<RF24.h>
|
||||
#include<TimerOne.h>
|
||||
#include<SoftwareSerial.h>
|
||||
RF24 radio(7,8);//端口可能要改
|
||||
//RF24 radio(7,8);//端口可能要改
|
||||
bool flag=false;
|
||||
SoftwareSerial sendingSerial(5,6);
|
||||
String sending="";
|
||||
const int Rp=0,Rr=1,interval=20;//Rp,Rr 分别为两个遥杆的接口
|
||||
SoftwareSerial bluetoothSerial(7,8);
|
||||
String sending="",received="";
|
||||
const int Rp=0,Rr=1,interval=100;//Rp,Rr 分别为两个遥杆的接口
|
||||
long propeller=0,rudder=0,dist;//propeller为螺旋桨(0-1023,512为静止),rudder为舵(0-1023,512为静止)
|
||||
long sending_signal=0;//发送的信号
|
||||
long response=0;
|
||||
const byte addresser[6]={"00001"};//创建通信通道地址,6用来写,8用来读
|
||||
//const byte addresser[6]={"00001"};//创建通信通道地址,6用来写,8用来读
|
||||
long time=0;
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
sendingSerial.begin(38400);
|
||||
radio.begin();
|
||||
//radio.setChannel(115);//设置信道,115号通道
|
||||
radio.setDataRate(RF24_250KBPS);
|
||||
radio.setRetries(3, 5);
|
||||
radio.openWritingPipe(addresser);
|
||||
radio.openReadingPipe(1,addresser);
|
||||
radio.setPALevel(RF24_PA_MIN);
|
||||
//Timer1.initialize(interval);
|
||||
//Timer1.attachInterrupt(send);
|
||||
radio.startListening();
|
||||
bluetoothSerial.begin(57600);
|
||||
bluetoothSerial.listen();
|
||||
}
|
||||
void send(){
|
||||
|
||||
|
@ -41,10 +32,9 @@ void send(){
|
|||
}
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
time=millis();
|
||||
//time=millis();
|
||||
//Serial.println("send");
|
||||
sending_signal=0;
|
||||
radio.stopListening();
|
||||
propeller=analogRead(Rp);
|
||||
rudder=analogRead(Rr);
|
||||
if(propeller>=1000)propeller=999;
|
||||
|
@ -52,24 +42,23 @@ void loop() {
|
|||
sending_signal+=propeller;
|
||||
sending_signal+=rudder*1000;
|
||||
sending_signal+=1000000;
|
||||
bool b=radio.write(&sending_signal,sizeof(sending_signal));
|
||||
Serial.println(b);
|
||||
radio.startListening();
|
||||
sending=String(sending_signal);
|
||||
bluetoothSerial.println(sending);
|
||||
//Serial.println(sending);
|
||||
delay(interval);
|
||||
//Serial.println("loop");
|
||||
if(radio.available()){
|
||||
Serial.print("response:");
|
||||
radio.read(&response,sizeof(response));
|
||||
Serial.println(response);
|
||||
if(response%1000000==1){
|
||||
sending=String(response);
|
||||
sendingSerial.print(sending);
|
||||
sendingSerial.print('\n');
|
||||
}
|
||||
else if(response==2000000){
|
||||
sending=String(response);
|
||||
sendingSerial.print(sending);
|
||||
while(bluetoothSerial.available()>0){
|
||||
//Serial.println("available!");
|
||||
if(bluetoothSerial.peek()!='\n'){//peek()查看当前字节是不是换行
|
||||
received+=(char)bluetoothSerial.read();
|
||||
//Serial.println(received);
|
||||
//Serial.println("no \n");
|
||||
}
|
||||
else{
|
||||
bluetoothSerial.read();//把换行符读掉
|
||||
Serial.println(received);
|
||||
sendingSerial.print(received);
|
||||
sendingSerial.print('\n');
|
||||
received="";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,6 +77,9 @@ void loop() {
|
|||
clr=true;
|
||||
}
|
||||
}
|
||||
else{
|
||||
rec=false;
|
||||
}
|
||||
received="";
|
||||
}
|
||||
}
|
||||
|
|
185
ship/ship.ino
185
ship/ship.ino
|
@ -1,8 +1,7 @@
|
|||
#include<SPI.h>
|
||||
#include<nRF24L01.h>
|
||||
#include<RF24.h>
|
||||
#include "Arduino.h"
|
||||
#include "HardwareSerial.h"
|
||||
#include<SoftwareSerial.h>
|
||||
#include<Servo.h>
|
||||
#define trigPin 2 //超声波模块的Trig口 6#
|
||||
#define echoPin 5 //超声波模块的echo口 5#
|
||||
|
@ -14,24 +13,22 @@ bool clr=false;
|
|||
int status=0;
|
||||
int clrtime=40;
|
||||
int x=0;
|
||||
|
||||
const int interval=100;
|
||||
String sending="",received="";
|
||||
Servo MyServo;
|
||||
Servo RadarServo;
|
||||
RF24 radio(7,8);
|
||||
SoftwareSerial bluetoothSerial(7,8);
|
||||
int count =0;
|
||||
int IN1 =9;
|
||||
int IN2 =10;
|
||||
int PWM=6;
|
||||
// int TrigPin=2;
|
||||
// int EcoPin=3;
|
||||
// int dAngle=5;
|
||||
int angle=90;
|
||||
int period=25;
|
||||
// float dist;
|
||||
long dj,z;//dj是舵机,z是螺旋桨转速
|
||||
//long propeller=0,rudder=0;//propeller为螺旋桨(0-1023,512为静止),rudder为舵(0-1023,512为静止)
|
||||
//long s_propeller=0,s_rudder=0;//发送的信号
|
||||
long propeller,rudder,content;//校验序列、读取内容和解码内容
|
||||
long propeller,rudder;//校验序列、读取内容和解码内容
|
||||
long response=0;
|
||||
const byte addresses[6] = "00001"; //创建一个数组,建立接收机地址,或者说两个模块将用于通信的“管道”
|
||||
int calculateDistance()
|
||||
|
@ -49,6 +46,8 @@ int calculateDistance()
|
|||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
bluetoothSerial.begin(57600);
|
||||
bluetoothSerial.listen();
|
||||
MyServo.attach(4);
|
||||
RadarServo.attach(ServoPin);
|
||||
pinMode(trigPin,OUTPUT);
|
||||
|
@ -61,11 +60,7 @@ void setup()
|
|||
MyServo.write(angle);
|
||||
|
||||
RadarServo.write(0);
|
||||
radio.begin();
|
||||
//radio.setChannel(114);
|
||||
radio.openReadingPipe(1,addresses); //接收通道,
|
||||
radio.openWritingPipe(addresses);//发送通道
|
||||
radio.setPALevel(RF24_PA_MIN); //设置功率放大器级别,将其设置为最小值
|
||||
|
||||
delay(1000);
|
||||
MyServo.write(45);
|
||||
}
|
||||
|
@ -74,71 +69,9 @@ long confirm(long x){
|
|||
else return -1;
|
||||
}
|
||||
void loop() {
|
||||
radio.startListening();
|
||||
delay(20);
|
||||
if(radio.available()){
|
||||
radio.read(&content,sizeof(content));
|
||||
Serial.println("The content is");
|
||||
Serial.println(content);//调试
|
||||
content=confirm(content);
|
||||
if(content!=-1){
|
||||
propeller=content%1000;
|
||||
rudder=(content-propeller)/1000;
|
||||
if(propeller>550||propeller<449){
|
||||
if(propeller>550){
|
||||
long zheng=0.568*propeller-312.4;
|
||||
digitalWrite(IN2,HIGH);
|
||||
digitalWrite(IN1,LOW);
|
||||
analogWrite(PWM,zheng);
|
||||
z=zheng;
|
||||
Serial.println("forward propelling");
|
||||
Serial.println(z);
|
||||
}
|
||||
else if(propeller<449){
|
||||
long fan=255-0.568*propeller;
|
||||
digitalWrite(IN1,HIGH);
|
||||
digitalWrite(IN2,LOW);
|
||||
analogWrite(PWM,fan);
|
||||
z=fan;
|
||||
Serial.println("back propelling");
|
||||
Serial.println(z);
|
||||
}
|
||||
}
|
||||
else if(propeller<=550||propeller>=449){
|
||||
z=0;
|
||||
analogWrite(PWM,0);
|
||||
Serial.println("stop propelling");
|
||||
Serial.println(z);
|
||||
}
|
||||
Serial.println("inputing ruddering");
|
||||
if(rudder>550||rudder<449)
|
||||
{
|
||||
if(rudder<449){
|
||||
long fan1=0.1*rudder;
|
||||
MyServo.write(fan1);
|
||||
Serial.println("turn left");
|
||||
dj=2*fan1-90;
|
||||
Serial.println(dj);
|
||||
}
|
||||
else if(rudder>550){
|
||||
long zheng1=0.1*rudder-10.122;
|
||||
MyServo.write(zheng1);
|
||||
dj=2*zheng1-90;
|
||||
Serial.println("turn right");
|
||||
Serial.println(dj);
|
||||
}
|
||||
}
|
||||
else if(rudder<=550||rudder>=449){
|
||||
dj=0;
|
||||
MyServo.write(45);
|
||||
Serial.println("stop turing");
|
||||
Serial.println(dj);
|
||||
}
|
||||
}
|
||||
}
|
||||
radio.stopListening();
|
||||
|
||||
int distance=0;
|
||||
Serial.print("s: ");
|
||||
Serial.println(status);
|
||||
if(status==0){
|
||||
if(x<180){
|
||||
x+=2;
|
||||
|
@ -150,7 +83,14 @@ void loop() {
|
|||
//测距
|
||||
distance = calculateDistance();
|
||||
//send distance
|
||||
response=1000000+x*1000+distance;
|
||||
//response=1000000+x*1000+distance;
|
||||
response=0;
|
||||
response+=distance;
|
||||
Serial.println(response);
|
||||
response+=(long)x*1000;
|
||||
Serial.println(response);
|
||||
response+=1000000;
|
||||
Serial.println(response);
|
||||
}
|
||||
else if(status==1){
|
||||
if(x>0){
|
||||
|
@ -162,7 +102,14 @@ void loop() {
|
|||
RadarServo.write(x); //调整舵机角度
|
||||
//测距
|
||||
distance = calculateDistance();
|
||||
response=1000000+x*1000+distance;
|
||||
//response=1000000+x*1000+distance;
|
||||
response=0;
|
||||
response+=distance;
|
||||
Serial.println(response);
|
||||
response+=(long)x*1000;
|
||||
Serial.println(response);
|
||||
response+=1000000;
|
||||
Serial.println(response);
|
||||
//send distance
|
||||
}
|
||||
else if(status=2){
|
||||
|
@ -179,8 +126,86 @@ void loop() {
|
|||
//send clear
|
||||
response=2000000;
|
||||
}
|
||||
radio.write(&response,sizeof(response));
|
||||
sending=String(response);
|
||||
|
||||
Serial.print("x: ");
|
||||
Serial.println(x);
|
||||
Serial.print("d: ");
|
||||
Serial.println(distance);
|
||||
Serial.println(response);
|
||||
Serial.println(sending);
|
||||
bluetoothSerial.println(sending);
|
||||
delay(interval);
|
||||
//delay(20-distance/17);
|
||||
Serial.println(distance);
|
||||
while(bluetoothSerial.available()>0){
|
||||
//Serial.println("available!");
|
||||
if(bluetoothSerial.peek()!='\n'){//peek()查看当前字节是不是换行
|
||||
received+=(char)bluetoothSerial.read();
|
||||
//Serial.println(received);
|
||||
//Serial.println("no \n");
|
||||
}
|
||||
else{
|
||||
bluetoothSerial.read();//把换行符读掉
|
||||
//Serial.println(received);
|
||||
//Serial.println(received.length());
|
||||
//content=toInt(received);
|
||||
if(received[0]=='1'&&received.length()-1==7){
|
||||
propeller=received.substring(4).toInt();
|
||||
rudder=received.substring(1,4).toInt();
|
||||
if(propeller>550||propeller<449){
|
||||
if(propeller>550){
|
||||
long zheng=0.568*propeller-312.4;
|
||||
digitalWrite(IN2,HIGH);
|
||||
digitalWrite(IN1,LOW);
|
||||
analogWrite(PWM,zheng);
|
||||
z=zheng;
|
||||
//Serial.println("forward propelling");
|
||||
//Serial.println(z);
|
||||
}
|
||||
else if(propeller<449){
|
||||
long fan=255-0.568*propeller;
|
||||
digitalWrite(IN1,HIGH);
|
||||
digitalWrite(IN2,LOW);
|
||||
analogWrite(PWM,fan);
|
||||
z=fan;
|
||||
//Serial.println("back propelling");
|
||||
//Serial.println(z);
|
||||
}
|
||||
}
|
||||
else if(propeller<=550||propeller>=449){
|
||||
z=0;
|
||||
analogWrite(PWM,0);
|
||||
//Serial.println("stop propelling");
|
||||
//Serial.println(z);
|
||||
}
|
||||
//Serial.println("inputing ruddering");
|
||||
if(rudder>550||rudder<449)
|
||||
{
|
||||
if(rudder<449){
|
||||
long fan1=0.1*rudder;
|
||||
MyServo.write(fan1);
|
||||
//Serial.println("turn left");
|
||||
dj=2*fan1-90;
|
||||
//Serial.println(dj);
|
||||
}
|
||||
else if(rudder>550){
|
||||
long zheng1=0.1*rudder-10.122;
|
||||
MyServo.write(zheng1);
|
||||
dj=2*zheng1-90;
|
||||
//Serial.println("turn right");
|
||||
//Serial.println(dj);
|
||||
}
|
||||
}
|
||||
else if(rudder<=550||rudder>=449){
|
||||
dj=0;
|
||||
MyServo.write(45);
|
||||
//Serial.println("stop turing");
|
||||
//Serial.println(dj);
|
||||
}
|
||||
}
|
||||
received="";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue