From 1afb6e6588444a38c3bd41433b669a9fb10bb5fd Mon Sep 17 00:00:00 2001 From: Stefan Sterz Date: Mon, 25 Jan 2016 22:02:42 +0100 Subject: [PATCH] add analog Read/Write and RCDecimal --- README.md | 8 ++++---- arduino/src/sketch.ino | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b482cd5..2a83f84 100644 --- a/README.md +++ b/README.md @@ -82,11 +82,11 @@ Followed by six byte long value - [x] 81 - Q - set pin mode - [x] 82 - R - digital write - [x] 83 - S - digital read -- [ ] 84 - T - analog write -- [ ] 85 - U - analog read -- [ ] 86 - V - handle RC Decimal +- [x] 84 - T - analog write +- [x] 85 - U - analog read +- [x] 86 - V - handle RC Decimal - [x] 87 - W - handle RC TriState -- [ ] 88 - X - handle IR send +- [x] 88 - X - handle IR send - [x] 89 - Y - handle IR read ## Special Command diff --git a/arduino/src/sketch.ino b/arduino/src/sketch.ino index 56f193b..9d703a0 100644 --- a/arduino/src/sketch.ino +++ b/arduino/src/sketch.ino @@ -53,11 +53,11 @@ void decodeMessage() { switch (cmd) { //case 80: break; - case 81: setMode(val[0], pin); break; - case 82: digitalW(val[0], pin); break; - case 83: digitalR(pin); break; - //case 84: break; - //case 85: break; + case 81: setMode(val[0], pin); break; + case 82: digitalW(val[0], pin); break; + case 83: digitalR(pin); break; + case 84: analogW(pin, val) break; + case 85: analogR(pin) break; //case 86: break; case 87: sendRCTristate(val, pin); break; //case 88: break; @@ -115,6 +115,34 @@ void digitalR(int pin) { } +void analogW(uint8_t val[], int pin) { + + if(p == -1) { if(debug) Serial.println("badpin"); return; } + pinMode(p, OUTPUT); + analogWrite(p,(256*val[0])+val[1]); + +} + +void analogR(int pin) { + + if(p == -1) { Serial.println("badpin"); return; } + pinMode(p, INPUT); + int rval = analogRead(p); + Serial.println(String(pin + "::" + rval)); + +} + +void handleRCDecimal(uint8_t val[], int pin) { + + if (p == -1) { Serial.println("badpin"); return; } + unsigned int length =(val[0]*256)+val[1]; + unsigned long value =(val[2]*16777216)+(val[3]*65536)+(val[4]*256)+val[5]; + RCSwitch rc = RCSwitch(); + rc.enableTransmit(p); + rc.send(value, length); + +} + void sendRCTristate (uint8_t val[], int pin) { if(pin == -1) { Serial.println("badpin"); return; }