1.11.9

News

Page  1 sur 3  > >>

2019-01-16
Catégorie : Arduino
Posté par : xavier
Un Circuit imprimé pour plusieurs sketches
2018-06-07
Catégorie : Arduino
Posté par : xavier
Des pistes pour developper un projet a base d'Arduino
2017-09-23
Catégorie : Expositions
Posté par : xavier

Les 4/5 Novembre 2017, au parc Savoie Expo de Chambéry (Savoie), se tiendra l'exposition Savoie Modelisme.

CMS - 1.11.9 - Bartolome
 

Toujours Plus loin

Controller des servomoteurs avec un chip dedié Hobbytronic: 5€ pour 12 servo moteurs + port UK !

Article original

Documentation (datasheet).

// I2C servo controller by www.hobbytronics.co.uk
// written by Alegiaco - July 2011

#include <Wire.h>

const int  servoslave_address=40;   // I2C Address of ADC Chip 
int gradServo[12];

void setup()
{

servo12Setup();

}

void loop()
{
moveServo(5,0); // move servo 5 to 0 degrees
delay(1000);
moveServo(5,90); //move servo 5 to 90 degrees
delay(1000);
moveServo(5,180);  //move servo 5 to 180 degrees
delay(1000);

// move servo 4 and 5 to 100 degrees
gradServo[4]=100;
gradServo[5]=100;
moveServoSet(4,5,gradServo);
delay(1000);

// move servo 4 and 5 to 180 degrees
gradServo[4]=180;
gradServo[5]=180;
moveServoSet(4,5,gradServo);

delay(1000);
}

void servo12Setup(){
 Wire.begin();              // join i2c bus (address optional for master)
  // Optionally set mode to standard 
  // – comment out this section if extended mode required
  Wire.beginTransmission(servoslave_address); // transmit to device
  Wire.send(20);             // servo register address 20
  Wire.send(1);              // 1 = extended mode (0-180 degrees)
  Wire.endTransmission();    // stop transmitting 
  delay(1);
}

void moveServo(int numServo, int deg) {
    Wire.beginTransmission(servoslave_address); // transmit to device
    Wire.send(numServo);               // servo register to start from
    Serial.println(numServo);
    float degre=((deg/180.0)*255.0);    // transform in format compatible with servo controller
    int degree=int(degre);
    Wire.send(degree);           // send 12 bytes of data
    Wire.endTransmission();    // stop transmitting 
    delay(1);                  // waits
  } 

void moveServoSet(int numServoStart, int numServoEnd, int valServo[12]) {
    Wire.beginTransmission(servoslave_address); // transmit to device
    Wire.send(numServoStart);               // servo register to start from
    for (int j=numServoStart;j<=numServoEnd;j++) {
      float degre=valServo[j]/180.0*255.0;
      int degree=int(degre);
      Wire.send(degree);           // send 12 bytes of data
      }
    Wire.endTransmission();    // stop transmitting 
    delay(1);                  // waits 

    }

 

Autre solution avec le TLC5940: Texas Instruments TLC5940 16-channel driver pour 6€ chez Lextronic TLC5940_data_sheet (.pdf)

module Sparkfun Daisy chain (Belgique)

Previous page: Plus loin  Page suivante : Silence!