极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15362|回复: 11

求助:两段程序的融合

[复制链接]
发表于 2012-8-7 23:05:49 | 显示全部楼层 |阅读模式
本帖最后由 挚、憂° 于 2013-9-18 10:25 编辑


已解决,谢谢关注
回复

使用道具 举报

发表于 2012-8-8 00:15:16 | 显示全部楼层
呃。。。没看懂你的介绍,你是要融合上面两段程序?还是修改下面那段程序?还是。。。?
回复 支持 反对

使用道具 举报

发表于 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));

??
回复 支持 反对

使用道具 举报

发表于 2012-8-8 00:25:47 | 显示全部楼层
这个是控制l9110  2个电机的:
  1. int n;
  2. int nn;
  3. int nnn;
  4. int m;
  5. int mm;
  6. int mmm;

  7. void setup()
  8. {

  9.   pinMode(4,OUTPUT);         
  10.   pinMode(5,OUTPUT);
  11.   pinMode(6,OUTPUT);
  12.   pinMode(7,OUTPUT);
  13.   delay(20);
  14. }

  15. void loop()
  16. {

  17.   m = analogRead(A1);
  18.   n = analogRead(A2);


  19.   if (m<=500)
  20.   {
  21.     digitalWrite(4,HIGH);
  22.     mm= map(m,500,0,255,0);
  23.     analogWrite(5,mm);
  24.   }
  25.   else if (m>=530)
  26.   {
  27.     digitalWrite(4,LOW);
  28.     mmm=map(m,530,1023,0,255);
  29.     analogWrite(5,mmm);
  30.   }
  31.   else
  32.   {
  33.     analogWrite(4,0);
  34.     analogWrite(5,0);
  35.   }
  36.   //;;;;;;;;;;;;;;;
  37.   if (n<=500)
  38.   {
  39.     digitalWrite(7,HIGH);
  40.     nn=map(n,500,0,255,0);
  41.     analogWrite(6,nn);
  42.   }
  43.   else if (n>=530)
  44.   {
  45.     digitalWrite(7,LOW);
  46.     nnn= map(n,530,1023,0,255);
  47.     analogWrite(6,nnn);
  48.   }
  49.   else
  50.   {
  51.     analogWrite(7,0);
  52.     analogWrite(6,0);
  53.   }
  54. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2012-8-8 00:35:53 | 显示全部楼层
这个是mego2560+24l01无线接收,控制l9110    2个电机

  1. //MISO -> D50  
  2. // * MOSI ->D51  
  3. // * SCK ->D52

  4. //* CE ->D53
  5. //* CSN ->D38


  6. #include "Wire.h"
  7. #include "SPI.h"  //LCD1602 IIC 库文件
  8. #include "Mirf.h"
  9. #include "nRF24L01.h"
  10. #include "MirfHardwareSpiDriver.h"

  11. #include <LiquidCrystal.h>;
  12. LiquidCrystal lcd( 12, 11, 10, 9, 8,7);

  13. int n;        //X向 0~1023
  14. int nn;       //X向 500~0
  15. int nnn;     //X向  500~1024
  16. int m;       //Y向 -0~1023
  17. int mm;      //Y向 500~0
  18. int mmm;     //Y向  500~1024
  19. int mmaa;    //前进或左向
  20. int mmbb;    //前进或右向
  21. int mmmaaa;   //后退或左向
  22. int mmmbbb;   //后退或右向
  23. int data;     //接收到的信号
  24. int aaa;      //LCD检测刷新
  25. int bbb;      //LCD检测刷新

  26. void setup()
  27. {
  28.   lcd.begin(16, 2);
  29.   // Print a message to the LCD.
  30.   lcd.print("hello, world!");
  31.   delay(20);
  32.   Mirf.spi = &MirfHardwareSpi;   //加载24L01  SPI
  33.   Mirf.init();
  34.   Mirf.setRADDR((byte *)"serv1");//接收到"接收地址"
  35.   Mirf.payload = sizeof(int);   //接收类型(整数)
  36.   // mirf.channel = ();
  37.   //Mirf.configRegister(EN_AA,0x00);  //Disable auto ack
  38.   delay(20);
  39.   Mirf.config();  
  40.   pinMode(45,OUTPUT);          //数字口要选择带#号的具有pwm功能的输出口
  41.   pinMode(46,OUTPUT);
  42.   pinMode(47,OUTPUT);
  43.   pinMode(48,OUTPUT);
  44.   //---------------------初始化值(停止)--------------------
  45.   m=510;
  46.   n=510;
  47. }

  48. void loop()
  49. {
  50.   //---------------------------接收----------------------
  51.   // if(Mirf.dataReady()){  //如果接收到数据则执行
  52.   if(!Mirf.isSending() && Mirf.dataReady()){

  53.     //do{

  54.     Mirf.getData((byte *)&data); //接收数据

  55.     if (data>=1)  //如果大于1为X向
  56.     {
  57.       m=data;
  58.     }
  59.     if (data<=-1) //如果小于 -1为Y向
  60.     {
  61.       n=0-data;
  62.     }

  63.     // }while(!Mirf.rxFifoEmpty());
  64.     Mirf.rxFifoEmpty(); //清理24L01援存??
  65.   }

  66.   //---------------------------左---右----------------------
  67.   if (n<=500)
  68.   {

  69.     nn=map(n,500,0,0,255);

  70.   }
  71.   else if (n>=530)
  72.   {
  73.     nnn= map(n,530,1023,0,255);
  74.   }
  75.   else
  76.   {
  77.     nn=0;
  78.     nnn=0;
  79.   }

  80.   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>前进-----------------------------------
  81.   if (m<=500)
  82.   {
  83.     digitalWrite(47,HIGH);
  84.     digitalWrite(48,HIGH);
  85.     //mm= m/2
  86.     mm= map(m,500,0,255,0);
  87.     mmaa=mm-nn;
  88.     if (mmaa<0)
  89.     {
  90.       mmaa=0;
  91.     }
  92.     analogWrite(45,mmaa);
  93.     mmbb=mm-nnn;
  94.     if (mmbb<0)
  95.     {
  96.       mmbb=0;
  97.     }
  98.     analogWrite(46,mmbb);
  99.   }
  100.   //////////-----------------------------后退-------------------------------------
  101.   else if (m>=530)
  102.   {
  103.     digitalWrite(47,LOW);
  104.     digitalWrite(48,LOW);
  105.     mmm=map(m,530,1023,0,255);
  106.     mmmaaa=mmm+nn;
  107.     if (mmmaaa>255)
  108.     {
  109.       mmmaaa=255;
  110.     }
  111.     analogWrite(45,mmmaaa);
  112.     mmmbbb=mmm+nnn;
  113.     if (mmmbbb>255)
  114.     {
  115.       mmmbbb=255;
  116.     }
  117.     analogWrite(46,mmmbbb);
  118.   }
  119.   else    //////////-----------------------------------------停止------------------
  120.   {
  121.     analogWrite(45,0);
  122.     analogWrite(46,0);
  123.     analogWrite(47,0);
  124.     analogWrite(48,0);
  125.   }


  126. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-8 06:50:45 | 显示全部楼层
把两段程序融合到一块,融合到一块后,加一个按键控制直流电机,开启后逐渐加速
回复 支持 反对

使用道具 举报

发表于 2012-8-8 07:51:28 | 显示全部楼层
是不是,开关开启后,用XY 电位器控制4个电机速度啊? 没有方向?
应该可以不用开关吧?直接用电位器控制不就行了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-8 08:30:04 | 显示全部楼层
谢谢你的帮助,从小语言表达能力欠缺,

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

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

使用道具 举报

发表于 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);
回复 支持 反对

使用道具 举报

发表于 2012-8-8 08:36:30 | 显示全部楼层
开关用来限位啊?还是和舵机一样啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-8 08:58:21 | 显示全部楼层
开关只是开启关闭,限位我想用碰撞开关
回复 支持 反对

使用道具 举报

发表于 2012-8-9 15:58:43 | 显示全部楼层
你的意思是,摇杆控制方向。然后需要一个开关给他无限加速是吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 08:49 , Processed in 0.051981 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表