Reset pin, quicker transitions
This commit is contained in:
parent
9ced99c376
commit
caeb06eea7
36
README.md
36
README.md
|
@ -20,6 +20,31 @@ Most people, after watching it for a bit,
|
||||||
form different ideas about what it's displaying.
|
form different ideas about what it's displaying.
|
||||||
That's cool.
|
That's cool.
|
||||||
|
|
||||||
|
Reset
|
||||||
|
------
|
||||||
|
|
||||||
|
Plug the device in,
|
||||||
|
connect GND to pin A0,
|
||||||
|
and briefly press the reboot button.
|
||||||
|
It will flash orange and blue a few times
|
||||||
|
to let you know it has reset.
|
||||||
|
|
||||||
|
|
||||||
|
WiFi
|
||||||
|
-----
|
||||||
|
|
||||||
|
If the red light on the board is lit,
|
||||||
|
that means it doesn't know how to connect to the WiFi.
|
||||||
|
|
||||||
|
Get your phone or computer to connect to an access point
|
||||||
|
called "Wall Art xxxxxxxxx".
|
||||||
|
The password is "artsy fartsy", unless you changed it in the source code.
|
||||||
|
Once connected,
|
||||||
|
you should get a browser window that lets you connect.
|
||||||
|
If not, try going to http://neverssl.com/.
|
||||||
|
|
||||||
|
You can clear the wifi information with a reset.
|
||||||
|
|
||||||
|
|
||||||
Network Server
|
Network Server
|
||||||
--------------
|
--------------
|
||||||
|
@ -65,6 +90,17 @@ I suggest you set it to standard time and pretend it's in sync with the sun.
|
||||||
* There are four pixels around the bottom that move every 5 seconds
|
* There are four pixels around the bottom that move every 5 seconds
|
||||||
|
|
||||||
|
|
||||||
|
Update
|
||||||
|
------
|
||||||
|
|
||||||
|
You can upload a new version of the firmware.
|
||||||
|
Reset the device,
|
||||||
|
and select the "Update" button instead of configuring WiFi.
|
||||||
|
Then you can upload the new .bin firmware file.
|
||||||
|
|
||||||
|
You will have to reconfigure networking after this.
|
||||||
|
|
||||||
|
|
||||||
Philosophy
|
Philosophy
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
|
|
||||||
WiFiManager wfm;
|
WiFiManager wfm;
|
||||||
|
|
||||||
|
void network_reset() {
|
||||||
|
wfm.resetSettings();
|
||||||
|
}
|
||||||
|
|
||||||
void network_setup(char *password) {
|
void network_setup(char *password) {
|
||||||
String hostid = String(ESP.getEfuseMac(), HEX);
|
String hostid = String(ESP.getEfuseMac(), HEX);
|
||||||
String hostname = "Wall Art " + hostid;
|
String hostname = "Wall Art " + hostid;
|
||||||
|
@ -14,8 +18,6 @@ void network_setup(char *password) {
|
||||||
wfm.setConfigPortalBlocking(false);
|
wfm.setConfigPortalBlocking(false);
|
||||||
wfm.setHostname(hostname);
|
wfm.setHostname(hostname);
|
||||||
wfm.autoConnect(hostname.c_str(), password);
|
wfm.autoConnect(hostname.c_str(), password);
|
||||||
|
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool connected() {
|
bool connected() {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
void network_reset();
|
||||||
void network_setup(char *password);
|
void network_setup(char *password);
|
||||||
bool connected();
|
bool connected();
|
||||||
void pause(uint32_t dwMs);
|
void pause(uint32_t dwMs);
|
||||||
|
|
48
wallart.ino
48
wallart.ino
|
@ -1,9 +1,9 @@
|
||||||
#include <FastLED.h>
|
#include <FastLED.h>
|
||||||
#include <ArduinoHttpClient.h>
|
#include <ArduinoHttpClient.h>
|
||||||
#include <WiFiClientSecure.h>
|
#include <WiFiClientSecure.h>
|
||||||
#include <WiFiUdp.h>
|
#include <WiFiUdp.h>
|
||||||
#include <NTPClient.h>
|
#include <NTPClient.h>
|
||||||
#include <Time.h>
|
#include <TimeLib.h>
|
||||||
#include "durations.h"
|
#include "durations.h"
|
||||||
#include "timezones.h"
|
#include "timezones.h"
|
||||||
#include "picker.h"
|
#include "picker.h"
|
||||||
|
@ -34,15 +34,34 @@
|
||||||
|
|
||||||
#define HTTPS_TIMEOUT (2 * SECOND)
|
#define HTTPS_TIMEOUT (2 * SECOND)
|
||||||
|
|
||||||
|
#define RESET_PIN 26
|
||||||
|
|
||||||
CRGB grid[GRIDLEN];
|
CRGB grid[GRIDLEN];
|
||||||
|
|
||||||
WiFiUDP ntpUDP;
|
WiFiUDP ntpUDP;
|
||||||
NTPClient timeClient(ntpUDP);
|
NTPClient timeClient(ntpUDP);
|
||||||
|
|
||||||
|
void do_reset() {
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
for (int j = 0; j < 8; j += 1) {
|
||||||
|
grid[j] = ((i+j)%2) ? (CRGB::Orange) : (CRGB::Blue);
|
||||||
|
}
|
||||||
|
FastLED.show();
|
||||||
|
digitalWrite(LED_BUILTIN, i%2);
|
||||||
|
delay(300 * MILLISECOND);
|
||||||
|
}
|
||||||
|
network_reset();
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
pinMode(RESET_PIN, INPUT_PULLUP);
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
FastLED.addLeds<WS2812, NEOPIXEL_PIN, GRB>(grid, GRIDLEN);
|
FastLED.addLeds<WS2812, NEOPIXEL_PIN, GRB>(grid, GRIDLEN);
|
||||||
// Maybe it's the plexiglass but for my build I really need to dial back the red
|
// Maybe it's the plexiglass, but for my build, I need to dial back the red
|
||||||
FastLED.setCorrection(0xc0ffff);
|
FastLED.setCorrection(0xd0ffff);
|
||||||
|
if (!digitalRead(RESET_PIN)) {
|
||||||
|
do_reset();
|
||||||
|
}
|
||||||
network_setup(WFM_PASSWORD);
|
network_setup(WFM_PASSWORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,9 +249,21 @@ void netget(int count=60) {
|
||||||
if (https.skipResponseHeaders() != HTTP_SUCCESS) break;
|
if (https.skipResponseHeaders() != HTTP_SUCCESS) break;
|
||||||
hue = netgetStatus(HUE_YELLOW);
|
hue = netgetStatus(HUE_YELLOW);
|
||||||
|
|
||||||
int artlen = https.read((uint8_t *)NetArt, sizeof(NetArt));
|
size_t readBytes = 0;
|
||||||
|
for (int i = 0; i < 12; i++) {
|
||||||
|
size_t artBytesLeft = sizeof(NetArt) - readBytes;
|
||||||
|
|
||||||
|
if (https.endOfBodyReached() || (artBytesLeft == 0)) {
|
||||||
hue = netgetStatus(HUE_ORANGE);
|
hue = netgetStatus(HUE_ORANGE);
|
||||||
NetArtFrames = (artlen / 3) / GRIDLEN;
|
NetArtFrames = (readBytes / 3) / GRIDLEN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int l = https.read((uint8_t *)NetArt + readBytes, artBytesLeft);
|
||||||
|
if (-1 == l) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
readBytes += l;
|
||||||
|
}
|
||||||
} while(false);
|
} while(false);
|
||||||
https.stop();
|
https.stop();
|
||||||
}
|
}
|
||||||
|
@ -307,7 +338,12 @@ void loop() {
|
||||||
bool conn = connected();
|
bool conn = connected();
|
||||||
bool day = true;
|
bool day = true;
|
||||||
|
|
||||||
|
switch (timeStatus()) {
|
||||||
|
case timeNotSet:
|
||||||
|
case timeNeedsSync:
|
||||||
updateTime();
|
updateTime();
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (timeStatus() == timeSet) {
|
if (timeStatus() == timeSet) {
|
||||||
int hh = hour();
|
int hh = hour();
|
||||||
day = ((hh >= DAY_BEGIN) && (hh < DAY_END));
|
day = ((hh >= DAY_BEGIN) && (hh < DAY_END));
|
||||||
|
|
Loading…
Reference in New Issue