RGB LED Strip Control, Multiple inputs

Hello all,
I am just now tinkering with my first arduino, and attempting a project that is fairly difficult at my level of understanding. I'm reasonably familiar with electronics, however, I have a few questions about my circuit. The goals are:
-Control several meters of RGB LED strip using an arduino uno
-Have several inputs including switches and potentiometers

I want the switches to have precedence over the pots, so when they are flipped on they will set the strips to specific colors. When all the switches are off, the pots will control the leds. One will control brightness and the other will set the color based on the color wheel.

Programming is not my main issue, as I have lots of experience in that field. My questions about the circuit are as follows:

-How do I calculate which resistor to use before my MOSFETs? Is it simply Ohm's Law?
-Can I control the arduino and leds from a single power source (9 volt?)
-SHOULD I control the arduino and leds from a single power source?
-What kind of input is received from pots and switches, or does it depend on the specific piece? (fairly stupid question but im a n00b)
-And finally, did I set up the circuit right?

If anyone has any recommendations/questions about what i'm doing please share. I have been wanting to use arduino for a fairly long time, so I decided to bite off as much as I could for my first project.

Thank you all!

-What kind of input is received from pots and switches, or does it depend on the specific piece? (fairly stupid question but im a n00b)

The word "digital" means that something only has two states. It is either on or off. Nothing else is possible.

The word "analog" means that it can have any value in a range.

One of those sounds a lot like a switch and the other sounds a lot like a pot. You should be able to figure it out from there.

You have the capability of putting 9V in various arduino pins. Not good!

Rather than the pots, have you considered using a rotary encoder?

I used one in a christmas light project for brightness and found it worked pretty well.

You said you were happy on the programming side, but it might be worth looking at Adafruit's guide about multitasking the arduino:

As you can only do one thing, if you decide to animate or fade your lights, you can't check the state of your inputs until that code is finished. Using this class method allows you to check inputs, then update your lights a bit more, check inputs again etc.

For switches, see the [u]Digital Read Serial Example[/u]. Or better yet, switch the resistor & switch around (so the resistor pulls the input high, and the switch "overpowers" the resistor to pull it low). Then enable the [u]built-in pull-up resistor(s)[/u] and you won't need the external resistor. (Of course you'll have to invert the logic or turn the switch upside down.)

For the pots, see the [u]Analog Read Serial Example[/u].

-How do I calculate which resistor to use before my MOSFETs? Is it simply Ohm's Law?

No, but the gate resistor is not that critical. The MOSFET is controlled by voltage (not current). The gate has a small capacitance, so a little current flows when the MOSFET is switched. The resistor limits the current during switching. With a small resistor (or no resistor) the Arduino can overheat if the MOSFET is switched frequently (such as when dimming). A higher value resistor makes a longer time-constant which makes the MOSFET switch more slowly. And when the MOSFET is part-way on, it dissipates energy (heat) so if the resistor is too large and the MOSFET switches too slowly it can overheat (if switched frequently).

It's important that you use a "logic level" MOSFET. A "standard" MOSFET may require more than 5V to turn it fully-on.

As you probably know, you'll need 3 MOSFET drivers to control the 3 colors separately.

[u]Here is a MOSFET driver circuit[/u] with an explanation of how it works. (You can leave-out the diode since you have a non-inductive load.)

You can test the driver circuit with a regular-little LED and a 1K current-limiting resistor. (The LED strip has built-in resistors but regular LEDs do not.)

-Can I control the arduino and leds from a single power source (9 volt?)

Yes, but there's more than one kind of LED strip. They usually run from 12V. The Arduino circuitry runs at 5V but there is an on-board 5V voltage regulator, so the board will run from 12V (or 9V).

Make sure the power supply can supply the current (Amps) required by the LEDs, plus a little for the Arduino, plus some "safety margin".