измеритель UV стерео сигнала

gena321
Offline
Зарегистрирован: 19.01.2019
Добрый день
Одна линия - правый канал, другая - левый канал стереосигнала, =так нужно .
Но есть проблема, обе линии одновременно реагировать на подачу сигнала на один из входов.
Как их разделить?
 
// 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(' ');
}
//////////////////

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Если две одинаковые, но независимые процедуры на выходе дают эквивалентный результат, это означает, что на вход к ним попадают одни и те же данные.

gena321
Offline
Зарегистрирован: 19.01.2019

подаю на один вход  сигнал - PA6, второй на землю - PB0

проблема где то здесь

 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

 

Logik
Offline
Зарегистрирован: 05.08.2014

gena321 пишет:

подаю на один вход  сигнал - PA6, второй на землю - PB0

шо? 8)