|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Spike Relay works only in Reverse
Hi,
We want a button to start the relay in reverse, and one for it to go forward. We also have a button to make it stop. The problem is that the spike is only getting the signals to send it in reverse and to stop. our code for it is as follows: Code:
// We need to decide what buttons belong to which functions.
AvoidTipOver(joyBtnShooter7Pushed,
joyBtnShooter8Pushed,
joyBtnShooter9Pushed,
joyBtnShooter5Pushed);
//these are all configured properly, at one point, we were using this for our pneumatics
void AvoidTipOver(bool btn7,
bool btn8,
bool btn9,
bool btn5)
{
// tells the tipBarLeft/Right to be able to work both directions, but it does not seem to
// be working at the moment, tweak this to make it work better.
tipBarLeft->SetDirection(Relay::kBothDirections);
tipBarRight->SetDirection(Relay::kBothDirections);
if (btn8)
{
tipBarLeft->Set(Relay::kForward);//when btn8 is pressed we want it to be set in the forward position.
}
if (btn9)
{
tipBarLeft->Set(Relay::kReverse);//when btn9 is pressed we want it to be set in the reverse position.
}
if (btn5)
{
tipBarLeft->Set(Relay::kOff);//when btn 5 is pressed we want it to stop.
}
}
tipBarLeft = new Relay(TipBarLeft);
tipBarRight = new Relay(TipBarRight);//not used at the moment, we are just testing on a mock-up board.
tipBarLeft->Set(Relay::kOff);
tipBarRight->Set(Relay::kOff);
thanks, Mr. Stone |
|
#2
|
|||||
|
|||||
|
Re: Spike Relay works only in Reverse
Does the Relay LED on the Digital Sidecar go green, red,and off when you push the buttons?
If those are not working either, then it's a coding problem. If those are working, then it's a Sipke problem. |
|
#3
|
|||
|
|||
|
Re: Spike Relay works only in Reverse
The Led only works when I push it to reverse. It goes red.
Besides we tried a different Spike |
|
#4
|
|||||
|
|||||
|
Re: Spike Relay works only in Reverse
Tracing backwards from the lack of green light on the Relay port, I don't see anything wrong with the code you posted. How is joyBtnShooter8Pushed being set?
|
|
#5
|
|||
|
|||
|
Re: Spike Relay works only in Reverse
[code]
/////////////////////////////////////////////////////////////////////////// // Read the values of the joysticks and buttons on both operator pads. /////////////////////////////////////////////////////////////////////////// void ReadOperatorPads() { GetWatchdog().Feed(); joyYDriverLeft = operatorPadDriver->GetLeftY(); joyYDriverRight = operatorPadDriver->GetRightY(); joyBtnDriver1Pushed = operatorPadDriver->GetNumberedButton(1); joyBtnDriver2Pushed = operatorPadDriver->GetNumberedButton(2); joyBtnDriver3Pushed = operatorPadDriver->GetNumberedButton(3); joyBtnDriver4Pushed = operatorPadDriver->GetNumberedButton(4); joyBtnDriver5Pushed = operatorPadDriver->GetNumberedButton(5); joyBtnDriver6Pushed = operatorPadDriver->GetNumberedButton(6); joyYShooterLeft = operatorPadShooter->GetLeftY(); joyYShooterRight = operatorPadShooter->GetRightY(); joyBtnShooter1Pushed = operatorPadShooter->GetNumberedButton(1); joyBtnShooter2Pushed = operatorPadShooter->GetNumberedButton(2); joyBtnShooter3Pushed = operatorPadShooter->GetNumberedButton(3); joyBtnShooter4Pushed = operatorPadShooter->GetNumberedButton(4); joyBtnShooter5Pushed = operatorPadShooter->GetNumberedButton(5); joyBtnShooter6Pushed = operatorPadShooter->GetNumberedButton(6); joyBtnShooter7Pushed = operatorPadShooter->GetNumberedButton(7); joyBtnShooter8Pushed = operatorPadShooter->GetNumberedButton(8); joyBtnShooter9Pushed = operatorPadShooter->GetNumberedButton(9); [code] they are being set correctly because, we used that button earlier in our code to operate a solenoid, and it worked perfectly. EDIT: there is an error that comes up in the message log in the diagnostics tab of the driver station: "Fatal error "Attempting to reuse an allocated resource" in Allocate() in C:/WindRiver/workspace/WPILib/resource.cpp at line 79" I get this 6 times when the robot starts up. Also, when i put in a new command to make it go kForward, in the beginning of the loop "avoidtipover" It does nothing. it acts as if I set it to kOff. i can press down the btn9 and it will run but the second that I release it, it turns off. Last edited by Mr. Stone : 19-02-2010 at 14:55. Reason: forgot to add error |
|
#6
|
|||
|
|||
|
Re: Spike Relay works only in Reverse
Quote:
Code:
m_gyro = new Gyro(1);
m_analogChannel_1 = new AnalogChannel(1);
|
|
#7
|
|||
|
|||
|
Re: Spike Relay works only in Reverse
thanks, as of writing this, we still cannot find the duplicate allocation, but our mentor will be arriving later today to help us out. thanks a lot.
P.S. finding and fixing the allocate error will most likely solve the original problem, because we are using a spike to operate our compressor. Last edited by Mr. Stone : 19-02-2010 at 18:25. |
|
#8
|
|||
|
|||
|
Re: Spike Relay works only in Reverse
I fixed it, the problem was that we were plugging the cable into the sidecar backwards. It figures that it was something stupid like that, and thanks for all the help.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| spike relay problem? | Maxpower57 | Electrical | 15 | 09-04-2012 19:18 |
| Relay bug, doesn't work in Forward or Reverse only modes | Joe Ross | NI LabVIEW | 0 | 16-02-2010 23:33 |
| Relay (Spike) | elbuo | Electrical | 2 | 09-02-2009 20:36 |
| Making a forward only speed control reverse | sanddrag | Electrical | 7 | 12-12-2003 07:19 |
| Spike Relay Input | nwagers | Electrical | 3 | 16-07-2002 22:23 |