|
发表于 2012-8-8 00:35:53
|
显示全部楼层
这个是mego2560+24l01无线接收,控制l9110 2个电机 - //MISO -> D50
- // * MOSI ->D51
- // * SCK ->D52
- //* CE ->D53
- //* CSN ->D38
- #include "Wire.h"
- #include "SPI.h" //LCD1602 IIC 库文件
- #include "Mirf.h"
- #include "nRF24L01.h"
- #include "MirfHardwareSpiDriver.h"
- #include <LiquidCrystal.h>;
- LiquidCrystal lcd( 12, 11, 10, 9, 8,7);
- int n; //X向 0~1023
- int nn; //X向 500~0
- int nnn; //X向 500~1024
- int m; //Y向 -0~1023
- int mm; //Y向 500~0
- int mmm; //Y向 500~1024
- int mmaa; //前进或左向
- int mmbb; //前进或右向
- int mmmaaa; //后退或左向
- int mmmbbb; //后退或右向
- int data; //接收到的信号
- int aaa; //LCD检测刷新
- int bbb; //LCD检测刷新
- void setup()
- {
- lcd.begin(16, 2);
- // Print a message to the LCD.
- lcd.print("hello, world!");
- delay(20);
- Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI
- Mirf.init();
- Mirf.setRADDR((byte *)"serv1");//接收到"接收地址"
- Mirf.payload = sizeof(int); //接收类型(整数)
- // mirf.channel = ();
- //Mirf.configRegister(EN_AA,0x00); //Disable auto ack
- delay(20);
- Mirf.config();
- pinMode(45,OUTPUT); //数字口要选择带#号的具有pwm功能的输出口
- pinMode(46,OUTPUT);
- pinMode(47,OUTPUT);
- pinMode(48,OUTPUT);
- //---------------------初始化值(停止)--------------------
- m=510;
- n=510;
- }
- void loop()
- {
- //---------------------------接收----------------------
- // if(Mirf.dataReady()){ //如果接收到数据则执行
- if(!Mirf.isSending() && Mirf.dataReady()){
- //do{
- Mirf.getData((byte *)&data); //接收数据
- if (data>=1) //如果大于1为X向
- {
- m=data;
- }
- if (data<=-1) //如果小于 -1为Y向
- {
- n=0-data;
- }
- // }while(!Mirf.rxFifoEmpty());
- Mirf.rxFifoEmpty(); //清理24L01援存??
- }
- //---------------------------左---右----------------------
- if (n<=500)
- {
- nn=map(n,500,0,0,255);
- }
- else if (n>=530)
- {
- nnn= map(n,530,1023,0,255);
- }
- else
- {
- nn=0;
- nnn=0;
- }
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>前进-----------------------------------
- if (m<=500)
- {
- digitalWrite(47,HIGH);
- digitalWrite(48,HIGH);
- //mm= m/2
- mm= map(m,500,0,255,0);
- mmaa=mm-nn;
- if (mmaa<0)
- {
- mmaa=0;
- }
- analogWrite(45,mmaa);
- mmbb=mm-nnn;
- if (mmbb<0)
- {
- mmbb=0;
- }
- analogWrite(46,mmbb);
- }
- //////////-----------------------------后退-------------------------------------
- else if (m>=530)
- {
- digitalWrite(47,LOW);
- digitalWrite(48,LOW);
- mmm=map(m,530,1023,0,255);
- mmmaaa=mmm+nn;
- if (mmmaaa>255)
- {
- mmmaaa=255;
- }
- analogWrite(45,mmmaaa);
- mmmbbb=mmm+nnn;
- if (mmmbbb>255)
- {
- mmmbbb=255;
- }
- analogWrite(46,mmmbbb);
- }
- else //////////-----------------------------------------停止------------------
- {
- analogWrite(45,0);
- analogWrite(46,0);
- analogWrite(47,0);
- analogWrite(48,0);
- }
- }
复制代码 |
|