Add files via upload

This commit is contained in:
zarpli
2022-05-11 21:54:48 -05:00
committed by GitHub
parent 68924861ae
commit e07b484f0d
5 changed files with 305 additions and 0 deletions

45
examples/basic/basic.ino Normal file
View 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
View 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
View 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
View 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
View 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;
};