I am trying to run a model railway. My computer control is JRMI/CMRI.
I have a Nano controlling 4 Adafruit pca9685 16-channel servo drivers controlling servos with no problems.
Everything works fine but I cannot find a way to control the speed of the servos.
I have looked at various solution but cant get my head around how to use it in my sketch.
Any help for a confused pensioner much appreciated please.
Eddy
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <CMRI.h>
#include <Auto485.h>
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40); //setup the board address 3
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
Adafruit_PWMServoDriver pwm3 = Adafruit_PWMServoDriver(0x42);
Adafruit_PWMServoDriver pwm4 = Adafruit_PWMServoDriver(0x43);
Auto485 bus(2); // Arduino pin 2 -> MAX485 DE and RE pins
CMRI cmri(5, 24, 48, bus); //CMRI node & Nano number
int Tbit[3];
void setup() {
Serial.begin(9600);
bus.begin(9600);
pwm1.begin();
pwm1.setPWMFreq(60); // This is the maximum PWM frequency
pwm2.begin();
pwm2.setPWMFreq(60);
pwm3.begin();
pwm3.setPWMFreq(60);
pwm4.begin();
pwm4.setPWMFreq(60);
}
void loop(){
cmri.process();
Tbit[0] = (cmri.get_bit(0));
Tbit[1] = (cmri.get_bit(1));
Tbit[2] = (cmri.get_bit(2));
if (Tbit[2] == 1){
pwm2.setPWM(2, 0, 135);
}
if (Tbit[2] == 0){
pwm2.setPWM(2, 0, 580);
}
if (Tbit[0] == 1){
pwm4.setPWM(0, 0, 135);
}
if (Tbit[0] == 0){
pwm4.setPWM(0, 0, 580);
}
if (Tbit[1] == 1){
pwm4.setPWM(1, 0, 135);
}
if (Tbit[1] == 0){
pwm4.setPWM(1, 0, 580);
}
}