挚、憂° 发表于 2012-8-7 23:05:49

求助:两段程序的融合

本帖最后由 挚、憂° 于 2013-9-18 10:25 编辑


已解决,谢谢关注

arduino-tinker 发表于 2012-8-8 00:15:16

呃。。。没看懂你的介绍,你是要融合上面两段程序?还是修改下面那段程序?还是。。。?

pww999 发表于 2012-8-8 00:20:11

本帖最后由 pww999 于 2012-8-8 00:41 编辑

analogWrite(6,map(y,1023,541,0,255));
analogWrite(11,map(y,1023,541,0,255));
其中2个
须修改成这样:
analogWrite(6,map(y,1023,541,255,0));
analogWrite(11,map(x,1023,541,255,0));
或者
analogWrite(6,map(y,541,1023,0,255));
analogWrite(11,map(x,541,1023,0,255));

??

pww999 发表于 2012-8-8 00:25:47

这个是控制l91102个电机的:int n;
int nn;
int nnn;
int m;
int mm;
int mmm;

void setup()
{

pinMode(4,OUTPUT);         
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
delay(20);
}

void loop()
{

m = analogRead(A1);
n = analogRead(A2);


if (m<=500)
{
    digitalWrite(4,HIGH);
    mm= map(m,500,0,255,0);
    analogWrite(5,mm);
}
else if (m>=530)
{
    digitalWrite(4,LOW);
    mmm=map(m,530,1023,0,255);
    analogWrite(5,mmm);
}
else
{
    analogWrite(4,0);
    analogWrite(5,0);
}
//;;;;;;;;;;;;;;;
if (n<=500)
{
    digitalWrite(7,HIGH);
    nn=map(n,500,0,255,0);
    analogWrite(6,nn);
}
else if (n>=530)
{
    digitalWrite(7,LOW);
    nnn= map(n,530,1023,0,255);
    analogWrite(6,nnn);
}
else
{
    analogWrite(7,0);
    analogWrite(6,0);
}
}

pww999 发表于 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;   //加载24L01SPI
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);
}


}

挚、憂° 发表于 2012-8-8 06:50:45

把两段程序融合到一块,融合到一块后,加一个按键控制直流电机,开启后逐渐加速

pww999 发表于 2012-8-8 07:51:28

是不是,开关开启后,用XY 电位器控制4个电机速度啊? 没有方向?
应该可以不用开关吧?直接用电位器控制不就行了?

挚、憂° 发表于 2012-8-8 08:30:04

谢谢你的帮助,从小语言表达能力欠缺,:L

开关和电位计是单独的,是共同控制电机的,没有方向要求

设想是,开关打开,电机转到预定位置停止,有必要的时候,用摇杆控制微调

BlackCat 发表于 2012-8-8 08:34:44

本帖最后由 BlackCat 于 2012-8-8 08:35 编辑

给你一个思路
如果按键按下一次,加速一点的话
if (按键按下)
{PMW++}
如果是按下一次按键,将速度加速到一定速度的话

if (按键按下)
{i=某一值}
if (PWM >PWM最大值)
{PWM=PWM最大值}
else{pwm=pwm+i};
电机控制analogWrite(45,pwm);

pww999 发表于 2012-8-8 08:36:30

开关用来限位啊?还是和舵机一样啊?

挚、憂° 发表于 2012-8-8 08:58:21

开关只是开启关闭,限位我想用碰撞开关

BlackCat 发表于 2012-8-9 15:58:43

你的意思是,摇杆控制方向。然后需要一个开关给他无限加速是吧?
页: [1]
查看完整版本: 求助:两段程序的融合