hygain-ir-controller.ino aktualisiert

This commit is contained in:
Michael Clemens // DK1MI 2024-02-11 13:43:25 +00:00
parent 41f731d516
commit fff6145f4a
1 changed files with 51 additions and 19 deletions

View File

@ -14,6 +14,7 @@ const char* password = "xxxxxxx";
AsyncWebServer server(80); AsyncWebServer server(80);
const char* input_heading = "heading"; const char* input_heading = "heading";
const char* input_memory = "memory";
char headingmap[360]; char headingmap[360];
@ -58,43 +59,43 @@ const char index_html[] PROGMEM = R"rawliteral(
<table cellspacing="0" cellpadding="0" align="center"> <table cellspacing="0" cellpadding="0" align="center">
<tbody> <tbody>
<tr> <tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="A">000</button></td><td></td><td></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="A">000</button></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="L">345</button></td><td></td><td><button type="submit" name="heading" value="B">015</button></td><td></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="L">345</button></td><td></td><td><button type="submit" name="memory" value="B">015</button></td><td></td><td></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="K">330</button></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="C">030</button></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="K">330</button></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="C">030</button></td><td></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td><button type="submit" name="heading" value="J">315</button></td><td></td><td></td><td>N</td><td></td><td></td><td><button type="submit" name="heading" value="D">045</button></td><td></td><td></td><td></td> <td></td><td></td><td></td><td><button type="submit" name="memory" value="J">315</button></td><td></td><td></td><td>N</td><td></td><td></td><td><button type="submit" name="memory" value="D">045</button></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td><button type="submit" name="heading" value="I">300</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="E">060</button></td><td></td><td></td> <td></td><td></td><td><button type="submit" name="memory" value="I">300</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="E">060</button></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td><button type="submit" name="heading" value="H">285</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="F">075</button></td><td></td> <td></td><td><button type="submit" name="memory" value="H">285</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="F">075</button></td><td></td>
</tr> </tr>
<tr> <tr>
<td><button type="submit" name="heading" value="G">270</button></td><td></td><td></td><td>W</td><td></td><td></td><td></td><td></td><td></td><td>E</td><td></td><td></td><td><button type="submit" name="heading" value="G">090</button></td> <td><button type="submit" name="memory" value="G">270</button></td><td></td><td></td><td>W</td><td></td><td></td><td></td><td></td><td></td><td>E</td><td></td><td></td><td><button type="submit" name="memory" value="G">090</button></td>
</tr> </tr>
<tr> <tr>
<td></td><td><button type="submit" name="heading" value="F">255</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="H">105</button></td><td></td> <td></td><td><button type="submit" name="memory" value="F">255</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="H">105</button></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td><button type="submit" name="heading" value="E">240</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="I">120</button></td><td></td><td></td> <td></td><td></td><td><button type="submit" name="memory" value="E">240</button></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="I">120</button></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td><button type="submit" name="heading" value="D">225</button></td><td></td><td></td><td>S</td><td></td><td></td><td><button type="submit" name="heading" value="J">135</button></td><td></td><td></td><td></td> <td></td><td></td><td></td><td><button type="submit" name="memory" value="D">225</button></td><td></td><td></td><td>S</td><td></td><td></td><td><button type="submit" name="memory" value="J">135</button></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="C">210</button></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="K">150</button></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="C">210</button></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="K">150</button></td><td></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="B">195</button></td><td></td><td><button type="submit" name="heading" value="L">164</button></td><td></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="B">195</button></td><td></td><td><button type="submit" name="memory" value="L">164</button></td><td></td><td></td><td></td><td></td><td></td>
</tr> </tr>
<tr> <tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="heading" value="A">180</button></td><td></td><td></td><td></td><td></td><td></td><td></td> <td></td><td></td><td></td><td></td><td></td><td></td><td><button type="submit" name="memory" value="A">180</button></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -117,6 +118,32 @@ const uint16_t getValueByKey(char key) {
} }
char lookupLetter(int angle) {
// Adjust angle to be within 0 and 360
angle %= 360;
if (angle < 0) {
angle += 360;
}
// Define the lookup table
const int angles[] = {0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180,
195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345, 360};
const char letters[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'A'};
// Find the closest angle in the table
int closestAngleIndex = 0;
for (int i = 1; i < 26; ++i) {
if (abs(angles[i] - angle) < abs(angles[closestAngleIndex] - angle)) {
closestAngleIndex = i;
}
}
// Return the corresponding letter
return letters[closestAngleIndex];
}
void setup() { void setup() {
// Start serial // Start serial
@ -167,18 +194,23 @@ void setup() {
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) { server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String input_message; String input_message;
String input_parameter; char mem;
if (request->hasParam(input_memory)) {
input_message = request->getParam(input_memory)->value();
mem = input_message[0];
}
if (request->hasParam(input_heading)) { if (request->hasParam(input_heading)) {
input_message = request->getParam(input_heading)->value(); int angle = request->getParam(input_heading)->value().toInt();
input_parameter = input_heading;
char letter = lookupLetter(angle);
mem = letter;
} }
else { else {
input_message = "No message sent"; input_message = "No message sent";
input_parameter = "none";
} }
Serial.println(input_message); Serial.println(String(mem));
uint16_t val = getValueByKey(input_message[0]); uint16_t val = getValueByKey(mem);
Serial.println("IR Code: " + String(val)); Serial.println("IR Code: " + String(val));
irsend.sendNEC(0x0, val, 2); irsend.sendNEC(0x0, val, 2);
delay(500); delay(500);