0
καλησπερα και καλη χρονια να εχουμε.φτιαχνω εναν ενισχυτη 5.1 με controller εναν arduino και ολοκληρωμενα τα pt2323 & pt2322.θελω εαν γινεται στο pin13 του arduino που ειναι μια εξοδος που ενεργοποιει ενα ρελε να υπαρχει μια καθυστεριση π.χ 4 δευτερολεπτων εαν ειναι δυνατον και αν ναι πως???
ανεβαζω τον κωδικα
// 5.1 Surround System
// DaacWaves <https://daacwaves.blogspot.com>
#include <Wire.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <IRremote.h>
#define PT2323_address 0b1001010
#define PT2322_address 0b1000100
#define btn_delay 300
#define sw01 9 // SW
#define sw02 11 // DT
#define sw03 10 // CLK
#define sw04 A0 // Input
#define sw05 A1 // Mute
#define sw06 A2 // Power
#define sw07 13 // RELE
#define sw08 12 // DISPLAY
// IR HEX code
#define ir_power 0x807F827D // IR power ON/OFF
#define ir_mute 0x807F42BD // IR mute
#define ir_in 0x807F629D // IR input select
#define ir_vol_i 0x807F906F // IR vol++
#define ir_vol_d 0x807FA05F // IR vol--
#define ir_sub_i 0x807FD02F // IR sub++
#define ir_sub_d 0x807FE01F // IR sub--
#define ir_fl_i 0x807F40BF // IR fl++
#define ir_fl_d 0x807FC03F // IR fl--
#define ir_fr_i 0x807F00FF // IR fr++
#define ir_fr_d 0x807F807F // IR fr--
#define ir_cn_i 0x807F50AF // IR cn++
#define ir_cn_d 0x807F609F // IR cn--
#define ir_sl_i 0x807F48B7 // IR sl++
#define ir_sl_d 0x807FC837 // IR sl--
#define ir_sr_i 0x807F08F7 // IR sr++
#define ir_sr_d 0x807F8877 // IR sr--
#define ir_bass_i 0x807F8A75 // IR bass++
#define ir_bass_d 0x807F4AB5 // IR bass--
#define ir_mid_i 0x807F6897 // IR mid++
#define ir_mid_d 0x807FE817 // IR mid--
#define ir_treb_i 0x807FAA55 // IR treb++
#define ir_treb_d 0x807F6A95 // IR treb--
#define ir_sp_mode 0x807F0AF5 // IR speaker mode change
#define ir_sou_mode 0x807FA857 // IR sound mode change
IRrecv irrecv(;
decode_results results;
byte custom_num[8][8] = {
{ B00111,B01111,B11111,B11111,B11111,B11111,B11111,B 11111 },
{ B11111,B11111,B11111,B00000,B00000,B00000,B00000,B 00000 },
{ B11100,B11110,B11111,B11111,B11111,B11111,B11111,B 11111 },
{ B11111,B11111,B11111,B11111,B11111,B11111,B01111,B 00111 },
{ B00000,B00000,B00000,B00000,B00000,B11111,B11111,B 11111 },
{ B11111,B11111,B11111,B11111,B11111,B11111,B11110,B 11100 },
{ B11111,B11111,B11111,B00000,B00000,B00000,B11111,B 11111 },
{ B11111,B11111,B11111,B11111,B11111,B11111,B11111,B 11111 }};
const int digit_width = 3;
// 0 1 2 3 4 5 6 7 8 9
const char custom_num_top[10][digit_width]={ 0,1,2, 1,2,32, 6,6,2, 6,6,2, 3,4,7, 7,6,6, 0,6,6, 1,1,2, 0,6,2, 0,6,2};
const char custom_num_bot[10][digit_width]={ 3,4,5, 4,7,4, 7,4,4, 4,4,5, 32,32,7, 4,4,5, 3,4,5, 32,32,7, 3,4,5, 4,4,5};
byte arrow_left[8] = {B00100,B01100,B11100,B01100,B00100,B00000,B00000, B00000};
byte arrow_right[8] = {B00100,B00110,B00111,B00110,B00100,B00000,B00000, B00000};
byte arrow_bottom[8] = {B00100,B00100,B00100,B11111,B01110,B00100,B00000, B00000};
LiquidCrystal lcd(7, 6, 5, 22, 3, 2); // RS,E,D4,D5,D6,D7
unsigned long time;
int in, vol, bass, mid, treb, sub, fl, cn, fr, sl, sr, mute, ch_mute, return_d, surr, mix, vol_10, vol_1, a, b, mute_sel, effect_sel, tone_sel, sound_mode, speaker_mode, sub_menu, menu_sel, power, vol_on;
int menu, sub_menu_sel, sub_menu_item, sub_menu_item_sel;
int sub_v, sub_10, sub_1, ir_on, ir_menu;
void setup() {
Wire.begin();
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(sw01, INPUT); // SW
pinMode(sw02, INPUT); // DT
pinMode(sw03, INPUT); // CLK
pinMode(sw04, INPUT); // Input
pinMode(sw05, INPUT); // Mute
pinMode(sw06, INPUT); // Power
pinMode(sw07, OUTPUT); // RELE
pinMode(sw08, OUTPUT); // DISPLAY
lcd.begin(16, 2);
power = 0;
eeprom_read();
power_up();
}
void loop() {
lcd_update();
eeprom_update();
ir_control();
return_delay();
if(menu == 0 || menu == 2) {
custom_num_shape();
} else {
custom_shape();
}
//power -------------------------------------------------//
if (analogRead(sw06) > 900) {
power++;
if (power > 1) {
power = 0;
}
power_up();
delay(btn_delay);
}
if(power == 1) {
//select input -------------------------------------------------//
if (analogRead(sw04) > 900) {
in++;
set_in();
delay(btn_delay);
}
//select menu -------------------------------------------------//
if (digitalRead(sw01) == LOW && menu_sel == 0 && vol_on == 0) {
menu++;
if (menu > 4) {
menu = 0;
}
btn_cl();
lcd.clear();
}
//mute -------------------------------------------------//
if (analogRead(sw05) > 900) {
mute++;
set_mute();
delay(btn_delay);
if (menu != 0) {
lcd.clear();
menu = 0;
}
if(mute == 1) {
vol_on = 1;
} else {
vol_on = 0;
}
}
}
//volume -------------------------------------------------//
if (menu == 0) {
if (digitalRead(sw02) == LOW && vol_on == 0) {
vol++;
set_vol();
delay(btn_delay);
}
if (digitalRead(sw03) == LOW && vol_on == 0) {
vol--;
set_vol();
delay(btn_delay);
}
menu_sel = 0;
sub_menu = 0;
sub_menu_item = 0;
sub_menu_item_sel = 0;
}
//menu 1 -------------------------------------------------//
if (menu == 1) {
set_sub_menu();
switch(sub_menu){
//bass -------------------------------------------------//
case 1:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
bass++;
set_bass();
sound_mode = 0;
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
bass--;
set_bass();
sound_mode = 0;
btn_cl();
}
break;
//mid -------------------------------------------------//
case 2:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
mid++;
set_mid();
sound_mode = 0;
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
mid--;
set_mid();
sound_mode = 0;
btn_cl();
}
break;
//treb -------------------------------------------------//
case 3:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
treb++;
set_treb();
sound_mode = 0;
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
treb--;
set_treb();
sound_mode = 0;
btn_cl();
}
break;
case 4:
sub_menu = 0;
break;
}
}
//menu 2 -------------------------------------------------//
if (menu == 2) {
if (digitalRead(sw02) == LOW) {
sub++;
set_sub();
btn_cl();
}
if (digitalRead(sw03) == LOW) {
sub--;
set_sub();
btn_cl();
}
}
//menu 3 -------------------------------------------------//
if (menu == 3) {
set_sub_menu();
switch(sub_menu){
//FL -------------------------------------------------//
case 1:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
fl++;
set_fl();
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
fl--;
set_fl();
btn_cl();
}
break;
//FR -------------------------------------------------//
case 2:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
fr++;
set_fr();
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
fr--;
set_fr();
btn_cl();
}
break;
//CN -------------------------------------------------//
case 3:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
cn++;
set_cn();
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
cn--;
set_cn();
btn_cl();
}
break;
//SL -------------------------------------------------//
case 4:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
sl++;
set_sl();
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
sl--;
set_sl();
btn_cl();
}
break;
//SR -------------------------------------------------//
case 5:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
sr++;
set_sr();
btn_cl();
}
if (digitalRead(sw03) == LOW && sub_menu_item == 1) {
sr--;
set_sr();
btn_cl();
}
break;
case 6:
sub_menu = 0;
break;
}
}
//menu 4 -------------------------------------------------//
if (menu == 4) {
set_sub_menu();
switch(sub_menu){
//surrond on off -------------------------------------------------//
case 1:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
surr++;
set_surr();
btn_cl();
}
break;
//speaker mode -------------------------------------------------//
case 2:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
speaker_mode++;
set_speaker_mode();
btn_cl();
}
break;
//sound mode -------------------------------------------------//
case 3:
if (digitalRead(sw02) == LOW && sub_menu_item == 1) {
sound_mode++;
set_sound_mode();
btn_cl();
}
break;
case 4:
sub_menu = 0;
break;
}
}
}