mirror of
https://github.com/sascha-hemi/Logitech-Z906.git
synced 2026-03-21 04:05:33 +01:00
Add files via upload
This commit is contained in:
45
examples/basic/basic.ino
Normal file
45
examples/basic/basic.ino
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
Zarpli - Tecnología Interactiva
|
||||||
|
12112021 Alejandro Zárate
|
||||||
|
https://github.com/zarpli/BrightSign/
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
====================
|
||||||
|
|
||||||
|
Simple example of the BrightSign library that play a media file
|
||||||
|
and wait for it to finish to run again.
|
||||||
|
|
||||||
|
The BSuControl Script must be installed in the BrightSign unit
|
||||||
|
memory unit and must be connected to the Serial1 port.
|
||||||
|
|
||||||
|
https://github.com/zarpli/BSuControl/
|
||||||
|
|
||||||
|
Media Files for Testing
|
||||||
|
https://github.com/zarpli/Media/
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <BrightSign.h>
|
||||||
|
|
||||||
|
// Instantiate a BrightSign object and Attach to Serial1
|
||||||
|
BrightSign BS(Serial1);
|
||||||
|
|
||||||
|
void setup(){
|
||||||
|
|
||||||
|
// Enable debug msg over Serial
|
||||||
|
BS.debug();
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
while(!Serial);
|
||||||
|
|
||||||
|
Serial.println("Waiting BrightSign Power-Up");
|
||||||
|
while(!BS.online())BS.update();
|
||||||
|
|
||||||
|
//Set Volume to 20%
|
||||||
|
BS.volume(20);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
// Update the BrightSign instance
|
||||||
|
BS.update();
|
||||||
|
if(BS.media_ended()) BS.play("AUDIO.M4A");
|
||||||
|
}
|
||||||
75
keywords.txt
Normal file
75
keywords.txt
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
#######################################
|
||||||
|
# Syntax Coloring Map For Z906
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Datatypes (KEYWORD1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
Z906 KEYWORD1
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Methods and Functions (KEYWORD2)
|
||||||
|
#######################################
|
||||||
|
command KEYWORD2
|
||||||
|
request KEYWORD2
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Constants (LITERAL1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
PWM_ON LITERAL1
|
||||||
|
SET_INPUT_1 LITERAL1
|
||||||
|
SET_INPUT_2 LITERAL1
|
||||||
|
SET_INPUT_3 LITERAL1
|
||||||
|
SET_INPUT_4 LITERAL1
|
||||||
|
SET_INPUT_5 LITERAL1
|
||||||
|
SET_INPUT_AUX LITERAL1
|
||||||
|
|
||||||
|
VOL_MAIN_UP LITERAL1
|
||||||
|
VOL_MAIN_DOWN LITERAL1
|
||||||
|
VOL_SUB_UP LITERAL1
|
||||||
|
VOL_SUB_DOWN LITERAL1
|
||||||
|
VOL_CENTER_UP LITERAL1
|
||||||
|
VOL_CENTER_DOWN LITERAL1
|
||||||
|
VOL_REAR_UP LITERAL1
|
||||||
|
VOL_DOWN_UP LITERAL1
|
||||||
|
|
||||||
|
PWM_OFF LITERAL1
|
||||||
|
PWM_ON LITERAL1
|
||||||
|
|
||||||
|
SET_EFFECT_3D LITERAL1
|
||||||
|
SET_EFFECT_41 LITERAL1
|
||||||
|
SET_EFFECT_21 LITERAL1
|
||||||
|
SET_EFFECT_NO LITERAL1
|
||||||
|
|
||||||
|
BLOCK_INPUTS LITERAL1
|
||||||
|
GET_TEMP LITERAL1
|
||||||
|
GET_INPUT_GAIN LITERAL1
|
||||||
|
NO_BLOCK_INPUTS LITERAL1
|
||||||
|
|
||||||
|
RESET_IDLE_TIME LITERAL1
|
||||||
|
GET_IDLE_TIME LITERAL1
|
||||||
|
GET_STATUS LITERAL1
|
||||||
|
EEPROM_SAVE LITERAL1
|
||||||
|
|
||||||
|
MUTE_ON LITERAL1
|
||||||
|
MUTE_OFF LITERAL1
|
||||||
|
|
||||||
|
MAIN_GAIN LITERAL1
|
||||||
|
READ_GAIN LITERAL1
|
||||||
|
CENTER_GAIN LITERAL1
|
||||||
|
SUB_GAIN LITERAL1
|
||||||
|
CURRENT_INPUT LITERAL1
|
||||||
|
EFFECT_INPUT_1 LITERAL1
|
||||||
|
EFFECT_INPUT_2 LITERAL1
|
||||||
|
EFFECT_INPUT_3 LITERAL1
|
||||||
|
EFFECT_INPUT_4 LITERAL1
|
||||||
|
EFFECT_INPUT_5 LITERAL1
|
||||||
|
EFFECT_INPUT_AUX LITERAL1
|
||||||
|
SPDIF_STATUS LITERAL1
|
||||||
|
SIGNAL_INPUT_STATUS LITERAL1
|
||||||
|
VERSION LITERAL1
|
||||||
|
STANDBY LITERAL1
|
||||||
|
AUTO_STANDBY LITERAL1
|
||||||
|
CHECKSUM LITERAL1
|
||||||
11
library.properties
Normal file
11
library.properties
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
name=Z906
|
||||||
|
version=1.0.0
|
||||||
|
author=Alejandro Zárate <contacto@zarpli.com>
|
||||||
|
maintainer=Alejandro Zárate <contacto@zarpli.com>
|
||||||
|
sentence=Logitech Serial Port Control
|
||||||
|
paragraph=This library is designed to control Logitech Z906 unit using a serial interface.
|
||||||
|
category=Device Control
|
||||||
|
url=https://zarpli.com
|
||||||
|
architectures=*
|
||||||
|
includes=
|
||||||
|
depends=
|
||||||
76
src/Z906.cpp
Normal file
76
src/Z906.cpp
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#include "Z906.h"
|
||||||
|
|
||||||
|
Z906::Z906(HardwareSerial &serial) {
|
||||||
|
dev_serial = &serial;
|
||||||
|
dev_serial->begin(BAUD_RATE,SERIAL_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Z906::request(unsigned char cmd){
|
||||||
|
|
||||||
|
dev_serial->write(GET_STATUS);
|
||||||
|
|
||||||
|
unsigned long currentMillis = millis();
|
||||||
|
|
||||||
|
while(dev_serial->available() < CMD_TOTAL_LENGTH)
|
||||||
|
if (millis() - currentMillis > SERIAL_TIME_OUT) return 0;
|
||||||
|
|
||||||
|
if (dev_serial->read() != CMD_STX) return 0;
|
||||||
|
if (dev_serial->read() != CMD_STATUS) return 0;
|
||||||
|
if (dev_serial->read() != CMD_LENGTH) return 0;
|
||||||
|
|
||||||
|
unsigned char main_gain = dev_serial->read();
|
||||||
|
unsigned char read_gain = dev_serial->read();
|
||||||
|
unsigned char center_gain = dev_serial->read();
|
||||||
|
unsigned char sub_gain = dev_serial->read();
|
||||||
|
unsigned char current_input = dev_serial->read();
|
||||||
|
dev_serial->read();
|
||||||
|
unsigned char effect_input_4 = dev_serial->read();
|
||||||
|
unsigned char effect_input_5 = dev_serial->read();
|
||||||
|
unsigned char effect_input_2 = dev_serial->read();
|
||||||
|
unsigned char effect_input_AUX = dev_serial->read();
|
||||||
|
unsigned char effect_input_1 = dev_serial->read();
|
||||||
|
unsigned char effect_input_3 = dev_serial->read();
|
||||||
|
unsigned char spdif_status = dev_serial->read();
|
||||||
|
unsigned char signal_input_status = dev_serial->read();
|
||||||
|
unsigned char version_a = dev_serial->read();
|
||||||
|
unsigned char version_b = dev_serial->read();
|
||||||
|
unsigned char version_c = dev_serial->read();
|
||||||
|
unsigned char standby = dev_serial->read();
|
||||||
|
unsigned char auto_standby = dev_serial->read();
|
||||||
|
unsigned char checksum = dev_serial->read();
|
||||||
|
|
||||||
|
switch (cmd)
|
||||||
|
{
|
||||||
|
case MAIN_GAIN: return main_gain;
|
||||||
|
case READ_GAIN: return read_gain;
|
||||||
|
case CENTER_GAIN: return center_gain;
|
||||||
|
case SUB_GAIN: return sub_gain;
|
||||||
|
case CURRENT_INPUT: return current_input + 1;
|
||||||
|
case EFFECT_INPUT_1: return effect_input_1;
|
||||||
|
case EFFECT_INPUT_2: return effect_input_2;
|
||||||
|
case EFFECT_INPUT_3: return effect_input_3;
|
||||||
|
case EFFECT_INPUT_4: return effect_input_4;
|
||||||
|
case EFFECT_INPUT_5: return effect_input_5;
|
||||||
|
case EFFECT_INPUT_AUX: return effect_input_AUX;
|
||||||
|
case SPDIF_STATUS: return spdif_status;
|
||||||
|
case SIGNAL_INPUT_STATUS: return signal_input_status;
|
||||||
|
case VERSION: return version_c + 10 * version_b + 100 * version_a;
|
||||||
|
case STANDBY: return standby;
|
||||||
|
case AUTO_STANDBY: return auto_standby;
|
||||||
|
case CHECKSUM: return checksum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int Z906::command(unsigned char cmd){
|
||||||
|
|
||||||
|
if(cmd == GET_STATUS || cmd == GET_TEMP || cmd == GET_INPUT_GAIN) return 0;
|
||||||
|
|
||||||
|
dev_serial->write(cmd);
|
||||||
|
|
||||||
|
unsigned long currentMillis = millis();
|
||||||
|
|
||||||
|
while(dev_serial->available() == 0)
|
||||||
|
if (millis() - currentMillis > SERIAL_TIME_OUT) return 0;
|
||||||
|
|
||||||
|
return dev_serial->read();
|
||||||
|
}
|
||||||
98
src/Z906.h
Normal file
98
src/Z906.h
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
#define BAUD_RATE 57600
|
||||||
|
#define SERIAL_CONFIG SERIAL_8O1
|
||||||
|
#define SERIAL_TIME_OUT 1000
|
||||||
|
|
||||||
|
#define SET_INPUT_1 0x02
|
||||||
|
#define SET_INPUT_2 0x05
|
||||||
|
#define SET_INPUT_3 0x03
|
||||||
|
#define SET_INPUT_4 0x04
|
||||||
|
#define SET_INPUT_5 0x06
|
||||||
|
#define SET_INPUT_AUX 0x07
|
||||||
|
|
||||||
|
#define GAIN_MAIN_UP 0x08
|
||||||
|
#define GAIN_MAIN_DOWN 0x09
|
||||||
|
#define GAIN_SUB_UP 0x0A
|
||||||
|
#define GAIN_SUB_DOWN 0x0B
|
||||||
|
#define GAIN_CENTER_UP 0x0C
|
||||||
|
#define GAIN_CENTER_DOWN 0x0D
|
||||||
|
#define GAIN_REAR_UP 0x0E
|
||||||
|
#define GAIN_DOWN_UP 0x0F
|
||||||
|
|
||||||
|
#define PWM_OFF 0x10
|
||||||
|
#define PWM_ON 0x11
|
||||||
|
|
||||||
|
#define SET_EFFECT_3D 0x14
|
||||||
|
#define SET_EFFECT_41 0x15
|
||||||
|
#define SET_EFFECT_21 0x16
|
||||||
|
#define SET_EFFECT_NO 0x35
|
||||||
|
|
||||||
|
#define BLOCK_INPUTS 0x22
|
||||||
|
#define GET_TEMP 0x25
|
||||||
|
#define GET_INPUT_GAIN 0x2F
|
||||||
|
#define NO_BLOCK_INPUTS 0x33
|
||||||
|
|
||||||
|
#define RESET_IDLE_TIME 0x30
|
||||||
|
#define GET_IDLE_TIME 0x31
|
||||||
|
#define GET_STATUS 0x34
|
||||||
|
#define EEPROM_SAVE 0x36
|
||||||
|
|
||||||
|
#define MUTE_ON 0x38
|
||||||
|
#define MUTE_OFF 0x39
|
||||||
|
|
||||||
|
#define SPK_NONE 0x00 // speaker mask
|
||||||
|
#define SPK_ALL 0xFF
|
||||||
|
#define SPK_FR 0x01
|
||||||
|
#define SPK_FL 0x10
|
||||||
|
#define SPK_RR 0x02
|
||||||
|
#define SPK_RL 0x08
|
||||||
|
#define SPK_CENTER 0x04
|
||||||
|
#define SPK_SUB 0x20
|
||||||
|
|
||||||
|
#define EFFECT_3D 0x00
|
||||||
|
#define EFFECT_21 0x01
|
||||||
|
#define EFFECT_41 0x02
|
||||||
|
#define EFFECT_NO 0x03
|
||||||
|
|
||||||
|
#define ON_LINE 0x3F
|
||||||
|
|
||||||
|
#define CMD_STX 0xAA
|
||||||
|
#define CMD_NOISE 0x07
|
||||||
|
#define CMD_STATUS 0x0A
|
||||||
|
|
||||||
|
#define CMD_LENGTH 0x13
|
||||||
|
#define CMD_TOTAL_LENGTH 0x17
|
||||||
|
|
||||||
|
#define MAIN_GAIN 0x01
|
||||||
|
#define READ_GAIN 0x02
|
||||||
|
#define CENTER_GAIN 0x03
|
||||||
|
#define SUB_GAIN 0x04
|
||||||
|
#define CURRENT_INPUT 0x05
|
||||||
|
#define EFFECT_INPUT_1 0x06
|
||||||
|
#define EFFECT_INPUT_2 0x07
|
||||||
|
#define EFFECT_INPUT_3 0x08
|
||||||
|
#define EFFECT_INPUT_4 0x09
|
||||||
|
#define EFFECT_INPUT_5 0x0A
|
||||||
|
#define EFFECT_INPUT_AUX 0xA1
|
||||||
|
#define SPDIF_STATUS 0xA2
|
||||||
|
#define SIGNAL_INPUT_STATUS 0xA3
|
||||||
|
#define VERSION 0xA4
|
||||||
|
#define STANDBY 0xA5
|
||||||
|
#define AUTO_STANDBY 0xA6
|
||||||
|
#define CHECKSUM 0xA7
|
||||||
|
|
||||||
|
class Z906
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Z906(HardwareSerial &serial);
|
||||||
|
|
||||||
|
int command(unsigned char);
|
||||||
|
int request(unsigned char);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
HardwareSerial* dev_serial;
|
||||||
|
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user