diff --git a/README.md b/README.md index e69de29..8bcede2 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,23 @@ +Denon PMA-770 (and others) Arduino Control + +# About + +This project ultimately seeks to be a "logic control" modification for a +Denon PMA-770; allowing one to do things like change inputs, volume, +balance, and tone using a remote control. + +But that's a long ways down the road; so right now it's goal is to drive +relays and a display to replace the source input switches and input +display. I am designing it around the aforementioned Denon; but it can +obviously work for other units with some modification. + +Schematics and pictures up later. + +# History + +``` +28-Dec-2019: Initial Version. Just reads five switches and triggers an +output. +29-Dec-2019: Added a display. Cleaned up code. Made a repository. +```` + diff --git a/pma770.ino b/pma770.ino new file mode 100644 index 0000000..95b6f47 --- /dev/null +++ b/pma770.ino @@ -0,0 +1,74 @@ +/* + Input Relay Alpha + + dewdude@gmail.com - 28-12-2019 + + */ + +int latchPin = 11; +int clockPin = 9; +int dataPin = 12; +int matrix = A0; + +byte out = 0; +int mx = 0; +void updateShiftRegister() +{ + digitalWrite(latchPin,LOW); + shiftOut(dataPin, clockPin, LSBFIRST, out); + digitalWrite(latchPin, HIGH); +} +void setTape2() +{ + bitSet(out,5); + updateShiftRegister(); +} +void setTape1() +{ + bitSet(out,4); + updateShiftRegister(); +} +void setAUX() +{ + bitSet(out,3); + updateShiftRegister(); +} +void setTune() +{ + bitSet(out,2); + updateShiftRegister(); +} +void setPh1() +{ + bitSet(out,1); + updateShiftRegister(); +} + +void setup() +{ + pinMode(latchPin, OUTPUT); + pinMode(dataPin, OUTPUT); + pinMode(clockPin, OUTPUT); + Serial.begin(9600); + Serial.print("Setting default output"); + bitSet(out,7); + updateShiftRegister(); + Serial.print("Scanning Matrix"); +} + +void loop() { + // put your main code here, to run repeatedly: +int mx = analogRead(matrix); + if (mx > '100' && mx < '200') + {setTape2();} + if (mx > '500' && mx < '600') + {setTape1();} + if (mx > '900' && mx < '950') + {setAUX();} + if (mx > '1000') + {setTune();} + if (mx > '820' && mx < '899') + {setPh1();} +Serial.println(mx); +delay(200); +}