I needed a new project so I decided to build a six sided NeoPixel cube. At first I wanted to do this because I wanted to code up some nice display patterns to show on the 384 pixels which make up the cube but then I thought I could also show text messages, time and date and the current weather conditions which would actually make this project useful (which is always a good thing). So I ended up doing both; nice patterns and displaying useful information. Because this project uses the ESP8266 Node MCU module which has both WiFi and Bluetooth there are many more applications that the NeoPixel cube could run. If you figure out some cool new apps for the cube, let me know.

In the current code the cube does the following:

1. Displays a colorful random color pattern which fades to black

2. Displays the following text string: "Welcome to Craig & Heather's Wood Haven" (which is what we call our house)

3. Picks a random display pattern to display from the eight provided.

4. Displays the current time and date: "2:50 pm Fri Dec 20 2019"

5. Picks and displays another random display pattern.

6. Displays the current weather conditions : "Clear 45.6F FL: 42.3 Wind: 6.3 mph Hum: 23%"

7. Picks and displays another random display pattern.

8. Goes to sleep for five minutes and then starts the sequence 1-8 over again.

The display patterns are: rainbow, random pixels, white lightening, random color lightening, theater chase, rainbow theater chase,  plasma and many more.

The cube turns itself off from midnight until six in the morning because there would probably be no one around to look at it.

The cube uses NTP time servers for the time data and uses OpenWeatherMap for the weather data. The WiFi manager library is used so that the WiFi network parameters can be set via a web page so the code wouldn't need to change if the cube is moved to a new location.

Currently the cube runs in 12 hour format in the Mountain US timezone (and is daylight savings time aware) and the weather data is displayed for Colorado Springs, CO. USA in imperial units. All of this can be changed, however, because you have access to the Arduino code for the cube.