измеритель UV стерео сигнала
- Войдите на сайт для отправки комментариев
Ср, 04/11/2020 - 22:08

Добрый день
Одна линия - правый канал, другая - левый канал стереосигнала, =так нужно .
Но есть проблема, обе линии одновременно реагировать на подачу сигнала на один из входов.
Как их разделить?
// LCD Bar Graph v2, 16 blocks x 5 vertical lines #include <LiquidCrystal.h> // internal LCD library LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5); // LCD pins: RS, ENABLE, D4, D5, D6, D7 unsigned int val = 0; unsigned int val_old = 1; ////////// unsigned int val2 = 0; unsigned int val2_old = 1; //upper line byte graphUpline [5][8] = { // new LCD chars: |, ||, |||, ||||, ||||| {0x10, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00,}, // 1 vertical line {0x18, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00,}, // 2 vertical lines {0x1C, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00,}, // 3 vertical lines {0x1E, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00,}, // 4 vertical lines {0x1F, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00,} // 5 vertical lines }; //lower line byte graphLow [5][8] = { // new LCD chars: |, ||, |||, ||||, ||||| {0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x10}, // 1 vertical line {0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x18}, // 2 vertical lines {0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x1C}, // 3 vertical lines {0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x1C}, // 4 vertical lines {0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x1F} // 5 vertical lines }; //--------------------------------------------------------------------------------------------------------- void setup() { pinMode(PA6, INPUT); pinMode(PB0, INPUT);// pin A0 as input lcd.begin(16, 2); // LCD initialization for (byte k = 0; k < 5; k++) lcd.createChar(k, graphUpline[k]); //upper line for (byte d = 0; d < 5; d++) lcd.createChar(d, graphLow[d]); //lower line } //--------------------------------------------------------------------------------------------------------- void loop() { val = analogRead(PA6); if (val_old != val) { lcd.setCursor(0, 0); lcd.print(val); lcd.print(" "); draw_bar(val / 3.5 + 1); val_old = val; } val2 = analogRead(PB0); if (val2_old != val2) { lcd.setCursor(0, 1); //lcd.print(val2); lcd.print(" "); draw_bar2(val2 / 3.5 + 1); val2_old = val2; } } //--------------------------------------------------------------------------------------------------------- // bar val void draw_bar(unsigned int m_val) { byte a; // block byte b; // lines in block byte m; // local counter lcd.setCursor(0, 0); a = m_val / 64; // 1024 / 16, black blocks for (m = 0; m < a; m++) lcd.write(4); b = (10 * (m_val - a * 64)) / 128; // (64 / 5) * 10, last box: vertical lines if (b > 0) lcd.write(b - 1); else lcd.write(' '); // blank block for (m = a + 1; m < 16; m++) // blank left spaces lcd.write(' '); } // bar val2 void draw_bar2(unsigned int m_val2) { byte a; // block byte b; // lines in block byte m; // local counter lcd.setCursor(0, 1); a = m_val2 / 64; // 1024 / 16, black blocks for (m = 0; m < a; m++) lcd.write(4); b = (10 * (m_val2 - a * 64)) / 128; // (64 / 5) * 10, last box: vertical lines if (b > 0) lcd.write(b - 1); else lcd.write(' '); // blank block for (m = a + 1; m < 16; m++) // blank left spaces lcd.write(' '); } //////////////////
Если две одинаковые, но независимые процедуры на выходе дают эквивалентный результат, это означает, что на вход к ним попадают одни и те же данные.
подаю на один вход сигнал - PA6, второй на землю - PB0
проблема где то здесь
подаю на один вход сигнал - PA6, второй на землю - PB0
шо? 8)