| Ваш IP: 54.198.96.198 | Online(25) - гости: 12, боты: 12 | Загрузка сервера: 5.92 ::::::::::::

Индикатор уровня сигнала (Arduino)

На рисунке показана схема линейного индикатора уровня сигнала, уст-во основано на Arduino Nano, индикатор LCD 1602. Индикатор способен отображать 30 уровней входного сигнала, входной сигнал не должен превышать 1.1 В, так как вход АЦП имеет внутреннее опорное напряжение 1.1 В. При большом уровне входного сигнала используйте делитель напряжения.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7
byte a1[8]={ 
  0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011};
byte a2[8]={ 
  0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000};
byte a3[8]={
  0b00011,0b00011,0b00011,0b00011,0b00011,0b00011,0b00011,0b00011};
byte znak_r[8]={ // R
  0b00000,0b00000,0b11111,0b00101,0b00101,0b11010,0b00000,0b00000};
byte znak_l[8]={ // L
  0b00000,0b00000,0b11111,0b10000,0b10000,0b10000,0b00000,0b00000};
int u_r,u_l,i=1,x,u_maxr,u_maxl,z,z1,u_r0[15],u_l0[15];
unsigned long time1; 
void setup(){  
  analogReference(INTERNAL);
  lcd.begin(16, 2);// LCD 16X2
  lcd.createChar(0,a1); 
  lcd.createChar(1,a2); 
  lcd.createChar(2,znak_r); 
  lcd.createChar(3,znak_l);
  lcd.createChar(4,a3); 
  pinMode(A0,INPUT);
  pinMode(A2,INPUT);
}

void loop(){  
  lcd.setCursor(0,0);// R 
  lcd.write((uint8_t)2);
  lcd.setCursor(0,1);
  lcd.write((uint8_t)3);// L

  u_r = analogRead(A0); // измерение R
  u_l = analogRead(A2); // измерение L

  for(int z=1,z1=0,z2=30;z<=15;z++,z1=z1+30,z2=z2+30){ // l+r
    if(u_l>z1){
      lcd.setCursor(z,1);
      lcd.write((uint8_t)1);
    } 
    if(u_r>z1){
      lcd.setCursor(z,0);
      lcd.write((uint8_t)1);
    } 
    if(u_l>z2){
      lcd.setCursor(z,1);
      lcd.write((uint8_t)0);
    } 
    if(u_r>z2){
      lcd.setCursor(z,0);
      lcd.write((uint8_t)0);
    } 
  }

  i++;
  if(i<=15){
    u_l0[i]=u_l;
    u_r0[i]=u_r;
  }
  else{
    i=1;
  }
  if(i==15){
    u_maxr=0;
    u_maxl=0;
    for(x=1;x<=15;x++){
      u_maxl=max(u_maxl,u_l0[x]);
      u_maxr=max(u_maxr,u_r0[x]);
    }
  }

  if(u_maxl<=u_l){
    u_maxl=u_l;
  } 
  if(u_maxr<=u_r){
    u_maxr=u_r;
  }

  for(z=1,z1=0;z<=15;z++,z1=z1+30){
    if(u_maxl > z1 && u_maxl <= z1+15){
      lcd.setCursor(z,1);
      lcd.write((uint8_t)1);
    }
    if(u_maxl > z1+15 && u_maxl <= z1+30){
      lcd.setCursor(z,1);
      lcd.write((uint8_t)4);
    }

    if(u_maxr > z1 && u_maxr <= z1+15){
      lcd.setCursor(z,0);
      lcd.write((uint8_t)1);
    }
    if(u_maxr > z1+15 && u_maxr <= z1+30){
      lcd.setCursor(z,0);
      lcd.write((uint8_t)4);
    }
  } 
  delay(75);
  lcd.clear();
}


Добавить комментарий

Случайные статьи

  • Однотактный обратноходовый ИПП на БСИТ

    Однотактный обратноходовый ИПП на БСИТ

    Биполярные транзисторы со статической индукцией (БСИТ) по характеристикам близки к биполярным транзисторам, но имеют более высокое быстродействие и меньшее напряжение насыщения. Большинство специализированных микросхем не пригодны для непосредственного управления БСИТ, так как его необходимо закрывать вытекающим (обратным) током. Поэтому представлена схема ИПП на дискретных элементах. Основные технические характеристики: Напряжение питающей …Подробнее...
  • Плавный регулятор освещения

    Плавный регулятор освещения

    Данная схема подходит для напряжения 220В АС, так и для напряжения 110В АС. К схеме можно подключать только лампы накаливания. Обратите особое внимание на безопасность при использовании данного уст-ва, ручка регулятора освещения должна быть пластиковой. Не прикасайтесь к элементом регулятора находящиеся под сетевым напряжением. Регулировка яркости лампы не позволяет полностью …Подробнее...
  • Индуктивность квадратного соленоида

    Индуктивность квадратного соленоида

    Индуктивность квадратного соленоида можно определить по формуле: где w — число витков; c — сторона квадрата являющегося основанием соленоида (м); μ0 – магнитная постоянная, μ0 = 4π*10‾7 Гн/м; Ф — величина значения которой зависима от соотношения: где a — длина соленоида (м);  c — сторона квадрата являющегося основанием соленоида (м); Величина …Подробнее...
  • Преобразователь напряжения на NCP1450A (1,9…5В/1А)

    Преобразователь напряжения на NCP1450A (1,9…5В/1А)

    NCP1450A — повышающий DC−DC импульсный преобразователь (180кГц), используется для питания портативной радиоэлектронной аппаратуры, зарядки аккумуляторов. ИМС NCP1450A используется совместно с выходным биполярным или полевым транзистором. Диапазон входных напряжений от 0.6 до 5.5В. Преобразователь обладает высоким КПД до 88% и большой точностью выходного напряжения (±2,5%). Преобразователь имеет пять стандартных выходных напряжений: 1.9В, 2.7В, 3В, …Подробнее...
  • Пятиполосный графический эквалайзер на LA3600

    Пятиполосный графический эквалайзер на LA3600

    Параметры: Напряжение питания 8-20В Входное напряжение 5…15В Ток потребления 3…8мА К усиления 8…12 дБ при частоте 100…10000Гц К подавления -12…-10дБ при частоте 100…10000Гц Напряжение шумов на выходе 2…20мВ при частоте 10-30кГц Р расс макс 300мВт Рабочая температура -40…+75°С Литература — Современные интегральные усилители  С.Р. Баширов, А.С. БашировПодробнее...