模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

1817查看 | 18回复

请模友们帮我看看

[复制链接]
发表于 2018-7-12 12:45:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
玩四轴有好几年了,就想自己diy个悟,只为装逼,买了3d打印机,打印了全部零件,关键卡在了变形部分,用了arduino   nano和行程开关控制舵机,程序是我网上找的,我感觉程序里定义的引脚和连接图不一样(实物连接图在下面)自己搞了好久还不行,请模友们帮我看看。不胜感激   最下面是程序。




// Designed for Skull Quadcopter
// Rev 1.0


#include <Servo.h>
#include <PinChangeInt.h>




// Define RX variables
#define PIN1 2
#define PIN1dataReg PIND
#define pin1state (PIN1dataReg & (1 << PIN1))
volatile long pulseStart1; // pulse start time measured from millies in ISR for pin 1
volatile long pulseTime1; // pulse width time measured from millies in ISR for pin 1 <-- this is the output we require


Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position


// Define Microswitch pins
const int msdown = 5;
const int msup = 4;
int msdownstate = 0;
int msupstate = 0;


// Define Variables for LEDs
int led1 = 6;                    // output pin for LED 1
int led2 = 7;                    // output pin for LED 2
int led3 = 8;                    // output pin for LED 3
int led4 = 9;                    // output pin for LED 4
int led13 = 13;                   // onboard LED indictor incase no others are attached
unsigned long time;              // holds current time for change of state
int flashtime = 400;            // time to flash LEDs in milliseconds
boolean ledon = false;         // remembers start of LED
boolean movedown = true;      // safety feature
boolean moveup = true;        // safety feature


// The below procedure handles the pulse from the RX input
void handlePin1()  
{  
  if(pin1state)  
    pulseStart1=micros(); // we got a positive edge  
  else  
    pulseTime1=micros()-pulseStart1; // Negative edge: get pulsewidth  
}  


// LED Control - very basic, can be expanded.
void turnledoff() {
    digitalWrite(led1, LOW);      
    digitalWrite(led2, LOW);      
    digitalWrite(led3, LOW);     
    digitalWrite(led4, LOW);
    digitalWrite(led13, LOW);   
  }
  void turnledon() {
    digitalWrite(led1, HIGH);      
    digitalWrite(led2, HIGH);      
    digitalWrite(led3, HIGH);     
    digitalWrite(led4, HIGH);      
    digitalWrite(led13, HIGH);  
}
  void flashled() {
      // LED Flash
  if (millis() - time > flashtime){
      time = millis();
      
      if (ledon){
        turnledoff();
        ledon = false;
      } else {
        turnledon();
        ledon = true;
      }
      
  }


  }


// Lets set everything up
void setup() {
// initialize serial communication at 115200 bits per second so we can see whats going on:
  Serial.begin(115200);

  pinMode(PIN1, INPUT);          // Initialize rx input pin
  digitalWrite(PIN1, HIGH);      // Set the rx pin to High to start the counter
  PCintPort::attachInterrupt(PIN1, &handlePin1, CHANGE); // Attach the interrupt
  
  pinMode(led1, OUTPUT);         // Assign output mode to pin for LED 1
  pinMode(led2, OUTPUT);         // Assign output mode to pin for LED 2
  pinMode(led3, OUTPUT);         // Assign output mode to pin for LED 3
  pinMode(led4, OUTPUT);         // Assign output mode to pin for LED 4
  pinMode(led13, OUTPUT);         // Assign output mode to pin for LED 4


  pinMode(msup, INPUT);
  pinMode(msdown, INPUT);
  msupstate = digitalRead(msup);
  msdownstate = digitalRead(msdown);
  time = millis();               // Save current millis reading (this is a counter that always runs in milliseconds)
  turnledon();
}


