闽海 发表于 2013-12-11 18:41:48

求大神看电路编程 32路舵机控制器 ATMega328+74HC595PW

本帖最后由 闽海 于 2013-12-18 22:41 编辑

求大神看电路编程 32路舵机控制器
硬件平台:
ATMega328+74HC595PW
局部电路原理图如下:

电路原理图下载:

绿林网页 发表于 2013-12-11 20:23:20

有程序代码吗?主要想看程序代码~

闽海 发表于 2013-12-11 22:04:31

绿林网页 发表于 2013-12-11 20:23 static/image/common/back.gif
有程序代码吗?主要想看程序代码~

亲 俺也在等大神出程序呢

绿林网页 发表于 2013-12-11 22:52:15

那我先贴一个简单的,等待大神~~#include <Servo.h>
Servo servo0;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;

String t_comdata = String("");
char tchar;
int sevdata={0};
int ykData={
0};
int smark=0;
void setjd(int pin,int val)
{
if(val<0)val=0;
if(val>180)val=180;
switch(pin)
{
case 0:
    if(servo0.read()!=val)
      servo0.write(val);
    break;
case 1:
    if(servo1.read()!=val)
      servo1.write(val);
    break;
case 2:
    if(servo2.read()!=val)
      servo2.write(val);
    break;
case 3:
    if(servo3.read()!=val)
      servo3.write(val);
    break;
case 4:
    if(servo4.read()!=val)
      servo4.write(val);
    break;
case 5:
    if(servo5.read()!=val)
      servo5.write(val);
    break;
case 6:
    if(servo6.read()!=val)
      servo6.write(val);
    break;
case 7:
    if(servo7.read()!=val)
      servo7.write(val);
    break;
case 8:
    if(servo8.read()!=val)
      servo8.write(val);
    break;
}
}
void ProtocolAnalysis()
{
while (Serial.available() > 0){
    tchar=char(Serial.read());
    if(tchar=='#'){
      t_comdata = String("");
      smark=1;
    }
    else if(tchar=='\n'){
      Serial.println(t_comdata);
      int j=0;
      for(int i = 0; i < t_comdata.length() ; i++){
      if(t_comdata == ','){
          j++;   
      }
      else{      
          ykData = ykData * 10 + (t_comdata - '0');
      }   
      }
      smark=2;
    }
    else{
      if(smark==1){      
      t_comdata+=tchar;
      }
    }
    delay(2);
}
}
void setup()
{
Serial.begin(9600);
servo0.attach(2);
servo1.attach(3);
servo2.attach(4);
servo3.attach(5);
servo4.attach(6);
servo5.attach(7);
servo6.attach(8);
servo7.attach(9);
servo8.attach(10);
Serial.println("init...");
delay(1000);
for(int i=0;i< sizeof(sevdata);i++)
{
    setjd(i,sevdata);
}
delay(1000);
Serial.println("start...");
}
void loop()
{
ProtocolAnalysis();
if(smark==2) {   
    Serial.println("do...");
    for(int i=0;i<9;i++){
      setjd(i,ykData);
    }   
    delay(50);
    Serial.println("clear...");
    for(int i=0;i<10;i++) {
      ykData = 0;
    }
    smark=0;
}
}

闽海 发表于 2013-12-12 19:14:56

绿林网页 发表于 2013-12-11 22:52 static/image/common/back.gif
那我先贴一个简单的,等待大神~~

厉害啊 这几天苦苦寻找总算找到源代码 当不知怎么生成固件

闽海 发表于 2013-12-12 19:20:20

现在奉上源代码 望大神出个编程教程

michealzhou 发表于 2013-12-13 11:33:10

就想看协议部分怎么处理的

michealzhou 发表于 2013-12-13 11:33:29

我还知道一种不用74HC595的,用算法实现

闽海 发表于 2013-12-13 12:50:44

michealzhou 发表于 2013-12-13 11:33 static/image/common/back.gif
我还知道一种不用74HC595的,用算法实现

上代码看看 让大家学习一下

ZOIDS 发表于 2013-12-13 21:13:03

http://arcbotics.com/products/servotor32/
不解釋{:soso_e141:}

闽海 发表于 2013-12-15 17:20:48

ZOIDS 发表于 2013-12-13 21:13 static/image/common/back.gif
http://arcbotics.com/products/servotor32/
不解釋

下了代码 居然编译不过去

ZOIDS 发表于 2013-12-18 22:22:05

闽海 发表于 2013-12-15 17:20 static/image/common/back.gif
下了代码 居然编译不过去

可以編譯的 親好好查錯

闽海 发表于 2013-12-18 22:40:30

本帖最后由 闽海 于 2013-12-18 22:42 编辑

ZOIDS 发表于 2013-12-18 22:22 static/image/common/back.gif
可以編譯的 親好好查錯

可以了 板子选错了 谢谢哈但是不是328的 哪里可以找到呢

ZOIDS 发表于 2013-12-19 21:22:01

闽海 发表于 2013-12-18 22:40 static/image/common/back.gif
可以了 板子选错了 谢谢哈但是不是328的 哪里可以找到呢

leonardo 和 pro micro 都可以的
页: [1]
查看完整版本: 求大神看电路编程 32路舵机控制器 ATMega328+74HC595PW