Весы на ардуино HX 711
- Войдите на сайт для отправки комментариев
Втр, 08/02/2022 - 19:33
Здравствуйте. Вижу по поиску, что данная тема не первая, но всё же прошу помощи.
Собрал код. Всё откалибровал и в мониторе порта отображается верное значение груза.
А вот вывести на дисплей (TM 1637) совсем никак не получается. Перепробовал почти все библиотеки, где в названии есть TM 1637. И либо отображается только до 100 грамм( если выше 100г. видны только десятки) либо ничего не выводится.
По коду ниже раз в секунду выводятся случайные числа.
Плата Ардуино Uno. Тензодатчик до 20кг. Версия IDE 1.8.19
Заранее спасибо.
#include "HX711.h" // подключаем библиотеку для работы с тензодатчиком #include <TM1637.h> #define DT 6 // Указываем номер вывода, к которому подключен вывод DT датчика #define SCK 7 // Указываем номер вывода, к которому подключен вывод SCK датчика HX711 scale; // создаём объект scale TM1637 tm(3, 2); float calibration_factor = 3.74/0.035274; // вводим калибровочный коэффициент с переводим из унций float units; // задаём переменную для измерений в граммах void setup() { Serial.begin(9600); // инициируем работу последовательного порта на скорости 9600 бод tm.begin(); scale.begin(DT, SCK); // инициируем работу с датчиком scale.set_scale(); // выполняем измерение значения без калибровочного коэффициента scale.tare(); // сбрасываем значения веса на датчике в 0 scale.set_scale(calibration_factor); // устанавливаем калибровочный коэффициент } void loop() { Serial.print("Reading: "); // выводим текст в монитор последовательного порта units = scale.get_units(10); // считываем среднее значение 10 замеров tm.display(units); //вывод на дисплей Serial.print(units); // выводим в монитор последовательного порта вес в граммах Serial.println(" grams"); // выводим текст в монитор последовательного порта }
попробуй библиотеку от DetSimen у него выравнивание по правому краю и флоат понимает
А вот вывести на дисплей (TM 1637) совсем никак не получается. Перепробовал почти все библиотеки, где в названии есть TM 1637. И либо отображается только до 100 грамм( если выше 100г. видны только десятки) либо ничего не выводится.
Нет, ну меня это умиляет: тема называется "Весы на ардуино HX 711", а вопрос - исключительно по дисплею TM 1637.
У Вас никогда ничего не получится, если Вы не научитесь выделять главное и правильно формулировать свои мысли.
Если проблемы с дисплеем, так выкиньте из кода все, относящееся к весам, и налаживайте только дисплей. А когда дисплей будет всегда выводить именно то, что Вам нужно, только тогда подключайте к нему обратно весы.
Кстати, у любой библиотеки TM1637 есть набор примеров. Они работают?
попробуй библиотеку от DetSimen у него выравнивание по правому краю и флоат понимает
Библиотеку установил, количество функцией много, выделить нужную мне не получается.
Можете подсказать на примере моего когда ?
А вот вывести на дисплей (TM 1637) совсем никак не получается. Перепробовал почти все библиотеки, где в названии есть TM 1637. И либо отображается только до 100 грамм( если выше 100г. видны только десятки) либо ничего не выводится.
Нет, ну меня это умиляет: тема называется "Весы на ардуино HX 711", а вопрос - исключительно по дисплею TM 1637.
У Вас никогда ничего не получится, если Вы не научитесь выделять главное и правильно формулировать свои мысли.
Если проблемы с дисплеем, так выкиньте из кода все, относящееся к весам, и налаживайте только дисплей. А когда дисплей будет всегда выводить именно то, что Вам нужно, только тогда подключайте к нему обратно весы.
Кстати, у любой библиотеки TM1637 есть набор примеров. Они работают?
Согласен, название темы отобразил не корректно. Извиняюсь.
Да, примеры из библиотек, без весов, работают абсолютно нормально.
Да, примеры из библиотек, без весов, работают абсолютно нормально.
А в этих примерах используется функция display() или showNumberDec()?
Да, примеры из библиотек, без весов, работают абсолютно нормально.
А в этих примерах используется функция display() или showNumberDec()?
Чаще display, иногда print. Этой showNumberDec()не встречал ни разу
Ну в той библиотеке, которой я пользуюсь, числа выводятся именно showNumberDec().
Еще раз поясните, правильно ли я понял: при использовании одной и той же функции библиотеки (например? display)?
- в примерах к библиотеке удается вывести число больше 100,
- в Вашей программе числа больше 100 вывести не удается.
Ну и еще: правда ли, что в библиотеке в примерах используются именно числа float?
Ну в той библиотеке, которой я пользуюсь, числа выводятся именно showNumberDec().
Еще раз поясните, правильно ли я понял: при использовании одной и той же функции библиотеки (например? display)?
- в примерах к библиотеке удается вывести число больше 100,
- в Вашей программе числа больше 100 вывести не удается.
Ну и еще: правда ли, что в библиотеке в примерах используются именно числа float?
Основу кода для работы датчика брал отсюда (https://wiki.iarduino.ru/page/hx_711_with_tenzo/)
В видео и на странице они почему-то разные. Брал из видео.
Именно в этом варианте получается выводить значения до 100 грамм.
Дальше, если груз будет например 120 грамм, то на дисплее отображется только цифра 20.
- в примерах к библиотеке удается вывести число больше 100 - да.
- в Вашей программе числа больше 100 вывести не удается. - да.
Я не никак не привязан именно к этому коду. Просто ищу тот который заработает.
Еще раз: в примерах к библиотеке дисплея используются числа float?
- в примерах к библиотеке удается вывести число больше 100 - да.
- в Вашей программе числа больше 100 вывести не удается. - да.
ну осталось только сравнить примеры с вашим кодом и понять в чем разница
Еще раз: в примерах к библиотеке дисплея используются числа float?
Я не вижу применения float/
Ну вот и обнаружилась разница между кодом примера и Вашим кодом.
1. Посмотрите заголовочный файл библиотеки - есть ли там функции работы с float.
2. Замените при обращении к библиотечной функции float на int.
Ну вот и обнаружилась разница между кодом примера и Вашим кодом.
1. Посмотрите заголовочный файл библиотеки - есть ли там функции работы с float.
2. Замените при обращении к библиотечной функции float на int.
Понял, буду пробовать спасибо.
Ну вот и обнаружилась разница между кодом примера и Вашим кодом.
1. Посмотрите заголовочный файл библиотеки - есть ли там функции работы с float.
2. Замените при обращении к библиотечной функции float на int.
Сработало. Спасибо вам большое!
Теперь понял, о чем говорил человек выше, выравнивание числе вправо.