# Intel® Edison Hands-on Day 3: Light Dimmer

1,998

20

1

Light dimmers are devices used to vary the brightness of

a light. Through a rotation sensor, we can tune the intensity of the light output. More you rotate the knob, the brighter the LED will be. So let’s try to make a dimmer by ourselves.

Rotation sensor can be applied in various kinds of application, such as the servo controlling, DC motor speed controlling and etc.

Component required

### Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

## Step 1: Connection

Analog Rotation Sensor → Analog Pin 0

Digital piranha LED light module → Digital Pin 9

## Step 2: Coding

// light dimmer

int potPin = 0; // Analog Rotation Sensor connected to Analog Pin 0

int ledPin = 9; //LED connected to Digital Pin 9

void setup() {

pinMode(ledPin, OUTPUT);

}

void loop() {

// Shrink the value range from 0~1023 to 0~255 via map() function

int outputValue = map(sensorValue, 0, 1023, 0, 255);

analogWrite(ledPin, outputValue); //Write the LED

delay(2);

}

Slowly rotate the knob, and you can see the varying brightness.

Analog Rotation Sensor acts as an input device, while the PWM output controls the brightness of the LED.

## Step 4: Coding Review

Let’s talking about the map() function

This is the format of the map() function：

map(value, fromLow, fromHigh, toLow, toHigh)

Re-maps a number from one range to another. That is, a value of fromLow would get mapped to toLow, a value of fromHigh to toHigh, values in-between to values in-between, etc.

Parameters of map()：

value：the number to map

fromLow：the lower bound of the value's current range

fromHigh：the upper bound of the value's current range

toLow：the lower bound of the value's target range

toHigh：the upper bound of the value's target range

Note that the "lower bounds" of either range may be larger or smaller than the "upper bounds" so the map() function may be used to reverse a range of numbers, for example

y = map(x, 1, 50, 50, 1);

The function also handles negative numbers well, so that this example

y = map(x, 1, 50, 50, -100);

Turning back to our example，

int outputValue = map(sensorValue, 0, 1023, 0, 255);

What we want is to Shrink the value range from 0~1023(from analog value) to 0~255(to PWM output)

## Recommendations

• ### Large Motors Class

13,262 Enrolled