meter, mapping und co.
This commit is contained in:
parent
c9e6762030
commit
5c15123d00
|
@ -7,6 +7,8 @@
|
||||||
#define PIN_PULSE D5
|
#define PIN_PULSE D5
|
||||||
#define FW_NAME "esp-waehlscheibe"
|
#define FW_NAME "esp-waehlscheibe"
|
||||||
#define FW_VERSION "1.0.0"
|
#define FW_VERSION "1.0.0"
|
||||||
|
#define MINMAP 0
|
||||||
|
#define MAXMAP 500
|
||||||
|
|
||||||
HomieNode dialNode("dial", "dialnode");
|
HomieNode dialNode("dial", "dialnode");
|
||||||
RotaryDialer dialer = RotaryDialer(PIN_READY, PIN_PULSE);
|
RotaryDialer dialer = RotaryDialer(PIN_READY, PIN_PULSE);
|
||||||
|
@ -14,7 +16,8 @@ RotaryDialer dialer = RotaryDialer(PIN_READY, PIN_PULSE);
|
||||||
bool meterHandler(const HomieRange& range, const String& value) {
|
bool meterHandler(const HomieRange& range, const String& value) {
|
||||||
Homie.getLogger() << "meter " << ": " << value << endl;
|
Homie.getLogger() << "meter " << ": " << value << endl;
|
||||||
int iValue = value.toInt();
|
int iValue = value.toInt();
|
||||||
if ((iValue >= 0) && (iValue <=100))
|
// if ((iValue >= 0) && (iValue <=9000))
|
||||||
|
if ((iValue >= 0) && (iValue <=30000))
|
||||||
{
|
{
|
||||||
setMeter(value.toInt());
|
setMeter(value.toInt());
|
||||||
dialNode.setProperty("meter").send(value);
|
dialNode.setProperty("meter").send(value);
|
||||||
|
@ -27,7 +30,7 @@ bool meterHandler(const HomieRange& range, const String& value) {
|
||||||
bool numberHandler(const HomieRange& range, const String& value) {
|
bool numberHandler(const HomieRange& range, const String& value) {
|
||||||
Homie.getLogger() << "number " << ": " << value << endl;
|
Homie.getLogger() << "number " << ": " << value << endl;
|
||||||
int iValue = value.toInt();
|
int iValue = value.toInt();
|
||||||
if ((iValue >= 0) && (iValue <=100))
|
if ((iValue >= 0) && (iValue <=10))
|
||||||
{
|
{
|
||||||
setNumber(value.toInt());
|
setNumber(value.toInt());
|
||||||
dialNode.setProperty("number").send(value);
|
dialNode.setProperty("number").send(value);
|
||||||
|
@ -37,6 +40,19 @@ bool numberHandler(const HomieRange& range, const String& value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool rawHandler(const HomieRange& range, const String& value) {
|
||||||
|
Homie.getLogger() << "raw " << ": " << value << endl;
|
||||||
|
int iValue = value.toInt();
|
||||||
|
if ((iValue >= 0) && (iValue <=1024))
|
||||||
|
{
|
||||||
|
setRaw(value.toInt());
|
||||||
|
dialNode.setProperty("raw").send(value);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
dialer.setup();
|
dialer.setup();
|
||||||
|
@ -45,6 +61,7 @@ void setup() {
|
||||||
dialNode.advertise("dialed");
|
dialNode.advertise("dialed");
|
||||||
dialNode.advertise("meter").settable(meterHandler);
|
dialNode.advertise("meter").settable(meterHandler);
|
||||||
dialNode.advertise("number").settable(numberHandler);
|
dialNode.advertise("number").settable(numberHandler);
|
||||||
|
dialNode.advertise("raw").settable(rawHandler);
|
||||||
Homie.setLoopFunction(loopHandler);
|
Homie.setLoopFunction(loopHandler);
|
||||||
Homie.setup();
|
Homie.setup();
|
||||||
ArduinoOTA.setHostname(Homie.getConfiguration().deviceId);
|
ArduinoOTA.setHostname(Homie.getConfiguration().deviceId);
|
||||||
|
@ -66,11 +83,87 @@ void loop() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setRaw(int pos){
|
||||||
|
analogWrite(D1,pos);
|
||||||
|
}
|
||||||
|
|
||||||
void setMeter(int pos){
|
void setMeter(int pos){
|
||||||
analogWrite(D1,map(pos,0,100,9,462));
|
// analogWrite(D1,map(pos,0,100,MINMAP,MAXMAP));
|
||||||
|
// Range: 0 - 9000
|
||||||
|
// Output: 0 - 495
|
||||||
|
if (pos<1000) {
|
||||||
|
analogWrite(D1,map(pos,0,1000,0,75));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<2000) {
|
||||||
|
analogWrite(D1,map(pos,1000,2000,75,125));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<3000) {
|
||||||
|
analogWrite(D1,map(pos,2000,3000,125,175));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<4000) {
|
||||||
|
analogWrite(D1,map(pos,3000,4000,175,225));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<5000) {
|
||||||
|
analogWrite(D1,map(pos,4000,5000,225,270));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<6000) {
|
||||||
|
analogWrite(D1,map(pos,5000,6000,270,330));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<7000) {
|
||||||
|
analogWrite(D1,map(pos,6000,7000,330,380));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<8000) {
|
||||||
|
analogWrite(D1,map(pos,7000,8000,380,427));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pos<9000) {
|
||||||
|
analogWrite(D1,map(pos,8000,9000,427,495));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
analogWrite(D1,495);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setNumber(int pos){
|
void setNumber(int pos){
|
||||||
analogWrite(D1,map(pos,0,9,9,462));
|
// analogWrite(D1,map(pos,0,9,MINMAP,MAXMAP));
|
||||||
|
switch (pos){
|
||||||
|
case 0:
|
||||||
|
analogWrite(D1,0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
analogWrite(D1,75);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
analogWrite(D1,125);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
analogWrite(D1,175);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
analogWrite(D1,225);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
analogWrite(D1,270);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
analogWrite(D1,330);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
analogWrite(D1,380);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
analogWrite(D1,427);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
analogWrite(D1,495);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue