![]() |
Help with PSoC board programming please
can any one please show me how to program a PSoC board with a switch
or give me a sample code?? Quote:
|
Re: Help with PSoC board programming please
http://www.virtualroadside.com/WPILi...r_station.html
I have linked the relevant API documents. You can use DriverStation::GetDigitalIn([number]) to get the value of the switch. And PLEASE try to take a little more time writing your posts in the future. |
Re: Help with PSoC board programming please
Quote:
|
Re: Help with PSoC board programming please
The GetDigitalIn would be somewhere in your Teleop loop (before you need the data of course)
|
Re: Help with PSoC board programming please
Quote:
|
Re: Help with PSoC board programming please
The value of the switch...
|
Re: Help with PSoC board programming please
how do you make the PSoC board communicate with the driver station, i plugged it in but the driver station says:
Quote:
|
Re: Help with PSoC board programming please
Did you follow the steps in section 2.11 of the control system manual for configuring the I/O module?
|
Re: Help with PSoC board programming please
Quote:
Quote:
(sorry for so much questions, but im just learning) |
Re: Help with PSoC board programming please
Does the I/O light turn green in the Diagnostcs window?
Make sure you have the latest update to the DS software (1.2 I believe). You may need to uninstall and reinstall the Cypress software through the updater |
Re: Help with PSoC board programming please
Quote:
|
Re: Help with PSoC board programming please
To use the DriverStation functions, you have to create a DriverStation pointer and set it with DriverStation::GetInstance(). You can then use GetDigitalIn only on the first 8 pins. The DS must also be set to Compatible I/O mode (through I/O screen). If you want to use any of the advanced functionality available through the PSoC board, the system is a bit different (will show with code)
Using DriverStation Code:
public:Code:
Teleop() { |
Re: Help with PSoC board programming please
for the first one, would the operator code look like this:
Code:
and i tried the enhanced io but it gives me a warning that "dsio" is a unused varible |
Re: Help with PSoC board programming please
switch is a bool variable. Did you declare it? dsio being unused is an effect of the = error because the compiler doesn't recognize that line as valid, so no go on using it.
Also, the logic on your version is bad. My version was writing the value of the digital in to a variable. Yours is using that value in a switch statement, which is used when you have different values to run between (a fancy if statement pretty much). Additionally, you are ending the switch without any code because of the ; at the end of the line. You then go onto write a block of code that will execute on every loop. Plus you throw a wait in there. not good. It will compile, but most likely will not run. This is what I think you want: Code:
void OperatorControl() {If you absolutely need the 1 second run of the motor, I suggest you export the code for this to another task and communicate via a class variable |
Re: Help with PSoC board programming please
Quote:
|
Re: Help with PSoC board programming please
another problem is when i use
Quote:
any one knows how to fix this problem? |
Re: Help with PSoC board programming please
Try it without the "&" character.
|
Re: Help with PSoC board programming please
i did that but I build it, i get an error this time
|
Re: Help with PSoC board programming please
You're probably trying to use the variable outside of the scope it was declared. Is that code from your init function?
|
Re: Help with PSoC board programming please
I do not know what do you mean by init code?, I put it under teleoperated
|
Re: Help with PSoC board programming please
init as in the constructor function (possibly called RobotDemo)
Can you post your full code? Also does it say the error is on the same line as the line you posted? |
Re: Help with PSoC board programming please
#include "WPILib.h"
#include "DriverStation.h" //#include "Vision/HSLImage.h" //#include "Vision/AxisCamera.h" /* * This is a demo program showing the use of the RobotBase class. * The SimpleRobot class is the base of a robot application that will automatically call your * Autonomous and OperatorControl methods at the right time as controlled by the switches on * the driver station or the field controls. */ /////////////////////////////////////////////////////////////////////////////////////////////////////// /// CLASS /// class RobotDemo : public SimpleRobot { Victor *VictorPair1, *VictorPair2; RobotDrive *myRobot; // robot drive system Joystick *RightStick, *LeftStick, *ThirdStick; // only joystick DriverStation *ds, *dsio; // driver station Servo *Left_GearServo, *Right_GearServo; Victor *Dribbler, *CamKicker, *Winch; DigitalInput *limitSwitchB, *AutoSwitch1, *AutoSwitch2, *AutoSwitch3, *Swltch; Relay *ArmRelease; // AxisCamera *camera; ////////////////////////////////////////////////////////////////////////////////////////////////////// /// PUBLIC /// public: RobotDemo(void) { VictorPair1 = new Victor(1); VictorPair2 = new Victor(2); ds = DriverStation::GetInstance(); myRobot = new RobotDrive(VictorPair1, VictorPair2); // create robot drive base RightStick = new Joystick(1);// create the joysticks LeftStick = new Joystick(2); ThirdStick = new Joystick(3); AutoSwitch1 = new DigitalInput(1); AutoSwitch2 = new DigitalInput(2); AutoSwitch3 = new DigitalInput(3); limitSwitchB = new DigitalInput(7); Left_GearServo = new Servo(3); Right_GearServo = new Servo(4); Dribbler = new Victor(5); CamKicker = new Victor(6); Winch = new Victor(7); ArmRelease = new Relay(1); GetWatchdog().SetExpiration(100); } /////////////////////////////////////////////////////////////////////////////////////////////////////// /// AUTONOMOUS FIRST ZONE /// void Autonomous(void) { GetWatchdog().SetEnabled(false); { { Right_GearServo->Set(127); Left_GearServo->Set(127); } if (AutoSwitch1->Get()== 1) { { myRobot->Drive(-0.5, 0.0); Dribbler->Set(1.0); Wait(1.5); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } }; //////////////////////////////////////////////////////////////////////////////////////// //////SECOND ZONE///// if (AutoSwitch2->Get()==1) { { myRobot->Drive(-0.30, 0.0); Dribbler->Set(1.0); Wait(2.6); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } { myRobot->Drive(-0.30, 0.0); Dribbler->Set(1.0); Wait(1.2); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } }; //////////////////////////////////////////////////////////////////////////////// //////THIRD ZONE////// if (AutoSwitch3->Get()== 1) { { myRobot->Drive(-0.30, 0.0); Dribbler->Set(1.0); Wait(1.3); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } { myRobot->Drive(-0.30, 0.0); Dribbler->Set(1.0); Wait(1.2); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } { myRobot->Drive(-0.30, 0.0); Dribbler->Set(1.0); Wait(1.3); myRobot->Drive(0.0, 0.0); CamKicker->Set(-1.0); Wait(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); while(limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); } } if (limitSwitchB->Get()== 1) { CamKicker->Set(0.0); } { myRobot->Drive(1.0, 0.0); Wait(0.5); myRobot->Drive(0.0, 0.0); } } }; }; ////////////////////////////////////////////////////////////////////////////////////////////// /// OPERATOR CONTROL /// void OperatorControl(void) { GetWatchdog().SetEnabled(false); //GetWatchdog().Feed(); DriverStationEnhancedIO &dsio = DriverStation::GetInstance()->GetEnhancedIO(); /* while (IsOperatorControl()) { AxisCamera &camera = AxisCamera::GetInstance(); camera.WriteResolution(AxisCamera::kResolution_640 x480); camera.WriteCompression(20); camera.WriteBrightness(0); }*/ // Assume that the THIRDSTICK THROTTLE is initially set at 100% (max) // float Max_DribblerSpeed = ThirdStick->GetThrottle(); ///////////////////////////////////////////////////////////////////////////////////////////// /// Robot Drive /// while (IsOperatorControl()) { myRobot->TankDrive(RightStick, LeftStick); /////////////////////////////////////////////////////////////////////////////////////////// /// Dribbler Control /// if (ThirdStick->GetRawButton(2)) { Dribbler->Set(1.0); }; ////////////////////////////////////////////////////////////////////////////////////////// /// ARM CONTROL /// /// ARM RELEASE /// if (ThirdStick->GetRawButton(6)) { ArmRelease->Set(Relay::kForward); Winch->Set(0.0); Dribbler->Set(0.0); CamKicker->Set(0.0); } else if (ThirdStick->GetRawButton(7)) { ArmRelease->Set(Relay::kReverse); Winch->Set(0.0); Dribbler->Set(0.0); CamKicker->Set(0.0); } else { ArmRelease->Set(Relay::kOff); } /// WINCH /// if (ThirdStick->GetRawButton(11)) { Winch->Set(1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); ArmRelease->Set(Relay::kOff); } else if (ThirdStick->GetRawButton(10)) { Winch->Set(-1.0); CamKicker->Set(0.0); Dribbler->Set(0.0); ArmRelease->Set(Relay::kOff); } else { Winch->Set(0.0); } ///////////////////////////////////////////////////////////////////////////////////////////////////// /// CAMKICKER && LIMITSWITCH-B /// if(ThirdStick-> GetRawButton(4)) { while (limitSwitchB->Get()== 0) { CamKicker->Set(-1.0); Dribbler->Set(0.0); Winch->Set(0.0); ArmRelease->Set(Relay::kOff); } CamKicker->Set(0.0); } if (ThirdStick->GetTrigger() && (limitSwitchB->Get()== 1)) { CamKicker->Set(-1.0); Winch->Set(0.0); Dribbler->Set(0.0); ArmRelease->Set(Relay::kOff); if (limitSwitchB->Get() == 0) { CamKicker->Set(0.0); } } ///////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /// GEAR CONTROL /// if ( (LeftStick->GetTrigger()) ) { Left_GearServo -> Set(127); Right_GearServo -> Set(127); }; if ( (RightStick->GetTrigger()) ) { Left_GearServo ->Set(-127); Right_GearServo ->Set(-127); }; }; }; }; START_ROBOT_CLASS(RobotDemo); |
Re: Help with PSoC board programming please
You're defining dsio twice in your program. At the top of the file it is declared as a DriverStation*. Remove that (leave ds in there though) at it should build.
|
Re: Help with PSoC board programming please
Yea, but even when I take it out of class, i get the same warning
|
| All times are GMT -5. The time now is 14:24. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi