# PID

We need the PID controller running on the Arduino to update the acceleration of the vehicle based on the vehicle's current speed. There are two main steps required to achieve this.

## Communications

The first step is to add two functions for exchanging serial data with the Arduino. The first one checks for serial input each time through the draw() loop. This is how we will receive instructions from the Arduino. The second function sends the current speed to the Arduino for input into the controller. This function runs at the end of the draw() loop so that the speed value includes the latest updates.

The concepts required to complete this step are the same as you used in the practical exercise which introduced the Processing environment. To check that the communications are working, you will need to be able to view the values being sent between the applications.

## The controller

The second step is to implement the controller using the Arduino PID library. The link in the resources box takes you to the download page. Install the library and use the examples at the bottom of the page to help you create the PID required function. Remember that the PID controller depends on the error - ie the difference between the set point and the current actual value.