Log in

View Full Version : Victor 888 by Arduino Uno R3


VijayAT
27-04-2015, 21:43
This is not an FRC or FIRST related project.

I'm using a Victor 888 and an Arduino Uno R3 to power a BAG motor through PWM. I'm using a FIRST battery.

I found this sample code on Arduino's forums:
#include <SoftwareServo.h>

SoftwareServo servo1;
SoftwareServo servo2;

void setup()
{
pinMode(9,OUTPUT);
servo1.attach(2);
servo1.setMaximumPulse(2200);
servo2.attach(4);
servo2.setMaximumPulse(2200);
Serial.begin(9600);
Serial.print("Ready");
}

void loop()
{
static int value = 0;
static char CurrentServo = 0;

if ( Serial.available()) {
char ch = Serial.read();
switch(ch) {
case 'A':
servo1.attach(2);
CurrentServo='A';
digitalWrite(13,LOW);
break;
case 'B':
servo2.attach(4);
CurrentServo='B';
digitalWrite(13,HIGH);
break;
case '0' ... '9':
value=(ch-'0')*20;
if (CurrentServo=='A')
{
servo1.write(value);
}
else if (CurrentServo=='B')
{
servo2.write(value);
}
break;
}
}
SoftwareServo::refresh();
}

and this from another Chief Delphi post:

//Simple VEX Pro Victor 888 Driver

unsigned short pin = 9;

signed int dutyCycle = 0;
unsigned int highus = 1500;
unsigned int lowus = 1000;

void setup() {
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
Serial.begin(9600);
}

void loop() {
digitalWrite(pin, HIGH);
delayMicroseconds(highus);
digitalWrite(pin, LOW);
delayMicroseconds(lowus);

if (Serial.available() > 0) {
highus = 5*Serial.parseInt() + 1500;
lowus = 1000;
Serial.print("DS: "+dutyCycle);
}
}

I have a VEX Pro VersaPlanetary 10:1 Gearbox and I need the motor to run at 600 RPM, so I can get 60 RPM from the gearbox. I've also looked through Arduino's servo library. Any advice?

JNajarian
27-04-2015, 22:03
Try something like this just to test if your electrical setup works.

#include <Servo.h>
Servo victor1;
void setup(){
victor1.attach(2);
}
void loop(){
victor1.write(180);//0 being full backwards 90 being no motion and 180 being full forwards
}


Last time I used a Victor with an Arduino was about two years ago, I don't have the equipment to test this code right now, but this is essentially what I used to run it.

teslalab2
27-04-2015, 23:21
I wrote I library for jaguars and victors (though I haven't actually tried it with victors)

in header:
#include "Victor.h"
Victor mycontroller;

void setup()

mycontroller.SetPort(pinnum,true/false) //the boolean is for if its reversed or not.

void loop

mycontroller.Set(from -1 to 1)


this might only work on pin 3,5,6,11, like I said I haven't tried it because I don't own any victors. but if you want it here you go :D , and you will probably have to recalibrate the controller.

asid61
28-04-2015, 00:54
I was just about to look for code like this this morning, to see how much processing we can move offboard to an XMOS (just for kicks). Thank you!