= 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] == Write your first Java Program(s) Java is one of the most popular programming languages and is taught 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. Like the large majority of FRC teams, 2537 uses Java to program their robots. For more on why we use Java, see [wiki://Software/WhyJava here]. Go through the lessons below in sequence to learn just enough Java to start programming robots: 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/HelloWorld Hello World] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Variables Variables] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Debugger Debugger] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Conditionals Conditionals] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Loops Loops] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Arrays Arrays] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Methods Functions/Methods] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/StateMachines1 State Machines] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/IntroJava Object Oriented Programming] (OOP) 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/StateMachines2 O.O. State Machines] * [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/JavaExercises More Exercises] == 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: * The program you write must be transferred to the robot's computer (the roboRIO) where it will run * FIRST and WPI provide a framework that your robot program must run within; the framework manages many aspects of the robot for you. * WPI also provides a rich library of pre-written classes called WPIlib that makes robot programming faster and easier. To run your robot code, you'll need [wiki:ControlSystems/SoftwareTeam/Training/GettingStarted/RobotGear a few things]. 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: 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/XboxController Xbox Controller] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/UltrasonicRangefinder Ultrasonic Rangefinder] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/ServoMotor Servo Motor] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/DCMotor DC Motor Control] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Encoders Encoders] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Autonomous Autonomous] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/ClosedLoopControl Closed Loop Control] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/RobotFSM1 Finite Automata] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/PIDControl PID Control] 1. !Cameras/Video 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Cameras Streaming Video] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Overlays Adding Overlays] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/CameraSwitching Switching Cameras] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Targeting Targeting] 1. [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/Shuffleboard Shuffleboard] * [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. Git is a popular program for software version control It allows you to save versions of your work and return to them later, see differences between versions, and even share work with other team members. Git is used widely in industry; expect to use it or something like it daily if you become a software engineer. Learn to use Git [wiki://ControlSystems/SoftwareTeam/Training/Git here]. == 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 at the [wiki://ControlSystems/SoftwareTeam/Training/IntermediateJava Java Gym].