Ну и у Вас неправильно и в источнике Вашем тоже неправильно. Во первых. в варнингах должно было быть предупреждение, о том, что значение после запятой в: Код (C++): units = + scale.get_units(), 20; не дает эффекта. Во вторых. Вы все равно берете только последние значение. Все остальные вы получаете, ну и перезаписываете последним. Поэтому, что 3 что 20 разницы нет. Это потому, что у Вас, что у горе автора примера, стоит "=+" а для суммирования нужно "+=" Ну и результат потом не делите на количество раз суммирования. У автора там есть деление, но результат никуда не записывается. Все равно, что нет. Должно быть так: Код (C++): for (int i = 0; i < 3; i ++) // усредняем показания, считав значения датчика 3 раза { units += scale.get_units(); // суммируем показания 3 замера } units/=3.0; Ну и куда Вы дальше? Может поучите язык, прежде чем писать книги из незнакомых слов?
Добрый совет - в программировании (как насчёт "в жизни" сами решайте, я только про программирование) не стоит слепо верить никаким источникам. Верить можно только в Бога, все остальное нужно осмысливать и проверять самому.
Его надо наизусть знать? Или все-таки уметь применять? Но насколько я понимаю - применять надо на практике. Вот я и пытаюсь. А описания функций библиотеки для НХ711 я не нашёл. Код (C++): // HX711 к Arduino pin 4->CLK 5->DAT 5V->VCC GND->GND //дИСПЛЕЙ 1602 и oled VCC — 5V GND — GND SDA — A4 SCL — A5 // The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine. } }
Как не даёт эффекта? Это значение регулирует разрядность после запятой (правда почему-то не во всех скетчах. В одних ничего не меняется, в других разрядность показаний после запятой меняет)..Не нашёл описания этих функций.. Вот как программно остановить ....а потом запустить кнопкой на новый круг... Ну, остановить можно попробовать и наличием или отсутствием напряжения на цифровом выходе. а вот как потом запустить кнопкой..
Да! Не весь, конечно, но основы знать надо. a1000, ну, в Бога-то можно. В каком-то американском фильме на кассе салуна висела табличка: "In God we trust. Anyone else pay cash". Всегда вспоминаю.
Конечно брежу... Только вот здесь почему-то он меняет количество цифр после запятой. Код (C++): #include "HX711.h" #define LOADCELL_DOUT_PIN 5 #define LOADCELL_SCK_PIN 4 }
Ну попробуйте так, собрал из двух, по Вашим словам, рабочих примеров. Я не компилировал, мог где-то ошибиться. И еще, я так и не понял, что у Вас на 7 и 8 пине, но 8-ой Вы в HIGH сбрасываете по else, а 7-ой в LOW нет. На всякий случай добавил, если не нужно - уберите. Или перенесите за if , чтобы звук отключался при снятии тары с весов, до нажатия кнопки. Код (C++): // HX711 к Arduino pin 4->CLK 5->DAT 5V->VCC GND->GND //дИСПЛЕЙ 1602 и oled VCC — 5V GND — GND SDA — A4 SCL — A5 // The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine. #include <LiquidCrystal_I2C.h> #include "HX711.h" #define calibration_factor -7400.0sketch #define LOADCELL_DOUT_PIN 5 #define LOADCELL_SCK_PIN 4 HX711 scale; LiquidCrystal_I2C lcd(0x27, 16, 2); int X = 21; float units; const byte ledPin = 7; const byte ledPin3 = 3; volatile boolean flag = 1; void Button_press() { flag = 0; } void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Подключение подсветки lcd.setCursor(0, 0); // Установка курсора в начало первой строки Serial.begin(9600); scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); scale.set_scale(); scale.tare(); scale.set_scale(calibration_factor);/ attachInterrupt(1, Button_press, FALLING); } void loop() { for (int i = 0; i < 5; i ++) // усредняем показания, считав значения датчика 3 раза { units += scale.get_units(); // суммируем показания 3 замера } units /= 5.0; lcd.clear(); lcd.setCursor(0, 0); lcd.print(units); if ( (units * 10.0) >= X ) { if (flag == 0) { digitalWrite(7, HIGH);//КОНЕЦ, СТАВИТСЯ НА ПАУЗУ.Прерывание. При нажатии кнопки начать сначала. digitalWrite(8, LOW); flag=1; } } else { if (flag == 0) { digitalWrite(7, LOW); //КОНЕЦ, СТАВИТСЯ НА ПАУЗУ.Прерывание. При нажатии кнопки начать сначала. digitalWrite(8, HIGH); } } }
И добавьте в setup() отключение моторов, зуммеров и ламп. Чтобы все было проинициализированно, и не дергалось до нажатия кнопки.
Хорошо, что хоть осознаёшь. А это новый приступ бреда, т.к. "вот здесь" ничего похожего на Код (C++): units =+ scale.get_units(), 20; нету
Код (C++): int X = 21; float units; const byte ledPin = 7; volatile boolean flag = 1; void Button_press() { flag = 0; } void setup() { attachInterrupt(1, Button_press, FALLING); Спасибо. А кнопку на какой пин вешать?
Мне кажется - тут клиника. Потому что вместо того, чтобы внять - в ответ "доказательства" вида "сам дурак", и опытные дядьки в изумлении чешут репу - что с этим пациентом делать
Спасибо, SergeiL. Из всех только один SergeiL что-то пытался сделать.. остальные- гуру. Теперь я тоже знаю как гуру быть: на любой вопрос буду отвечать: и ещё всякую хрень нести. А я и есть кутёнок, только начал колупать эту хрень, которая нужна для 2-3проектов, но её надо всю выучить сначала лет за пару-тройку, а может и больше лет..тогда гуру соблаговолят что-нибудь умное подсказать... что ж за мания величия?