= Welcome to Software! = If you're not using a team laptop, you'll need to get yours setup; follow the instructions [wiki:ControlSystems/SoftwareTeam/Training/GettingStarted/LaptopSetup here] == Gear Needed To start developing robot software for team 2537 you will need the following * A laptop running Windows 7, 8, or 10 (you can do most things on a !Mac/Linux machine but you won't be able to test your code, so you really need a Windows laptop). * To load your code onto a robot and test it: * USB [https://www.amazon.com/PXN-PRO-2113-Professional-Controller/dp/B01JY0RAW2 Joystick] or USB [https://www.amazon.com/Logitech-940-000110-Gamepad-F310/dp/B003VAHYQY XBox controller] * Optional: USB [https://www.amazon.com/Genius-120-degree-Conference-Webcam-WideCam/dp/B0080CE5M4 webcam] * Optional: USB [https://www.amazon.com/dp/B0769GFWCZ A-B cable] * A robot (e.g. one of the team's [wiki://ControlSystems/SoftwareTeam/Robots peanut training robots]) == Write your first Java Program(s) Java is one of the most popular programming languages and is the language used in most high schools because it is used for the AP Computer Science exam. Java is part of a family of very similar languages: C, C++, C#, Java and when you learn to program in one you can easily pick up the others. Team 2537 uses Java to program their robots. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/IntroJava GetStartedWithJava] == Write your first Robot program(s) Once you have learned some basic Java, you're ready to start writing your first robot programs. All of the Java skills you learned are directly applicable to robot programming; if you haven't finished the first Java Programs above, you should do so now. Writing Java programs to control a robot is similar to the Java programming you've already learned; there are three key differences: 1. The program you write must be transferred to the robot's computer (the roboRIO) where it will run 2. FIRST and WPI provide a framework that your robot program must run within; the framework manages many aspects of the robot for you. 3. WPI also provides a rich library of pre-written classes called WPIlib that makes robot programming faster and easier. The examples below will teach you to program and use each part of an FRC robot; you should do them in order as they build on each other: * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/XboxController Xbox Controller] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/UltrasonicRangefinder Ultrasonic Rangefinder] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/ServoMotor Servo Motor] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/DCMotor DC Motor Control] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Encoders Encoders] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Autonomous Autonomous] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/ClosedLoopControl Closed Loop Control] [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/IntroRobotJava More Robot Java Examples] == Build more functional robotics programs Once you have learned how to use the various robotics sensors, motors, and controllers, your ready to apply that knowledge to building more useful robotics programs. If you haven't finished the first Robot Programs above, you should do so now; otherwise, go to: [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/functionalRobotJava LearnFunctionalRobotics] == Git Now that you've learned the basics of programming, it's time to learn some tools for essential software communication. [wiki://ControlSystems/Git] == Next Steps Now that you've had an introduction to the tools your team uses and to basic Java and robot programming, continue your training, diving deeper into Java on the [wiki://ControlSystems/SoftwareTeam/Training software training] page.