求助:两段程序的融合
本帖最后由 挚、憂° 于 2013-9-18 10:25 编辑已解决,谢谢关注 呃。。。没看懂你的介绍,你是要融合上面两段程序?还是修改下面那段程序?还是。。。? 本帖最后由 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));
?? 这个是控制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);
}
}
这个是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);
}
}
把两段程序融合到一块,融合到一块后,加一个按键控制直流电机,开启后逐渐加速 是不是,开关开启后,用XY 电位器控制4个电机速度啊? 没有方向?
应该可以不用开关吧?直接用电位器控制不就行了? 谢谢你的帮助,从小语言表达能力欠缺,:L
开关和电位计是单独的,是共同控制电机的,没有方向要求
设想是,开关打开,电机转到预定位置停止,有必要的时候,用摇杆控制微调 本帖最后由 BlackCat 于 2012-8-8 08:35 编辑
给你一个思路
如果按键按下一次,加速一点的话
if (按键按下)
{PMW++}
如果是按下一次按键,将速度加速到一定速度的话
if (按键按下)
{i=某一值}
if (PWM >PWM最大值)
{PWM=PWM最大值}
else{pwm=pwm+i};
电机控制analogWrite(45,pwm); 开关用来限位啊?还是和舵机一样啊? 开关只是开启关闭,限位我想用碰撞开关
你的意思是,摇杆控制方向。然后需要一个开关给他无限加速是吧?
页:
[1]