I have not done any coding or even used an Arduino yet. Hopefully the answer to this will help me know which one to buy.
I would like to input 2 signals from a remote control car rx, steering and throttle.
Output 1: From the steering input and go to my steering servo to act as if nothing has changed.
Output 2: Signal goes to rc car ESC (electronic speed control) and change depending on throttle and steering input.
Output 3: Same as output 2 except opposite.
This project is to make the rear wheels of the car have independent motors. When no steering is input (driving straight) both ESC's receive only the signal from the throttle input. When steering left one motor will slow down at a rate dependent on the amount of steering input. When steering right the other motor will slow down at a rate dependent on the amount of steering input.
Is this project possible with an Arduino board? If so which board is the best to use for this?
pulseIn() is the function usually used to interpret RC type pulse-width signals. It will very easily give you the length of the pulses in microseconds, so that you can work with the values.
The Servo library allows you to send out RC type signals. You can control an almost unlimited number of servos and ESCs.
The thing you have to be aware of is that pulseIn() is a blocking function. It sits and waits for the pulse to finish. If there's no pulse, it waits up to a second. So you can't do anything else (like turning off the drive motors) for that second.
This also means that it can't read two input signals at the same time. Usually that would be a problem but it may not be a problem for you. RC signals were originally transmitted over the radio sequentially (send the pulse duration for steering, followed by the pulse duration for accelerator, followed by...) so the receiver will probably output the two pulses sequentially. So you can read one pulse, update your outputs then read the second input and update the outputs again. If the two signals are sent at the same time, then you do exactly the same thing but recognise that you're only getting half of the data - you miss every second pulse. This may not be a problem.
Not being able to read two input signals at the same time would be a problem, reading every other pulse would make the steering and throttle very jittery.
I need to read the steering and throttle signals and send out an adjusted signal within milliseconds. If these were brushed motors I could simply use a potentiometer in between the ESC and motor, but brusheless motors makes things more difficult.
Start with pulseIn(). I think it will work. The pulses to the servos are repeated every 50ms, so you'll get new data every 50ms. It doesn't go back to zero 'between' pulses - it just means that it can only make changes on that frequency.
It is not a huge step to make a non-blocking program do the same thing. There's trade-offs to be made between the complexity of the program and the accuracy you require.