nemon 发表于 2013-12-18 14:13:11

[转载] [Arduino模块]SD20 伺服电机控制器


SD20 伺服电机控制器

电路示意:
http://image.ednchina.com/GROUP/IMAGES/8957283574_1359512761139.gif


代码示例:
/*
Example for SD20 servo driver chip. This will drive a servo from the
first servo pin on the SD20 from 1ms to 2ms repeatedly. This also shows
how to how to set use the expand mode to set custom ranges.

By James Henderson, 2012.
*/

#include <Wire.h>

#define SD20ADDRESS 0x61                // Address of the SD20
#define GETSOFT   (byte)0x00                  // Byte to get software version

int softVer = 0;                        // Stores software version

void setup(){
Wire.begin();                        
Serial.begin(9600);
Software();                           // Call function that reads software version
// setExpand();                        // Calls function that sets expand mode values for servo movement
}

void loop(){

for(int x = 1; x <= 20; x++){
    Wire.beginTransmission(SD20ADDRESS);// Send value of 254 to servo pins
      Wire.write(x);
      Wire.write(255);
    Wire.endTransmission();
    delayMicroseconds(100);
}
    delay(500);
for(int x = 1; x <= 20; x++){
    Wire.beginTransmission(SD20ADDRESS);// Send value of 1 to servo pins
      Wire.write(x);
      Wire.write(1);
    Wire.endTransmission();
    delayMicroseconds(100);
}
delay(500);   
      
}

/*void setExpand(){                     // Function to define custom settings for expanded mode

Wire.beginTransmission(sd20Address);// Send 43 to register 21
Wire.send(21);
Wire.send(43);
Wire.endTransmission();

delayMicroseconds(70);                // Wait for SD20 to process the byte we just sent to it

Wire.beginTransmission(sd20Address);// Set offset
Wire.send(22);
Wire.send(0x03);
Wire.send(0x34);
Wire.endTransmission();

delayMicroseconds(70);                // Wait for SD20 to process the byte we just sent to it

}
*/
void Software(){                         // Function that reads software revision
Wire.beginTransmission(SD20ADDRESS);
Wire.write(GETSOFT);                   // Send to the register that returns the software revision
Wire.endTransmission();               

Wire.requestFrom(SD20ADDRESS, 1);      // Request 1 byte from SD20
while(Wire.available() > 0){         // While there are bytes to read
softVer = Wire.read();               // Get software revision
}
Serial.println(softVer);               // Print software version to arduino serial monitor
}



页: [1]
查看完整版本: [转载] [Arduino模块]SD20 伺服电机控制器