| Ваш IP: 18.207.249.15 | Online(51) - гости: 27, боты: 24 | Загрузка сервера: 0.88 ::::::::::::

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;}

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

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

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

  • К140УД9 (справочные данные)

    К140УД9 (справочные данные)

    К140УД9 относят к ОУ средней точности, К140УД9 это усовершенствованный вариант К140УД2, в ОУ имеется защита входа от перенапряжения, а выхода от короткого замыкания в нагрузке. Электрические параметры: Uпит. ном — 2*12,6В I пот — 8мА Ku — 35*10³ Uсм — 5мВ TKUсм — 20мкв/Сº Iвх — 350нА ΔIвх — 100нА …Подробнее...
  • Импульсный источник питания для УМЗЧ 150Вт

    Импульсный источник питания для УМЗЧ 150Вт

    При использовании ИИП в УМЗЧ иногда возникают проблемы с электромагнитной совместимостью. Предлагаемый ИИП отличается от других хорошей фильтрацией выходного напряжения и защитой от перегрузок и короткого замыкания. ОСНОВНЫЕ ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ Напряжение сети – 220В Выходное напряжение – 2*25В Максимальный ток нагрузки – 3А Ток срабатывания защиты – 3,3А Максимальная выходная …Подробнее...
  • LA4425A — УМЗЧ 5 Вт

    LA4425A — УМЗЧ 5 Вт

    LA4425A — усилитель мощности звуковой часты. Схема усилителя содержит минимальное кол-во внешних компонентов, всего три конденсатора. Выходная мощность усилителя 5 Вт. Рабочий диапазон питающего напряжения от 5 до 16 В. ИМС LA4425A имеет защиту от пернапряжения, тепловую защиту и защиту от КЗ. Микросхема выполнена в корпусе SIP5H. Основные характеристики Максимальное напряжение питания …Подробнее...
  • Кодовая маркировка емкости импортных конденсаторов

    Кодовая маркировка емкости импортных конденсаторов

    В соответствии со стандартами IEC на практике применяется четыре способа кодировки номинальной емкости. 1. Кодировка 3-мя цифрами Первые две цифры указывают на значение емкости в пикофарадах (пф), последняя — количество нулей. Когда конденсатор имеет емкость менее 10 пФ, то последняя цифра может быть «9». При емкостях меньше 1.0 пф первая …Подробнее...
  • Тестер для транзисторов

    Тестер для транзисторов

    На рисунке показана схема простого тестера для транзисторов, который может определить годность биполярных транзисторов различной структуры (p-n-p, n-p-n). На элементах DD1.1, DD1.2 и DD1.3 выполнен генератор, работающий на частоте 1 кГц. Проверка транзисторов различной структуры без переключения возможна благодаря подаче на эмиттер и коллектор испытуемого  транзистора то низкого, то высокого …Подробнее...