## Dimming the NeoPixel

Wow that NeoPixel sure is bright, huh? There is a really simple way to dim it. The NeoPixel takes a value from 0 to 255, 255 being the brightest.

Let's dim it by 100. In your code, change:

`const int RED[ ] = {255, 0, 0};` to `const int RED[ ] = {155, 0, 0};`

Still too bright? Let's cut it by 1/3rd by changing:

`const int GREEN[ ] = {128, 255, 0};` to `const int GREEN[ ]= {128/3, 255/3, 0};`

## NeoPixel Glance Thermometer

We're going to modify the thermometer circuit to use the NeoPixel to assemble a color-coded thermometer. Glance over at this circuit and see the color which corresponds to a specific temperature.

## Wiring

The wiring for this circuit is easy - just wire up the temperature sensor.

## Code

Copy/paste the code below. Then, compile and upload it to your Metro Express!

```/*
* CIRC18 Make It Better
* NeoPixel Glance Thermometer - check the weather super quickly!
*
* by Brent Rubell for Adafruit Industries
*/

// Include the Adafruit Neopixel Library

// The default pin for the NeoPixel on the Metro Express is Pin #40
#define METROPIXELPIN            40

// Temperature Sensor
const int temperaturePin = A0;

// metroPixel takes in both the number of pixels (1, the built-in) and the pin)
float temperature = 0;

/* Temperature Colors */
const int RED[ ] = {255, 0, 0};
const int ORANGE[ ] = {255, 153, 51};
const int YELLOW[ ] = {255, 255, 0};
const int LIGHTGREEN[ ] = {128, 255, 0};
const int DARKGREEN[ ] = {76, 153, 0};
const int DARKBLUE[ ] = {0, 0, 255};
const int DARKPURPLE[ ] = {51, 0, 102};
const int BLACK[ ] = {0, 0, 0};

void setup()
{
// Start the Serial at 9600 baud
Serial.begin(9600);
// init the neopixel library
metroPixel.begin();
}

void loop()
{
temperature = getVoltage3V(temperaturePin);
// Convert to degrees C
temperature = (temperature - .5) * 100;
// print the temperature in C to the serial
Serial.println(temperature);
// temp <-> color picker
if (temperature > 40) {
// red
pixelWrite(RED);
}
else if (temperature > 35) {
// orange
pixelWrite(ORANGE);
}
else if (temperature > 30) {
// yellow
pixelWrite(YELLOW);
}
else if (temperature > 25) {
// yellow
pixelWrite(LIGHTGREEN);
}
else if (temperature > 20) {
// dark green
pixelWrite(DARKGREEN);
}
else if (temperature > 5) {
// dark blue
pixelWrite(DARKBLUE);
}
else {
// dark purple
pixelWrite(DARKPURPLE);
}
delay(1000);
}

// takes in a pre-defined color (integer array) and sets the pixel to that color
void pixelWrite(const int* color) {
metroPixel.setPixelColor(0, metroPixel.Color(color[0],color[1],color[2]));
// write the pixel color to the Metro's Neopixel
metroPixel.show();
}

// Voltage to temperature if Vs= 3.3V
float getVoltage3V(int pin){
// 3.3V/1023