mirror of
https://github.com/sascha-hemi/Logitech-Z906.git
synced 2026-03-21 00:03:50 +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