Перейти к содержимому

Тм1637 как проверить работоспособность

  • автор:

Термометр на TM1637 с датчиком LM35 / DS18B20

Термометр Ардуино на TM1637 и датчиком DHT22

Проект термометра на Arduino с модулем TM1637 и датчиком DS18B20 (LM35) или цифровым датчиком температуры DHT22 — это простой проект для начинающих. Мы решили сделать краткий обзор трех вариантов термометров на 4-символьном светодиодном индикаторе TM1637. На этой странице мы разместили монтажные схемы проекта с программами для микроконтроллера Ардуино и модуля дисплея TM1637.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль дисплея TM1637
  • датчик DS18B20 / LM35 / DHT22 (DHT11)
  • макетная плата
  • коннекторы
  • библиотека TM1637Display.h и DHT.h
  • библиотека DallasTemperature.h и OneWire.h
  1. Часы с будильником на дисплее TM1637
  2. Как подключить дисплей TM1637 к Ардуино
  3. Как подключить датчик DS18B20 к Ардуино

Выбирая датчик для своего термометра, обратите внимание на его технические характеристики. Датчик ds18b20 имеет диапазон измерения температуры -55 … +125°C с точностью не более 0,5 градуса. Датчик lm35 не способен измерять отрицательные температуры и имеет погрешность измерения 2°C. Цифровой датчик температуры DHT22 измеряет температуру в диапазоне -40 … +150°C и может также измерять влажность.

Термометр на Arduino с дисплеем TM1637 и DS18B20

Термометр на Arduino с дисплеем TM1637 и DS18B20

В первой версии термометра на Ардуино используется герметичный датчик DS18B20. Мы уже рассматривали подключение датчика DS18B20 к Arduino, который взаимодействует с микроконтроллером Arduino Uno с помощью библиотеки DallasTemperature.h. На схеме выше показано подключение температурного датчика к плате, не забудьте добавить резистор 4,7kΩ между контактами 5V и Data датчика при сборке термометра на TM1637.

Скетч термометра с датчиком DS18B20 на дисплее TM1637

#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO #include "OneWire.h" #include "DallasTemperature.h" OneWire oneWire(15); DallasTemperature ds(&oneWire); const uint8_t C[] = < SEG_B | SEG_A | SEG_F | SEG_G, SEG_A | SEG_D | SEG_E | SEG_F >; void setup() < ds.begin(); Serial.begin(9600); display.setBrightness(4); // яркость от 0 до 7 >void loop() < ds.requestTemperatures(); int t = ds.getTempCByIndex(0); Serial.print("Temperature: "); Serial.println(t); display.showNumberDecEx(t, (0x80 >> 0), false, 2, 0); display.setSegments(C, 2, 2); delay(100); >

Термометр на Arduino с дисплеем TM1637 и LM35

Термометр на Arduino с дисплеем TM1637 и LM35

В этом примере мы используем показания аналогового датчика LM35 для создания термометра на базе модуля дисплея TM1637. Этот датчик не требует калибровки или настройки для обеспечения точности, электрический сигнал от датчика температуры LM35 пропорционален градусам Цельсия. Мы будем отображать температуру на первых двух сегментах экрана, а на двух других сегментах будет отображаться значок градуса.

Скетч термометра с датчиком LM35 на дисплее TM1637

#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO const uint8_t C[] = < SEG_B | SEG_A | SEG_F | SEG_G, SEG_A | SEG_D | SEG_E | SEG_F >; void setup() < pinMode(A1, INPUT); Serial.begin(9600); display.setBrightness(4); // яркость от 0 до 7 >void loop() < int t = analogRead(A1); int temp = (t / 1023.0) * 5.0 * 1000 / 10; Serial.print("Temperature: "); Serial.println(temp); display.showNumberDecEx(temp, (0x80 >> 0), false, 2, 0); display.setSegments(C, 2, 2); delay(100); >

Термометр на Arduino с дисплеем TM1637 и DHT22

Термометр на Arduino с дисплеем TM1637 и DHT22

