| Ваш IP: 18.210.24.208 | Online(27) - гости: 11, боты: 16 | Загрузка сервера: 0.34 ::::::::::::


4-х разрядный семисегментный дисплей на базе драйвера TM1637 (Arduino)

4-х разрядный семисегментный дисплей на базе драйвера TM1637 с десятичными точками в разрядах, очень прост в использовании, библиотека Arduino TM1637.zip позволяет выводить на дисплей цифры и десятичные точки, а так же ряд символов. Так же имеется возможность менять яркость свечения сегментов.

Подключение дисплея к плате Arduino очень простое:

  • VCC to Arduino 5v
  • GND to Arduino GND
  • CLK к произвольному цифровому контакту Arduino, описанному в скетче
  • DIO к произвольному цифровому выходу Arduino, описанному в скетче

Вывод чисел

#include <TM1637.h>
 TM1637 print(3,2); //CLK,DIO
 
float i1 = 0.123,i2 = -1.25;
 
void setup(){
  print.set(7);//0...7 - яркость
  print.init(D4056A);//D4056A is the type of the module
}
 
void loop(){
  print.display(i1);
  delay(2000);
  print.display(i2);
  delay(2000);
}

Вывод чисел и символов

В этом примере показан вывод символов (список доступных указаны в скетче под номерами) и символов с цифрами.

#include <TM1637.h>
 TM1637 print(3,2); //CLK,DIO
 
int8_t arr0[] = {5, 14, 17, 10};// SEGA
int8_t arr1[] = { 2, 3, 4}; // int 324
 
void setup(){
  print.set(5);//0...7 - яркость
}
 
void loop(){
  print.point(false);
  print.display(arr0);
  delay(2000);
 
/* A 0x77 = 10, b 0x7c = 11, C 0x39 = 12, d 0x5e = 13, E 0x79 = 14, F 0x71 = 15,"-" 0x40 = 16, G 0x3d = 17, H 0x76 = 18, h 0x74 = 19, 
   i 0x04 = 20, J 0x1e = 21 ,L 0x38 = 22, l 0x18 = 23, M 0x37 = 24, n 0x54 = 25, P 0x73 = 26, r 0x50 = 27, t 0x78 = 28,
   U 0x3e = 29, u 0x1c = 30, Y 0x6E = 31, o верхнее 0x5c = 32, o нижнее 0x63 = 33 */
 
  print.point(false);
  print.display(0, 16);// минус
 
  print.point(false);
  print.display(1, arr1[0]);
 
  print.point(true);
  print.display(2, arr1[1]);
 
  print.point(false);
  print.display(3, arr1[2]);
  delay(2000);
}

Далее показан пример практического применения дисплея, на дисплей выводятся показания времени с модуля DS1302. Десятичная мигающая точка используется как индикатор такта секунд.

#include <iarduino_RTC.h>
#include <TM1637.h>
  iarduino_RTC time(RTC_DS1302, 6, 7, 8); // RST, CLK, DAT
  TM1637 print(3,2); //CLK,DIO
 
  unsigned long times;
 
void setup(){
  time.begin();
  print.set(5);//0...7 - яркость
   // time.settime(0,30,18,24,10,19,4); // Записываем время в модуль: сек, мин, час, дата, месяц, год (2019 = 19), день недели (пон = 1). 
}
 
void loop(){
  time.gettime();
 
  print.point(false);
  print.display(0,time.Hours / 10);
 
  if(millis()-times<500){print.point(true);}
  if(millis()-times>1000){times=millis();}
 
  print.display(1, time.Hours % 10);
 
  print.point(false);
  print.display(2, time.minutes / 10);
 
  print.point(false);
  print.display(3, time.minutes % 10);
 
}

В следующем примере на дисплей выводим показания цифрового датчика температуры DS18B20.

#include <OneWire.h>          
#include <DallasTemperature.h>
#include <TM1637.h>
 
  TM1637 print(3,2); //CLK,DIO
  OneWire oneWire(A0);// вход датчика 18b20
  DallasTemperature temp(&oneWire);
 
 float t1;
 
void setup(){
  print.init(D4056A);//D4056A is the type of the module
  temp.begin(); temp.setResolution(12);//12 бит  
  print.set(5);//0...7 - яркость
}
 
void loop(){
  temp.requestTemperatures();// опрос 18b20
  t1 = temp.getTempCByIndex(0); // снятие показаний 18b20
 
  print.display(t1);
}

В следующем примере скетча реализован терморегулятор на микросхеме MAX6675 (модуль), которая предназначена для работы с термопарами типа К(ХА) в диапазоне температур от 0 до 1000ºС, регулировка температуры осуществляется в этом же диапазоне, дополнительно добавлена возможность регулировки гистерезиса. Значения регулировки температуры и гистерезиса хранятся в энергонезависимой памяти.

Регулировка осуществляет при помощи энкодера, при нажатии на кнопку энкодера происходит переход к параметрам регулятора (регулировка температуры, гистерезис). К выходу D13 платы Arduino подключается модуль реле для управления нагревателем.

#include <max6675.h> // https://rcl-radio.ru/wp-content/uploads/2018/07/max6675.zip
#include <TM1637.h> // https://rcl-radio.ru/wp-content/uploads/2019/10/TM1637-1.zip
#include <Encoder.h> // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <EEPROM.h>  
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
 TM1637 print(7,6); //CLK,DIO
 MAX6675 thermocouple(4,3,2);// CLK, CS, SO
 Encoder myEnc(9, 8);// DT, CLK
 
