Initial Commit
This commit is contained in:
commit
9778291b3d
21
CODES.txt
Normal file
21
CODES.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
CODES
|
||||||
|
====
|
||||||
|
|
||||||
|
The following are recoded codes for the Z606 sound system. It is using NEC
|
||||||
|
encoding
|
||||||
|
|
||||||
|
Button | Address | Command
|
||||||
|
-----------------------------
|
||||||
|
Power | 0x7484 | 0xFF
|
||||||
|
Mute | 0x7080 | 0xB9
|
||||||
|
2.1/5.1 | 0x7080 | 0xEC
|
||||||
|
VOL- | 0x7080 | 0xC8
|
||||||
|
CHANNEL | 0x7080 | 0xC1
|
||||||
|
VOL+ | 0x7080 | 0xC7
|
||||||
|
AUX | 0x7080 | 0xB4
|
||||||
|
BLE | 0x7080 | 0xBA
|
||||||
|
RCA | 0x7080 | 0xF9
|
||||||
|
BACK | 0x7080 | 0xAE
|
||||||
|
PLAY/P | 0x7282 | 0xA8
|
||||||
|
FORWARD | 0x7080 | 0xAF
|
||||||
|
|
21
README.md
Normal file
21
README.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Remote
|
||||||
|
======
|
||||||
|
|
||||||
|
This is a programable remote control that uses an ATMega328P and mechanical
|
||||||
|
switches to create a more pleasent remote control experience
|
||||||
|
|
||||||
|
Features/TODO
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Programmable controls
|
||||||
|
- Mechanical keys
|
||||||
|
- Several "virtual" remotes
|
||||||
|
|
||||||
|
Design
|
||||||
|
======
|
||||||
|
|
||||||
|
Pinout
|
||||||
|
------
|
||||||
|
|
||||||
|
The IR led attaches to Pin 13
|
||||||
|
|
BIN
gerber/rev1.0/Gerber_PCB_Remote_2022-03-29.zip
Normal file
BIN
gerber/rev1.0/Gerber_PCB_Remote_2022-03-29.zip
Normal file
Binary file not shown.
BIN
gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png
Normal file
BIN
gerber/rev1.0/PCB_PCB_Remote_2022-03-29.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
1182
remote/LowPower.cpp
Normal file
1182
remote/LowPower.cpp
Normal file
File diff suppressed because it is too large
Load Diff
173
remote/LowPower.h
Normal file
173
remote/LowPower.h
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
#ifndef LowPower_h
|
||||||
|
#define LowPower_h
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
enum period_t
|
||||||
|
{
|
||||||
|
SLEEP_15MS,
|
||||||
|
SLEEP_30MS,
|
||||||
|
SLEEP_60MS,
|
||||||
|
SLEEP_120MS,
|
||||||
|
SLEEP_250MS,
|
||||||
|
SLEEP_500MS,
|
||||||
|
SLEEP_1S,
|
||||||
|
SLEEP_2S,
|
||||||
|
SLEEP_4S,
|
||||||
|
SLEEP_8S,
|
||||||
|
SLEEP_FOREVER
|
||||||
|
};
|
||||||
|
|
||||||
|
enum bod_t
|
||||||
|
{
|
||||||
|
BOD_OFF,
|
||||||
|
BOD_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum adc_t
|
||||||
|
{
|
||||||
|
ADC_OFF,
|
||||||
|
ADC_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer5_t
|
||||||
|
{
|
||||||
|
TIMER5_OFF,
|
||||||
|
TIMER5_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer4_t
|
||||||
|
{
|
||||||
|
TIMER4_OFF,
|
||||||
|
TIMER4_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer3_t
|
||||||
|
{
|
||||||
|
TIMER3_OFF,
|
||||||
|
TIMER3_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer2_t
|
||||||
|
{
|
||||||
|
TIMER2_OFF,
|
||||||
|
TIMER2_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer1_t
|
||||||
|
{
|
||||||
|
TIMER1_OFF,
|
||||||
|
TIMER1_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum timer0_t
|
||||||
|
{
|
||||||
|
TIMER0_OFF,
|
||||||
|
TIMER0_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum spi_t
|
||||||
|
{
|
||||||
|
SPI_OFF,
|
||||||
|
SPI_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum usart0_t
|
||||||
|
{
|
||||||
|
USART0_OFF,
|
||||||
|
USART0_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum usart1_t
|
||||||
|
{
|
||||||
|
USART1_OFF,
|
||||||
|
USART1_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum usart2_t
|
||||||
|
{
|
||||||
|
USART2_OFF,
|
||||||
|
USART2_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum usart3_t
|
||||||
|
{
|
||||||
|
USART3_OFF,
|
||||||
|
USART3_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum twi_t
|
||||||
|
{
|
||||||
|
TWI_OFF,
|
||||||
|
TWI_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum usb_t
|
||||||
|
{
|
||||||
|
USB_OFF,
|
||||||
|
USB_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
enum idle_t
|
||||||
|
{
|
||||||
|
IDLE_0,
|
||||||
|
IDLE_1,
|
||||||
|
IDLE_2
|
||||||
|
};
|
||||||
|
|
||||||
|
class LowPowerClass
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
#if defined (__AVR__)
|
||||||
|
|
||||||
|
#if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega168P__) || defined (__AVR_ATmega88__)
|
||||||
|
void idle(period_t period, adc_t adc, timer2_t timer2,
|
||||||
|
timer1_t timer1, timer0_t timer0, spi_t spi,
|
||||||
|
usart0_t usart0, twi_t twi);
|
||||||
|
#elif defined __AVR_ATmega644P__ || defined (__AVR_ATmega1284P__)
|
||||||
|
void idle(period_t period, adc_t adc, timer2_t timer2,
|
||||||
|
timer1_t timer1, timer0_t timer0, spi_t spi,
|
||||||
|
usart1_t usart1, usart0_t usart0, twi_t twi);
|
||||||
|
#elif defined __AVR_ATmega2560__
|
||||||
|
void idle(period_t period, adc_t adc, timer5_t timer5,
|
||||||
|
timer4_t timer4, timer3_t timer3, timer2_t timer2,
|
||||||
|
timer1_t timer1, timer0_t timer0, spi_t spi,
|
||||||
|
usart3_t usart3, usart2_t usart2, usart1_t usart1,
|
||||||
|
usart0_t usart0, twi_t twi);
|
||||||
|
#elif defined __AVR_ATmega256RFR2__
|
||||||
|
void idle(period_t period, adc_t adc, timer5_t timer5,
|
||||||
|
timer4_t timer4, timer3_t timer3, timer2_t timer2,
|
||||||
|
timer1_t timer1, timer0_t timer0, spi_t spi,
|
||||||
|
usart1_t usart1,
|
||||||
|
usart0_t usart0, twi_t twi);
|
||||||
|
#elif defined __AVR_ATmega32U4__
|
||||||
|
void idle(period_t period, adc_t adc, timer4_t timer4,
|
||||||
|
timer3_t timer3, timer1_t timer1, timer0_t timer0,
|
||||||
|
spi_t spi, usart1_t usart1, twi_t twi, usb_t usb);
|
||||||
|
#else
|
||||||
|
#error "Please ensure chosen MCU is either 88, 168, 168P, 328P, 32U4, 2560 or 256RFR2."
|
||||||
|
#endif
|
||||||
|
void adcNoiseReduction(period_t period, adc_t adc, timer2_t timer2) __attribute__((optimize("-O1")));
|
||||||
|
void powerDown(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1")));
|
||||||
|
void powerSave(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1")));
|
||||||
|
void powerStandby(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1")));
|
||||||
|
void powerExtStandby(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1")));
|
||||||
|
|
||||||
|
#elif defined (__arm__)
|
||||||
|
|
||||||
|
#if defined (__SAMD21G18A__)
|
||||||
|
void idle(idle_t idleMode);
|
||||||
|
void standby();
|
||||||
|
#else
|
||||||
|
#error "Please ensure chosen MCU is ATSAMD21G18A."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#error "Processor architecture is not supported."
|
||||||
|
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
extern LowPowerClass LowPower;
|
||||||
|
#endif
|
22
remote/Makefile
Normal file
22
remote/Makefile
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Tyler Perkins
|
||||||
|
# 27-3-22
|
||||||
|
# Arduino remote controller
|
||||||
|
#
|
||||||
|
|
||||||
|
# Target board and cpu
|
||||||
|
# Default Arduino pro mini@5V
|
||||||
|
FQBN = arduino:avr:pro
|
||||||
|
CPU = :cpu=16MHzatmega328
|
||||||
|
|
||||||
|
# Serial port for Programmer
|
||||||
|
PORT = /dev/ttyUSB0
|
||||||
|
|
||||||
|
# path to the ino file
|
||||||
|
TARGET = ./remote.ino
|
||||||
|
|
||||||
|
compile: $(TARGET)
|
||||||
|
arduino-cli compile -b $(FQBN)$(CPU) $(TARGET)
|
||||||
|
|
||||||
|
upload: compile
|
||||||
|
sudo arduino-cli upload -b $(FQBN) -p /dev/ttyUSB0 $(TARGET)
|
50
remote/remote.ino
Normal file
50
remote/remote.ino
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Tyler Perkins
|
||||||
|
// 2-1-22
|
||||||
|
// Remote Entry point
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <IRremote.h>
|
||||||
|
#include "LowPower.h"
|
||||||
|
|
||||||
|
// IR library
|
||||||
|
IRsend irsend;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
//set input pins
|
||||||
|
//interrupt
|
||||||
|
pinMode(2, INPUT);
|
||||||
|
|
||||||
|
//buttons
|
||||||
|
pinMode(9, INPUT);
|
||||||
|
pinMode(10, INPUT);
|
||||||
|
pinMode(11, INPUT);
|
||||||
|
|
||||||
|
//pinMode(13, OUTPUT);
|
||||||
|
|
||||||
|
//attachInterrupt(digitalPinToInterrupt(2),readInput, RISING);
|
||||||
|
|
||||||
|
irsend.begin(3, ENABLE_LED_FEEDBACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
attachInterrupt(digitalPinToInterrupt(2),readInput, RISING);
|
||||||
|
|
||||||
|
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
|
||||||
|
|
||||||
|
detachInterrupt(digitalPinToInterrupt(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
void readInput(){
|
||||||
|
if(digitalRead(10) == HIGH){
|
||||||
|
//vol +
|
||||||
|
irsend.sendNEC(0x7080, 0xC7, 1);
|
||||||
|
} else if(digitalRead(11) == HIGH){
|
||||||
|
//vol -
|
||||||
|
irsend.sendNEC(0x7080, 0xC8, 1);
|
||||||
|
} else if(digitalRead(9) == HIGH){
|
||||||
|
// 2.1/5.1
|
||||||
|
irsend.sendNEC(0x7080, 0xEC, 1);
|
||||||
|
}
|
||||||
|
delay(25);
|
||||||
|
}
|
4354
schematic/rev1.0/Schematic_Remote_2022-03-29.pdf
Normal file
4354
schematic/rev1.0/Schematic_Remote_2022-03-29.pdf
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user