Третий вариант сборки схемы. Датчик температуры и влажности DHT11 также можно использовать для проекта, но датчик DHT22 обеспечивает наиболее точные измерения для создания термометра. Схема не изменится, и вам нужно будет только изменить тип используемого датчика в программе. Все, что вам нужно сделать, это собрать схему с модулем TM1637 и загрузить программу в микроконтроллер Arduino Uno.

Скетч термометра с датчиком DHT22 на дисплее TM1637

#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO #include "DHT.h" DHT dht(12, DHT22); const uint8_t C[] = < SEG_B | SEG_A | SEG_F | SEG_G, SEG_A | SEG_D | SEG_E | SEG_F >; void setup() < dht.begin(); Serial.begin(9600); display.setBrightness(4); // яркость от 0 до 7 >void loop() < int t = dht.readTemperature(); Serial.print("Temperature: "); Serial.println(t); display.showNumberDecEx(t, (0x80 >> 0), false, 2, 0); display.setSegments(C, 2, 2); delay(100); >

Заключение. Помимо представленного в этом обзоре термометра с платой Arduino и модулем четырехразрядного семисегментного дисплея, на нашем сайте вы также можете найти проект термометра на дисплее LCD 1602 или метеостанции с модулем Bluetooth. Если у вас есть вопросы по созданию или программированию термометра на базе платы Ардуино, не стесняйтесь оставлять их в комментариях к этой статье.

Arduino.ru

azlk аватар

не могу засветить индикатор ТМ 1637 скетч проверяется и загружается может кто сталкивался?

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 16:57

ЕвгенийП аватар

Зарегистрирован: 25.05.2015

А причём тут ТМ1637 и FM-приёмник? Да и чего Вы там не можете — тоже осталось непонятым 🙁

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 17:12

azlk аватар

Зарегистрирован: 24.10.2016

в тексте ссылки этот индикатор является частотомером(настройки) и есть схема с двумя кнопами

вот эти кнопки точнее их подключение к плате возможно некорректо

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 17:26

ЕвгенийП аватар

Зарегистрирован: 25.05.2015
azlk пишет:

в тексте ссылки

Вы ожидаете, что кто-то будет читать over9000 букв на постороннем форуме лишь на том основании, что Вам лень опубликовать схему, скетч и нормально сформулировать вопрос?

Давайте так, если Вам нужна помощь — схему, скетч и нормальное объяснение проблемы.

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 17:32

azlk аватар

Зарегистрирован: 24.10.2016

можно вам на почту отправлю суть ..сюда что не очень получается

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 17:37

azlk аватар

Зарегистрирован: 24.10.2016

  • Войдите на сайт для отправки комментариев

Вс, 29/01/2017 — 17:38

azlk аватар

Зарегистрирован: 24.10.2016

// FM Радио версия 1.0 // http://www.forklg.ru #include // I2C-Library для управления радиомодулем RDA5807 // SDA приемника RDA5807 подключаем к аналоговому входу 4 // SCL приемника RDA5807 подключаем к аналоговому входу 5 #include "TM1637.h" // Библиотека для управления LED дисплеем TM1637 #define CLK 4 // вывод CLC дисплея #define DIO 5 // вывод DIO дисплея TM1637 disp(CLK,DIO); double f_ini=100.000;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную). void setup() < disp.set(7); // Устанавливаем яркость дисплея на максимум disp.init(D4056A); // Проводим инициализацию дисплея Wire.begin(); // Инициализация двухпроводной шины I2C. setFrequency(f_ini); // Присваиваем значение частоты радиомодулю RDA5807 pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз" pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх" >void loop() < float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее disp.display(fin2); // выводим значение частоты на дисплей // проверяем нажатие кнопки "Частота вниз" if (digitalRead(6) == HIGH)< // если кнопка "Частота вниз" нажата f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц setFrequency(f_ini); // передаем новое значение частоты радиомодулю >; // проверяем нажатие кнопки "Частота вверх" if (digitalRead(7) == HIGH)< // если кнопка "Частота вверх" нажата f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц setFrequency(f_ini);// передаем новое значение частоты радиомодулю >; delay(500); // задержка 0,5 сек. > void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль RDA5807. < int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768; char frequencyH = frequencyB >> 8; // Старший байт. char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт. Wire.beginTransmission(0x60); // Адрес чипа RDA5807M Wire.write(frequencyH); // Старший байт. Wire.write(frequencyL); // Младший байт. Wire.write(0xB8); // 1011 1000 =Стерео Wire.write(0x10); // 0001 0000 Wire.endTransmission(); // формируем I2C-Stop. >
  • Войдите на сайт для отправки комментариев

