# 8 - Basic Robot Electronics

## I want to be a programmer, not an electrician, why is this here?
To be a good programmer (not just robot programmer) you need to have an understanding of what hardware your software has to interact with. Not every system is the same, and so you can't write your programs the same way for every problem you're trying to solve (although it would be nice if it were that way). 

Not knowing which Motor Controller is which, not knowing which sensor is which, not knowing what any electronic component is on the robot will set you up for failure if you want to write code that actually works. So I built in some basic information to help give you a general idea of what everything is and how it's important or could be important to your overall robot function. 

Now, am I saying that you need to get your hands in and start wiring the robot, no of course not. I did, but that doesn't mean the dual path of electronics and programming is right for you. But it will serve you well to know at least roughly what everything is that way when someone walks up to you and says "the climber motors are using REV Spark MAXs on CAN IDs 3 and 4 and we need to use the built in encoders to know where are climbing hooks are at all times" you won't just look back at them with a confused expression on your face. 

This concept of "knowing just enough" applies to everything you'll do as a programmer. You don't write a AAA game without first understanding what engine you're using, what hardware that engine works on, what the target performance is. You don't write a database application without first understanding what the underlying database is going to be, what resources does it have, do any other applications interact with it. You must know the system your coding for, or you won't be able to write effective and efficient code. 

## Ok I get it, but, this is just a PDF slideshow...
That I can also fix, while there may be some Java oriented comments in the video, [this video on Youtube](https://www.youtube.com/watch?v=RI5EFQlbrYI) is an hour long discussion from the original Java Programming Training I conducted in 2022. We talk about everything in the slideshow, step by step. Again, it's just a basic overview, so if you have questions, you can direct them to me, or Google is your friend. Don't be in the dark on something when it comes time for you to start writing code if you can help it at all, it'll save you from the terrible feeling of needing to scramble to learn something in a time crunch. 