// Main Program
void loop() {
  
  msupstate = digitalRead(msup);
  msdownstate = digitalRead(msdown);
  // read the input channels


   if (pulseTime1 > 900 && pulseTime1 < 1300){ //legs down
   myservo.attach(3);
    pos = 0;
    moveup = true;
    if (msupstate == LOW){
      if (movedown){myservo.write(pos);}
    flashtime = 200;
    flashled();
    } else {
      movedown = false;
      myservo.detach();
      turnledon();
    }
   }
    if (pulseTime1 > 1299 && pulseTime1 < 1701){ //no movement
    myservo.detach();
   
    pos = 100;
   }
   
  if (pulseTime1 > 1700) { //legs up
  myservo.attach(3);
    pos = 180;
    movedown = true;
    if (msdownstate == LOW){
       if (moveup) {myservo.write(pos);}
    flashtime = 200;
    flashled();
    } else {
      moveup = false;
      turnledon();
      myservo.detach();
    }
  }  
   
}

请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 5709
请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 8526
请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 3100
请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 4034
发表于 2018-7-12 14:06:57 | 显示全部楼层
顶楼主
回复 支持 反对

使用道具 举报

发表于 2018-7-12 14:46:27 | 显示全部楼层
不懂帮顶
回复 支持 反对

使用道具 举报

发表于 2018-7-12 16:12:42 | 显示全部楼层
请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:飞飞机使我快乐 5229
回复 支持 反对

使用道具 举报

发表于 2018-7-12 19:10:25 | 显示全部楼层
像我这种专业白学的,连看都看不懂
回复 支持 反对

使用道具 举报

发表于 2018-7-12 20:37:46 | 显示全部楼层
都是高手赞
回复 支持 反对

使用道具 举报

发表于 2018-7-12 22:49:53 | 显示全部楼层
顶一下,高手高手高高手
回复 支持 反对

使用道具 举报

发表于 2018-7-12 22:59:00 | 显示全部楼层
只做上下限位的话,用二极管和常闭开关改舵机就行,没必要这么复杂。
回复 支持 反对

使用道具 举报

发表于 2018-7-12 23:00:29 | 显示全部楼层
表示已经飞起来了。。
请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:小丑人生 9542
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-12 23:18:29 | 显示全部楼层
小丑人生 发表于 2018-7-12 22:59 请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 7470
只做上下限位的话,用二极管和常闭开关改舵机就行,没必要这么复杂。

哥们,具体的连接图有吗?还想控制四个灯
回复 支持 反对

使用道具 举报

发表于 2018-7-13 11:06:58 | 显示全部楼层
你找的这个写程序的人自己有没有成功呀,arduino 的舵机只能接9,10口,你的在3口

https://zhidao.baidu.com/question/354346468.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-13 12:10:29 | 显示全部楼层
madanzi 发表于 2018-7-13 11:06 请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:噢噢噢 7187
你找的这个写程序的人自己有没有成功呀,arduino 的舵机只能接9,10口,你的在3口

https://zhidao.baidu.co ...

别人不知道有没有成功,我也发现程序里定义3脚,回去改下看看
回复 支持 反对

使用道具 举报

发表于 2018-7-13 13:30:54 | 显示全部楼层
路过。   
回复 支持 反对

使用道具 举报

发表于 2018-7-15 09:09:31 | 显示全部楼层
不懂帮顶
回复 支持 反对

使用道具 举报

发表于 2018-7-17 13:25:14 | 显示全部楼层
路过帮顶
回复 支持 反对

使用道具 举报

发表于 2018-9-3 14:59:44 | 显示全部楼层
虽然看不懂,但是赞一个
回复 支持 反对

使用道具 举报

发表于 2018-9-3 17:55:16 | 显示全部楼层
小丑人生 发表于 2018-7-12 23:00 请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:我是大肚啊 1631
表示已经飞起来了。。

这个厉害
回复 支持 反对

使用道具 举报

发表于 2018-9-3 22:33:43 | 显示全部楼层
小丑人生 发表于 2018-7-12 23:00 请模友们帮我看看 模友之吧app,北京rc模友,有请还是友请,自己友模玩 作者:光湿恩惠 9909
表示已经飞起来了。。

厉害了
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!