Пнд, 30/01/2017 — 10:48

Andrey12 аватар

Зарегистрирован: 26.12.2014

Я так понимаю RDA5807M в этом счетче используется в режиме совместимости с TEA5767.

Но в скетче не вижу инициализации чипа RDA5807M. Подскажите, он действительно будет рабоать без инициализации? То есть у вас станции настраиваются только частота не отображается?

  • Войдите на сайт для отправки комментариев

Пнд, 30/01/2017 — 10:50

azlk аватар

Зарегистрирован: 24.10.2016

// FM Радио версия 1.0 // http://www.forklg.ru #include // I2C-Library для управления радиомодулем RDA5807 // SDA приемника RDA5807 подключаем к аналоговому входу 4 // SCL приемника RDA5807 подключаем к аналоговому входу 5 #include "TM1637.h" // Библиотека для управления LED дисплеем TM1637 #define CLK 4 // вывод CLC дисплея #define DIO 5 // вывод DIO дисплея TM1637 tm1637(CLK,DIO); double f_ini=102.200;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную). void setup() < tm1637.init(); tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; Wire.begin(); // Инициализация двухпроводной шины I2C. setFrequency(f_ini); // Присваиваем значение частоты радиомодулю RDA5807 pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз" pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх" >void loop() < float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее tm1637.display(fin2); // выводим значение частоты на дисплей // проверяем нажатие кнопки "Частота вниз" if (digitalRead(6) == HIGH)< // если кнопка "Частота вниз" нажата f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц setFrequency(f_ini); // передаем новое значение частоты радиомодулю >; // проверяем нажатие кнопки "Частота вверх" if (digitalRead(7) == HIGH)< // если кнопка "Частота вверх" нажата f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц setFrequency(f_ini);// передаем новое значение частоты радиомодулю >; delay(500); // задержка 0,5 сек. > void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль RDA5807. < int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768; char frequencyH = frequencyB >> 8; // Старший байт. char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт. Wire.beginTransmission(0x60); // Адрес чипа RDA5807M Wire.write(frequencyH); // Старший байт. Wire.write(frequencyL); // Младший байт. Wire.write(0xB8); // 1011 1000 =Стерео Wire.write(0x10); // 0001 0000 Wire.endTransmission(); // формируем I2C-Stop. >
  • Войдите на сайт для отправки комментариев

Пнд, 30/01/2017 — 10:52

azlk аватар

Зарегистрирован: 24.10.2016

все отоброжается но я делаю это без кнорпок

  • Войдите на сайт для отправки комментариев

Пнд, 30/01/2017 — 13:04

Andrey12 аватар

Зарегистрирован: 26.12.2014

Я так понял без кнопок это если просто указать частоту напрямую через функцию setFrequency() то приемник настраивается.

А если нажимать кнопки то увеличение уменьшение частоты не происходит?

Загрузите скетч, посмотрите что приходит в монитор. Добавил строки 16,35,42. Если ничего не происходит значит кнопки подключены не правильно.

// FM Радио версия 1.0 // http://www.forklg.ru" title http://www.forklg.ru" rel="nofollow">http://www.forklg.ru" rel="nofollow">http://www.forklg.ru #include // I2C-Library для управления радиомодулем RDA5807 // SDA приемника RDA5807 подключаем к аналоговому входу 4 // SCL приемника RDA5807 подключаем к аналоговому входу 5 #include "TM1637.h" // Библиотека для управления LED дисплеем TM1637 #define CLK 4 // вывод CLC дисплея #define DIO 5 // вывод DIO дисплея TM1637 tm1637(CLK,DIO); double f_ini=102.200;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную). void setup() < Serial.begin(115200); tm1637.init(); tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; Wire.begin(); // Инициализация двухпроводной шины I2C. setFrequency(f_ini); // Присваиваем значение частоты радиомодулю RDA5807 pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз" pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх" >void loop() < float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее tm1637.display(fin2); // выводим значение частоты на дисплей // проверяем нажатие кнопки "Частота вниз" if (digitalRead(6) == HIGH)< // если кнопка "Частота вниз" нажата f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц setFrequency(f_ini); // передаем новое значение частоты радиомодулю Serial.print("Press down, f_ini - "); Serial.println(f_ini); >; // проверяем нажатие кнопки "Частота вверх" if (digitalRead(7) == HIGH)< // если кнопка "Частота вверх" нажата f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц setFrequency(f_ini);// передаем новое значение частоты радиомодулю Serial.print("Press up, f_ini - "); Serial.println(f_ini); >; delay(500); // задержка 0,5 сек. > void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль RDA5807. < int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768; char frequencyH = frequencyB >> 8; // Старший байт. char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт. Wire.beginTransmission(0x60); // Адрес чипа RDA5807M Wire.write(frequencyH); // Старший байт. Wire.write(frequencyL); // Младший байт. Wire.write(0xB8); // 1011 1000 =Стерео Wire.write(0x10); // 0001 0000 Wire.endTransmission(); // формируем I2C-Stop. >
  • Войдите на сайт для отправки комментариев

Тм1637 как проверить работоспособность

ARDUINO выдает ошибку

  • Автор темы димааптв
  • Дата начала 23 Июн 2021

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

димааптв

23 Июн 2021 1 0
Оформи код соответствующим тэгом

// подключение индикатора TM1637
#include
#define CLK 3
#define DIO 2
TM1637 disp(CLK, DIO);

// пин для считывания напряжения
int pin_read = A1;
// максимальный заряд аккумулятора
float max_v = 4.25;
// минимальный заряд аккумулятора
float min_v = 2.75;

void setup() // установка опорного напряжения для аналоговых входов
analogReference(INTERNAL);
// вывод данных в монитор порта
Serial.begin(9600);
// инициализация индикатора
TM1637.init();
TM1637.set(BRIGHT_TYPICAL);
>

void loop() float Vbat = (analogRead(pin_read) * 1.1) / 1023;
float del = 0.091; // R2/(R1+R2) 0.99кОм / (9.88кОм + 0.99кОм)
float Vin = Vbat / del;
// уровень заряда в процентах
int proc = ((Vin — min_v) / (max_v — min_v)) * 100;
// вывод данных в монитор порта
Serial.println(Vin);
Serial.println(proc);
// вывод уровня заряда на индикатор
TM1637.display(proc);
delay(1000);
>
пишет вот что
C:\Users\Дима\Documents\Arduino\sketch_jun23a\sketch_jun23a.ino: In function ‘void setup()’:
sketch_jun23a:20:9: error: expected unqualified-id before ‘.’ token
sketch_jun23a:21:9: error: expected unqualified-id before ‘.’ token
C:\Users\Дима\Documents\Arduino\sketch_jun23a\sketch_jun23a.ino: In function ‘void loop()’:
sketch_jun23a:34:9: error: expected unqualified-id before ‘.’ token
exit status 1
expected unqualified-id before ‘.’ token
не могу понять в чем дело, а в пятницу защита диплома

TM1637 работает. без VCC

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Поделиться

Последние посетители 0 пользователей онлайн

  • Ни одного зарегистрированного пользователя не просматривает данную страницу

Сообщения

IMXO

не. это тем у кого кнопки по 5минут дребезжат

Piotr__1

@oleg korotkov МЛТ? Вы точно ничего не перепутали?
Правильно пусть учат, прежде чем всякие приблуды делать и продавать.

Piotr__1

Ощущение что рисовали плуту в Спринте из библиотек найденных по знакомым, больно все в разнобой. Поэтому предположу что смысловой нагрузки это не несет.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *