1 | #include <ESP8266WiFi.h>
|
2 | #include "EEPROM.h"
|
3 |
|
4 | //////////////////////
|
5 | // WiFi Definitions //
|
6 | //////////////////////
|
7 | const char WiFiAPPSK[] = "sparkfun";
|
8 |
|
9 | /////////////////////
|
10 | // Pin Definitions //
|
11 | /////////////////////
|
12 | const int LED_PIN = 5; // Thing's onboard, green LED
|
13 | const int ANALOG_PIN = A0; // The only analog pin on the Thing
|
14 | const int DIGITAL_PIN = 12; // Digital pin to be read
|
15 | String NewRvalue;
|
16 |
|
17 | WiFiServer server(80);
|
18 |
|
19 | void setup()
|
20 | {
|
21 | initHardware();
|
22 | setupWiFi();
|
23 | server.begin();
|
24 | }
|
25 |
|
26 | void loop()
|
27 | {
|
28 | // Check if a client has connected
|
29 | WiFiClient client = server.available();
|
30 | if (!client) {
|
31 | return;
|
32 | }
|
33 |
|
34 | // Read the first line of the request
|
35 | String req = client.readStringUntil('\r');
|
36 | Serial.println(req);
|
37 | //neu2
|
38 | int IndexBeginRValue = req.indexOf('=') + 1;
|
39 | int IndexEndRValue = req.indexOf('&');
|
40 | //Serial.println(IndexBeginRValue);
|
41 | //Serial.println(IndexEndRValue);
|
42 | if (req.startsWith("R0", 6)) {
|
43 | NewRvalue = req.substring(IndexBeginRValue,IndexEndRValue);
|
44 | Serial.println(NewRvalue);
|
45 | }
|
46 |
|
47 | String TestString = "<input type=\"range\" name=\"R0\" min=\"0\" max=\"255\" value=\""+NewRvalue+"\" style=\"width:95%\" />";
|
48 | Serial.println(TestString);
|
49 |
|
50 | client.flush();
|
51 |
|
52 | //neu2
|
53 | /*
|
54 | client.flush();
|
55 |
|
56 | // Match the request
|
57 | int val = -1; // We'll use 'val' to keep track of both the
|
58 | // request type (read/set) and value if set.
|
59 | if (req.indexOf("/led/0") != -1)
|
60 | val = 0; // Will write LED low
|
61 | else if (req.indexOf("/led/1") != -1)
|
62 | val = 1; // Will write LED high
|
63 | else if (req.indexOf("/read") != -1)
|
64 | val = -2; // Will print pin reads
|
65 | // Otherwise request will be invalid. We'll say as much in HTML
|
66 |
|
67 | // Set GPIO5 according to the request
|
68 | if (val >= 0)
|
69 | digitalWrite(LED_PIN, val);
|
70 |
|
71 | client.flush();
|
72 | */
|
73 |
|
74 |
|
75 | // Prepare the response. Start with the common header:
|
76 | String s = "HTTP/1.1 200 OK\r\n";
|
77 | s += "Content-Type: text/html\r\n\r\n";
|
78 | s += "<!DOCTYPE HTML>\r\n<html>\r\n";
|
79 | //neu
|
80 | s += "<form method=\"get\">";
|
81 | s += "Headlight Control";
|
82 | //neu
|
83 | /*
|
84 | // If we're setting the LED, print out a message saying we did
|
85 | if (val >= 0)
|
86 | {
|
87 | s += "LED is now ";
|
88 | s += (val)?"on":"off";
|
89 | }
|
90 | */
|
91 | // else //if (val == -2)
|
92 | //{ // If we're reading pins, print out those values:
|
93 | s += "Analog Pin = ";
|
94 | s += String(analogRead(ANALOG_PIN));
|
95 | s += "<br>"; // Go to the next line.
|
96 | s += "Digital Pin 12 = ";
|
97 | s += String(digitalRead(DIGITAL_PIN));
|
98 | s += "<input type=\"range\" name=\"R0\" min=\"0\" max=\"255\" value=\""+NewRvalue+"\" style=\"width:95%\" />";
|
99 | s += "<br><br>"; // Go to the next line.
|
100 | s += "<input type=\"range\" name=\"G0\" min=\"0\" max=\"255\" value=\"128\" style=\"width:95%\" />";
|
101 | s += "<br><br>"; // Go to the next line.
|
102 | s += "<input type=\"range\" name=\"G0\" min=\"0\" max=\"255\" value=\"128\" style=\"width:95%\" />";
|
103 | s += "<br><br>"; // Go to the next line.
|
104 | s += "<input type=\"range\" name=\"W0\" min=\"0\" max=\"255\" value=\"128\" style=\"width:95%\" />";
|
105 | s += "<br><br>"; // Go to the next line.
|
106 | s += "<p> <input type=\"submit\"> </p>";
|
107 | s += "</form>";
|
108 |
|
109 | // }
|
110 |
|
111 | /*
|
112 | else
|
113 | {
|
114 | s += "Invalid Request.<br> Try /led/1, /led/0, or /read.";
|
115 | }
|
116 | */
|
117 | s += "</html>\n";
|
118 |
|
119 | // Send the response to the client
|
120 | client.print(s);
|
121 | delay(1);
|
122 | //Serial.println("Client disonnected");
|
123 |
|
124 | // The client will actually be disconnected
|
125 | // when the function returns and 'client' object is detroyed
|
126 | }
|
127 |
|
128 | void setupWiFi()
|
129 | {
|
130 | WiFi.mode(WIFI_AP);
|
131 |
|
132 | // Do a little work to get a unique-ish name. Append the
|
133 | // last two bytes of the MAC (HEX'd) to "Thing-":
|
134 | uint8_t mac[WL_MAC_ADDR_LENGTH];
|
135 | WiFi.softAPmacAddress(mac);
|
136 | String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
|
137 | String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
|
138 | macID.toUpperCase();
|
139 | String AP_NameString = "ESP_RGBW_TEST";
|
140 |
|
141 | char AP_NameChar[AP_NameString.length() + 1];
|
142 | memset(AP_NameChar, 0, AP_NameString.length() + 1);
|
143 |
|
144 | for (int i=0; i<AP_NameString.length(); i++)
|
145 | AP_NameChar[i] = AP_NameString.charAt(i);
|
146 |
|
147 | WiFi.softAP(AP_NameChar, WiFiAPPSK);
|
148 | }
|
149 |
|
150 | void initHardware()
|
151 | {
|
152 | Serial.begin(115200);
|
153 | pinMode(DIGITAL_PIN, INPUT_PULLUP);
|
154 | pinMode(LED_PIN, OUTPUT);
|
155 | digitalWrite(LED_PIN, LOW);
|
156 | // Don't need to set ANALOG_PIN as input,
|
157 | // that's all it can be.
|
158 | }
|