int t,t_sum,i,t_iz,t_reg,menu,zn,w,x,gis; 
byte a[3];
unsigned long time,oldPosition  = -999,newPosition;    
 
void setup() {
  print.set(1);//0...7 - яркость
  pinMode(10,INPUT);// КНОПКА SW энкодера
  pinMode(13,OUTPUT);// выход для управления нагрузкой
  MsTimer2::set(3, to_Timer);MsTimer2::start(); 
  t_reg = EEPROM.read(0)*256+EEPROM.read(1);gis = EEPROM.read(2);
}
 
void loop() {
  ////////////// управлние //////////////////////////////////////////////////////////////
  if(digitalRead(10)==LOW){menu++;if(menu>0){delay(200);}time=millis();w=1;if(menu>2){menu=0;};}
  if (newPosition != oldPosition&&menu==1){oldPosition = newPosition;
     t_reg=t_reg+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(t_reg>999||t_reg<0){t_reg=0;}}
  if (newPosition != oldPosition&&menu==2){oldPosition = newPosition;
     gis=gis+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(gis>10||gis<0){gis=0;}}     
  ////////////// измерение /////////////////////////////////////////////////////////////
  if(menu==0){myEnc.write(0);t=thermocouple.readCelsius();delay(200);
  t_sum=t_sum+t;
  if(i==5){t_iz = t_sum/5;t_sum=0;i=0;}i++;
  }
  ////////////// вывод на дисплей //////////////////////////////////////////////////////
  switch(menu){
    case 0:zn = 28;x=t_iz;break;
    case 1:zn = 27;x=t_reg;break;
    case 2:zn = 17;x=gis;break;}
 
  a[0]=x/100%10;
  a[1]=x/10%10;
  a[2]=x%10%10;
 
  print.point(false);
  print.display(0, zn);
  print.display(1, a[0]);
  print.display(2, a[1]);
  print.display(3, a[2]);
 ///////////// память ///////////////////////////////////////////////////////////////////
if(millis()-time>10000 && w==1){
     EEPROM.update(0,highByte(t_reg));EEPROM.update(1,lowByte(t_reg));EEPROM.update(2,gis);
     menu=0;w=0;} 
 //////////// управление реле //////////////////////////////////////////////////////////
  if(t_reg >= t_iz + gis){digitalWrite(13,HIGH);}
  if(t_reg <= t_iz - gis){digitalWrite(13,LOW);}
 
}
 
void to_Timer(){newPosition = myEnc.read()/4;}

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

Войти с помощью: 

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

  • Стабилизированный источник питания 0,1…50В (1А)

    Эта схема стабилизатора с нестабильностью выходного напряжения не более 0,005% при изменении нагрузки от 0 до 1А. Опорное напряжение устанавливается потенциометром P1. Операционный усилитель CA3130 сравнивает опорное напряжение с выходным напряжением стабилизатора. Выходное напряжение проходит через делитель напряжения, прежде чем поступит на  неинвертирующий вход операционного усилителя. Транзисторы T1 и T2 …Подробнее...
  • 4 X 15 Вт усилитель мощности

    4 X 15 Вт усилитель мощности

    Описание. Каждый канал усилителя может выдает мощность до 15Watts на 4 Ом динамик. Усилитель может работать от одного 12В DC, и это делает возможным использование этого усилителя в автомобиле. Схема основана (15W BTL X 2) на аудио усилителе IC TA8215 от Toshiba. Хотя чип разработан специально для автомобильной аудио аппаратуры, …Подробнее...
  • Регулятор скорости вентилятора (12В)

    Регулятор скорости вентилятора (12В)

    На рисунке показана простая схема регулятора скорости вращения вентилятора (кулера). Иногда вентиляторы при работе создают значительный шум, для уменьшения шума можно уменьшить скорость вращения вентилятора, там где позволяет тепловой режим. Схема позволяет осуществить плавную регулировку скорости вращения вентилятора при помощи потенциометра R3. После сборки уст-во в настройке не нуждаетсяПодробнее...
  • Аудиопроцессор TDA7419 + LCD1602 (Arduino)

    Аудиопроцессор TDA7419 + LCD1602 (Arduino)

    Ранее на странице https://rcl-radio.ru/?p=57658 расматривался пример использования аудипроцессора TDA7419 на платформе Arduino с использованием дисплея  LCD TFT 2,4 (SPFD5408), на этой странице будет рассмотрен пример использования LCD дисплея LCD1602 на базе контроллера HD44780. Главной задачей при разработке регулятора тембра и громкости на TDA7419 ставилась простота и удобство управления. Аудиопроцессор содержит множество настроек …Подробнее...
  • Устройство для проверки кварцевых резонаторов

    Схема уст-ва показана на рисунке, в основе схемы лежит задающий генератор на КР531ГГ1 — микросхема представляет собой 2-а управляемых генератора, частота которых зависит от С1 С2 подключенным к микросхеме которые представляют собой кварцевые или пьезокерамические резонаторы. R1 подключенный к микросхеме служит для облегчения запуска генератора при частотах ниже 4 МГц. …Подробнее...