LCD и HX711

Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

Всем доброго времени суток прошу помощи ни как не могу соединить 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 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

[ref]Skaynet[/ref], Типа так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], да то что нужно но как убрать точку и цифры после точки ???
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

Skaynet писал(а): 24 июл 2018, 19:53как убрать точку и цифры после точки ???
Вам нужно грубее - оправьте вначале в переменную типа инт....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], Спасибо большое за помощь я новичек и не знаю как это сделать (оправьте вначале в переменную типа инт)
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

[ref]Skaynet[/ref], Создаёшь переменную типа инт. В неё из блока. Её на дисплей.
Возможно, так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], Спасибо все получилось
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

LCD и HX711

Сообщение Alias »

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

LCD и HX711

Сообщение Skaynet »

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

LCD и HX711

Сообщение Sancho »

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

Отправлено спустя 9 минут :
Типа так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

и на последок пожалуйста выход на вкл \выкл как сделать
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

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

Можешь поставить тумблер по питанию :smile171:
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], проблема в этой строчи кода

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

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

Отправлено спустя 41 секунду:
вот я и хочу отключать весы когда не нужно
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

[ref]Skaynet[/ref],
По совету выше пробовали?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], пробовал все равно если 10 то кнопки не работают при чем не важно подключен тензодатчик или нет но если поставить 1 то все работает но показание не стабильны

Отправлено спустя 30 минут 2 секунды:
Этот блок работает но вес показывает не правильно как бы я его не калибровал
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

[ref]Skaynet[/ref],
Так пробовал?
Сколько времени идёт измерение?
Или так. 3_1
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

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

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

#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 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

LCD и HX711

Сообщение Sancho »

[ref]Skaynet[/ref],
Ты примеры попробовал?
Посмотри код - там есть
delay(1000);
это значит, что программа стоит 1000мс, ничего не делая. Вообще.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Skaynet
Рядовой
Сообщения: 44
Зарегистрирован: 15 дек 2017, 19:36

LCD и HX711

Сообщение Skaynet »

[ref=#ff8000]Sancho[/ref], Ошибка компиляции

Отправлено спустя 10 минут 56 секунд:
пожалуйста сделайте блок из выше указаного кода попробую еще это
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

LCD и HX711

Сообщение Ingwar »

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

З. Ы. Значение для делителя можно получить из описания калибровки https://mysku.ru/blog/aliexpress/59749.html
Эталонный прописанный вес ставить после команды "GO" в порту и ждать 10 сек. Не забудьте подкорректировать скорость порта.
[spoiler]
тест_весы.flp
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость