LCD и HX711

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#1

Сообщение Skaynet » 24.07.2018{, 17:42}

Всем доброго времени суток прошу помощи ни как не могу соединить 2 вещи LCD 2x16 и модуль HX711
Нужно из этого кода вывести значения на экран по I2C

Код: Выделить всё

#include "HX711.h"

HX711 scale(A1, A0);                          

float calibration_factor = -3.7;          // калибровка!
float units;
float ounces;

void setup() {
  Serial.begin(9600); 
  scale.set_scale();
  scale.tare();                              //Сбрасываем на 0
  scale.set_scale(calibration_factor);       //Применяем калибровку
}

void loop() { 

  Serial.print("Reading: ");
  
  for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10;   // усредняем показания считав 10 раз 
  units / 10;                                                   // делим на 10
   
  ounces = units * 0.035274;                                    // переводим унции в граммы              
  Serial.print(ounces);                                          // отправляем в монитор порта
  Serial.print(" grams");  
  Serial.println();

 
} 
Отправлено спустя 1 час 1 минуту 23 секунды:
Получилось у меня теперь стал вопрос как с этого сделать блок ????

Код: Выделить всё

#include "HX711.h"                                // библиотека тензодатчика
 #include <Wire.h>                                 // Библиотека порта
 #include <LiquidCrystal_I2C.h>                    // Библиотека дисплея
 HX711 scale(A1, A0);                              // Выводы для подключения тензодатчика
 LiquidCrystal_I2C lcd(0x27, 16, 2);                 // Устанавливаем дисплей
 float myScale;                                    // Переменая для хранения значения веса
 
 void setup() {
 scale.set_scale(+121);                          // Калибровочная константа
 scale.tare();                                     // Сбрасываем на 0
 myScale = round(scale.get_units(3));              // Запоминаем среднее значение без груза, но с учетом тары 
 Serial.begin(115200);                             // инициализация порта
 lcd.init();                                       // инициализация ЖК дисплея                   
 lcd.backlight();                                  // Включаем подсветку дисплея
}

void loop() {
 
myScale = scale.get_units(10);                     // Запоминаем текущий вес  

Serial.println(myScale);

char myStr[6]; 
dtostrf(myScale, 5, 0, myStr);                    // Подготовка 5 знакомест
lcd.setCursor(4, 1);                              // Переводим курсор
lcd.print(myStr);                                 // выводим значение веса


} 

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#2

Сообщение Sancho » 24.07.2018{, 19:37}

Skaynet, Типа так.
Вложения
HX711_v1_(CODE).ubi
(11.67 КБ) 90 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#3

Сообщение Skaynet » 24.07.2018{, 19:53}

Sancho, да то что нужно но как убрать точку и цифры после точки ???

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#4

Сообщение Sancho » 24.07.2018{, 19:55}

Skaynet писал(а):
24.07.2018{, 19:53}
как убрать точку и цифры после точки ???
Вам нужно грубее - оправьте вначале в переменную типа инт....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#5

Сообщение Skaynet » 24.07.2018{, 19:58}

Sancho, Спасибо большое за помощь я новичек и не знаю как это сделать (оправьте вначале в переменную типа инт)

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#6

Сообщение Sancho » 24.07.2018{, 19:59}

Skaynet, Создаёшь переменную типа инт. В неё из блока. Её на дисплей.
Возможно, так.
Вложения
Проба дисплей_HX711_v1.flp
(65.49 КБ) 93 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#7

Сообщение Skaynet » 24.07.2018{, 20:10}

Sancho, Спасибо все получилось

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

LCD и HX711

#8

Сообщение Alias » 24.07.2018{, 20:24}

А так можно - напрямую float из блока в переменную int? Автор в своих примерах прогоняет через блок преобразования float-integer. Но что-то мне подсказывает, что можно напрямую даже в byte отправить, например, ту же температуру с датчика ds18.
ЗЫ Кажется, Дежа Вю - я это уже спрашивал :smile390:

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#9

Сообщение Skaynet » 24.07.2018{, 21:17}

возник еще вопросик как сделать сброс тара ????

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#10

Сообщение Sancho » 24.07.2018{, 21:27}

Skaynet писал(а):
24.07.2018{, 21:17}
возник еще вопросик как сделать сброс тара ????
Добавить вход! С фукнкцией из setup

Отправлено спустя 9 минут :
Типа так
Вложения
Проба дисплей_HX711_v2.flp
(77.19 КБ) 90 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#11

Сообщение Skaynet » 24.07.2018{, 23:12}

и на последок пожалуйста выход на вкл \выкл как сделать

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#12

Сообщение Sancho » 25.07.2018{, 09:59}

Skaynet писал(а):
24.07.2018{, 23:12}
и на последок пожалуйста выход на вкл \выкл как сделать
Блок от тензодатчика, с обвязкой, оставь на одной плате, №хх..
Дисплей перенеси на другую, создай дискретную переменную. вход от кнопки через ТТ триггер подай на её.
Ей управляй платой хх, "выполнять по условию", также перед входом данных на дисплей поставь переключатель: или переменная, или пробел.
Покажи что получилось, подкорректирую, если чего.

Можешь поставить тумблер по питанию :smile171:
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#13

Сообщение Skaynet » 25.07.2018{, 10:35}

Sancho, проблема в этой строчи кода

Код: Выделить всё

for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10;   // усредняем показания считав 10 раз
если ставить 10 то не работают кнопки на цифровых выходах если поставить 1 то все ок но скачет 2 грамма туду сюда

Отправлено спустя 41 секунду:
вот я и хочу отключать весы когда не нужно

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#14

Сообщение Sancho » 25.07.2018{, 11:01}

Skaynet,
По совету выше пробовали?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#15

Сообщение Skaynet » 25.07.2018{, 11:04}

Sancho, пробовал все равно если 10 то кнопки не работают при чем не важно подключен тензодатчик или нет но если поставить 1 то все работает но показание не стабильны

Отправлено спустя 30 минут 2 секунды:
Этот блок работает но вес показывает не правильно как бы я его не калибровал
Вложения
HX711_10.2016.flp
(167.28 КБ) 69 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#16

Сообщение Sancho » 25.07.2018{, 12:41}

Skaynet,
Так пробовал?
Сколько времени идёт измерение?
Или так. 3_1
Вложения
Проба дисплей_XH711_v3_1.flp
(95.69 КБ) 83 скачивания
Проба дисплей_XH711_v3.flp
(95.65 КБ) 73 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#17

Сообщение Skaynet » 25.07.2018{, 12:46}

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

Код: Выделить всё

#include"HX711.h"
int Weight = 0;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
 void setup() {
        Serial.begin(9600);
lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
 
  lcd.print("SINONING Scale!");
   Init_Hx711();
    Get_Maopi();   //clear the weight 
        delay(3000);                
}
void loop() {
lcd.clear();
  Weight = Get_Weight();        
        lcd.print("Weight = ");
        lcd.print(Weight);        //the true weight
        lcd.print(" g");        
                 
        delay(1000);        
}

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

LCD и HX711

#18

Сообщение Sancho » 25.07.2018{, 13:00}

Skaynet,
Ты примеры попробовал?
Посмотри код - там есть
delay(1000);
это значит, что программа стоит 1000мс, ничего не делая. Вообще.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15.12.2017{, 19:36}
Репутация: 0

LCD и HX711

#19

Сообщение Skaynet » 25.07.2018{, 13:04}

Sancho, Ошибка компиляции

Отправлено спустя 10 минут 56 секунд:
пожалуйста сделайте блок из выше указаного кода попробую еще это

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

LCD и HX711

#20

Сообщение Ingwar » 25.07.2018{, 14:48}

Skaynet писал(а):
25.07.2018{, 11:34}
Этот блок работает но вес показывает не правильно как бы я его не калибровал
Может не в тему, но опишу как когда то делал на прикрепленном примере.
1 После первого включения на пустых весах, значения из порта подставляем на вход "Zero". Прошиваем заного.
2 Затем ставим эталонный вес и значения из порта поделив на 1000 вписываю в делитель. Прошиваем снова.
На выходе получаем вес в граммах.

З. Ы. Значение для делителя можно получить из описания калибровки https://mysku.ru/blog/aliexpress/59749.html
Эталонный прописанный вес ставить после команды "GO" в порту и ждать 10 сек. Не забудьте подкорректировать скорость порта.
СпойлерПоказать
тест_весы.flp
(104.57 КБ) 83 скачивания
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Ответить

Вернуться в «Помогите, а то я "нимагу"»