久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 808|回復: 0
收起左側

如何用arduino做一個飛控?

[復制鏈接]
ID:1033693 發表于 2022-6-10 09:54 | 顯示全部樓層 |閱讀模式
本產品主要用的是nrf24l01 PA通信
接收端代碼
//發送端
#include<SPI.h>
#include"RF24.h"
#include<nRF24L01.h>
#include "LiquidCrystal_I2C.h"
#include "Wire.h"
//定義RF的引腳
int ce = 7;
int  csn = 8;
//定義左邊遙感的引腳
int  vrx_left = A0;
int vry_left = A1;
int  button_left = A2;
//定義右邊遙感的引腳
int vrx_right  = A3;
int vry_right = A4;
int button_right = A5;
//定義一個點位器的引腳
int dianweiqi1 = A8;
int  dianweiqi2 = A9;
int button_left_read=45;
int button_right_read=22;
LiquidCrystal_I2C mylcd(0x27, 16, 2);//初始化一個IIC
RF24 radio(ce, csn);
//定義一個結構體來存放搖桿的值
int i ,clk,dangwei;
String lr,lr1;

float poting1, poting2;
const byte address[6] = "00001";


void setup()
{
  mylcd.init();            //、、、、、、、、、、、、、、、、、、、、、、、初始化liquidcrytal_2c
  mylcd.backlight();

  Serial.begin(9600);
  delay (1000);

  delay (1000);
  Serial.print("");
  radio.begin();
  radio.openWritingPipe(address);   //要寫入的地址
  //數組長度,以及地址
  radio.setPALevel(RF24_PA_MAX);     //發送最小距離
  radio.stopListening();
  pinMode(vrx_left, INPUT);           //定義了引腳,輸出值據查,應該值為0-1023
  pinMode(vry_left, INPUT);
  pinMode(button_left, INPUT);
  pinMode(vrx_right, INPUT);
  pinMode(vry_right, INPUT);
  pinMode(button_right, INPUT);
   pinMode(dianweiqi1, INPUT);
   pinMode(dianweiqi2, INPUT);
   pinMode(button_left_read, INPUT);
    pinMode(button_right_read=22, INPUT);
}

void loop()
{
  struct data_pack
{
  byte left_pot_Y;
  byte left_pot_X;
  byte left_button;
  byte right_pot_Y;
  byte right_pot_X;
  byte right_button;
  byte poting1;
  byte poting2;
  byte  button_left_read;
  byte  button_right_read;
};
data_pack data;

  data.left_pot_Y = map(analogRead(vrx_left), 504, 1023, 1, 255);
  data.left_pot_X = map(analogRead(vry_left), 0, 1023, 1, 255);
  data.left_button = digitalRead(button_left);
  data.right_pot_Y = map(analogRead(vrx_right), 0, 1023, 1, 255);
  data.right_pot_X = map(analogRead(vry_right), 0, 1023, 1, 255);
  data.right_button = digitalRead(button_right);
  data.poting1 = map(analogRead(dianweiqi1), 0, 1023, 1, 255);
  data.poting2 = map(analogRead(dianweiqi2), 0, 1023, 1, 255);
  data.button_left_read=digitalRead(button_left_read);
  data.button_right_read=digitalRead(button_right_read);
   radio.write(&data, sizeof(data_pack));

if(data.left_pot_Y>70)
{
  dangwei=1;
  }
if(data.left_pot_Y>170)
{
  dangwei=2;
  }
  if(data.left_pot_Y>230)
{
  dangwei=3;
  }


if(data.right_pot_X==1)
{
  lr="left";
  }
else  if(data.right_pot_X==255)
{
  lr="righ";
  }
else   if(data.right_pot_X>120&&data.right_pot_X<135)
{
  lr="goo!";
  }





if(data.right_pot_Y<20)
{
  lr1="dow";
  }
  else  if(data.right_pot_Y>240)
{
  lr1="UP~";
  }else if(data.right_pot_X>120&&data.right_pot_X<135)
{
  lr1="go!";
  }

mylcd.setCursor(0,0);
  mylcd.print("G:");       //在1602上面顯示T;
  mylcd.setCursor(2,0);    //光標放在第五列第一行
  mylcd.print(dangwei);
  mylcd.setCursor(4,0); //光標放在第一行第二列
  mylcd.print("F:");
  mylcd.setCursor(6,0);
  mylcd.print(lr);
  mylcd.setCursor(11,0); //光標放在第一行第二列
  mylcd.print("Q:");
  mylcd.setCursor(13,0);
  mylcd.print(lr1);
  mylcd.setCursor(0,1);
  mylcd.print("DL:");
  mylcd.setCursor(3,1);
  mylcd.print(data.poting1);
  mylcd.setCursor(7,1);
  mylcd.print("RP:");
  mylcd.setCursor(10,1);
  mylcd.print(data.poting2);
   mylcd.setCursor(13,1);
  mylcd.print(data.button_left_read);
   mylcd.setCursor(15,1);
  mylcd.print(data.button_right_read);
    Serial.println(data.right_pot_X);

  clk=millis();
  if(clk%10==0)
  {
   mylcd.clear();
   clk=0;
  }

}
接收端

#include<SPI.h>
#include <RF24.h>
#include <Servo.h>
#include<nRF24L01.h>

int ce = 7;
int sec =8;
int dianji1_pin = A0; //電機
int dianji2_pin = A2; //電機
int myservo_left_pin = 3; //左翅膀電機
int myserve_right_pin = 5;  //右翅膀電機
int myservo_last_pin  = 9;  // 機尾左右機
int myservo_buttom_pin = 4;  //機尾升降機
int myservo_duraction_pin = 10; // 滑輪左右搖擺
int led = 6;
RF24 radio(ce, sec);

struct data_pack1
  {
    byte left_pot_Y;
    byte left_pot_X;
    byte left_button;
    byte right_pot_Y;
    byte right_pot_X;
    byte right_button;
    byte poting1;
    byte poting2;
    byte  button_left_read;
    byte  button_right_read;
  };
  data_pack1 data1;

Servo dianji1;
Servo dianji2;
Servo myservo_left;
Servo myserve_right;
Servo myservo_last;
Servo myservo_buttom;
Servo myservo_duraction;
const byte address[6] = "00001";

int throttleValue, rudderValue = 90, elevatorValue = 80, aileron1Value = 90, aileron2Value, travelAdjust1, travelAdjust2;
void setup()
{
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);   //要寫入的地址
  radio.setPALevel(RF24_PA_MAX);
  radio.startListening(); //  Set the module as receiver

  dianji1.attach(dianji1_pin);
  dianji2.attach(dianji2_pin);
  myservo_left.attach(myservo_left_pin);
  myserve_right.attach(myserve_right_pin);
  myservo_last.attach(myservo_last_pin);
  myservo_buttom.attach(myservo_buttom_pin);
  myservo_duraction.attach(myservo_duraction_pin);

  pinMode(led, OUTPUT);
}
void loop()
{
  if (radio.available())
  {

    travelAdjust1 = map(data1.poting1, 0, 255, 1000,1700 );
    travelAdjust2 = map(data1.poting2, 0, 255, 0, 35);
    radio.read(&data1, sizeof(data_pack1));//讀取整個數據并存儲到'data'結構中
    throttleValue = map(data1.left_pot_Y, 0, 255, travelAdjust1, 2000);
    //
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久88av | 日韩中文字幕视频在线观看 | 精品国产一区二区三区久久狼黑人 | 91免费电影 | 久久se精品一区精品二区 | 中文字幕在线视频免费观看 | 91婷婷韩国欧美一区二区 | 成人免费观看男女羞羞视频 | 在线一区观看 | 婷婷综合色 | av一区二区三区四区 | 亚洲国产精品久久久久秋霞不卡 | 亚洲天堂一区 | 欧美成人免费电影 | 久草免费在线视频 | 国产小u女发育末成年 | 国产人成精品一区二区三 | 久久久久99 | 久久91av| 日本不卡免费新一二三区 | 亚洲午夜精品在线观看 | 中文字幕 欧美 日韩 | 黄a免费看 | 91精品国产综合久久香蕉922 | 中文字幕av一区 | 国产精品久久久亚洲 | 欧美性tv | 亚洲国产视频一区二区 | 网站黄色在线免费观看 | 91精品国产综合久久福利软件 | 久久一 | 日韩一区二区三区在线观看 | 欧美狠狠操 | 国产永久免费 | 成人免费视频观看 | 久草成人| 九九一级片 | 亚洲精品免费在线 | 99色在线视频 | 在线视频91| 黄色av免费网站 |