Krisu880 Listopad 24, 2021 Udostępnij Listopad 24, 2021 46 minut temu, Krisu880 napisał: Wielkie dzieki za pomoc idę po moje prowizoryczne urządzenie i spróbuję to napisać od nowa. z nadzieją że zadziała Pozdrawiam Serdecznie Dnia 9.02.2021 o 19:13, H1M4W4R1 napisał: Zacznijmy od początku Linijka 60-62: float odczytWagi = Serial.read(); // Twój odczyt masy z wagi (wyrażony w gramach!!!!!!!) float minMasaPojemnika = 325; // 1g float minMasaDoZamkniecia = 1325; // 100g Widzę tutaj dwa błędy - pierwszy to zastosowanie Serial.read(), który odczytuje dane z UART, a nie z wagi. Dodatkowo problemem jest to, że Serial.read() zwraca wartości z zakresu [0,255]. Drugi - te same zmienne masz zdefiniowane w linijkach 28-30, więc linijki 60-62 powinny wyglądać m/w tak (czytaj: są zbędne): //odczytWagi = Serial.read(); // Twój odczyt masy z wagi (wyrażony w gramach!!!!!!!) //minMasaPojemnika = 325; // 1g //minMasaDoZamkniecia = 1325; // 100g - te wartości są ustawione na starcie, więc są zbędne, odczyt jest sprawdzany w innym miejscu Tym samym idziemy do linijki 79, gdzie dodajemy odczytWagi = i; Dla czepialskich - tak można to zrobić lepiej, ale to już zostawiam koledze do analizy i poprawienia Dodatkowo możemy też dodać linijkę Serial.write("Odczyt z wagi: " + i + "\r\n"); Która będzie zwracała nam do serial monitora aktualny odczyt z wagi. (nie jestem pewien czy zadziała, dawno nie pracowałem z Arduino) Poprawić też trzeba linijkę 28 i zostawić tylko deklarację: float odczytWagi; // Twój odczyt masy z wagi (wyrażony w gramach!!!!!!!) Ostatecznie kod powinien wyglądać podobnie do tego: /* ------------------------------------------------------------------------------------- HX711_ADC Arduino library for HX711 24-Bit Analog-to-Digital Converter for Weight Scales Olav Kallhovd sept2017 ------------------------------------------------------------------------------------- */ /* This example file shows how to calibrate the load cell and optionally store the calibration value in EEPROM, and also how to change the value manually. The result value can then later be included in your project sketch or fetched from EEPROM. To implement calibration in your project sketch the simplified procedure is as follow: LoadCell.tare(); //place known mass LoadCell.refreshDataSet(); float newCalibrationValue = LoadCell.getNewCalibration(known_mass); */ #include <HX711_ADC.h> #include <EEPROM.h> //pins: const int HX711_dout = 4; //mcu > HX711 dout pin const int HX711_sck = 5; //mcu > HX711 sck pin int ledPin = 2; float odczytWagi; // Twój odczyt masy z wagi (wyrażony w gramach!!!!!!!) float minMasaPojemnika = 325; // 1g float minMasaDoZamkniecia = 1325; // 100g //HX711 constructor: HX711_ADC LoadCell(HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; unsigned long t = 0; void setup() { Serial.begin(57600); delay(1000); Serial.println(); Serial.println("Starting..."); pinMode(ledPin, OUTPUT); LoadCell.begin(); unsigned long stabilizingtime = 2000; // preciscion right after power-up can be improved by adding a few seconds of stabilizing time boolean _tare = false; //set this to false if you don't want tare to be performed in the next step LoadCell.start(stabilizingtime, _tare); if (LoadCell.getTareTimeoutFlag() || LoadCell.getSignalTimeoutFlag()) { Serial.println("Timeout, check MCU>HX711 wiring and pin designations"); while (1); } else { LoadCell.setCalFactor(1.0); // user set calibration value (float), initial value 1.0 may be used for this sketch Serial.println("Startup is complete"); } while (!LoadCell.update()); calibrate(); //start calibration procedure //float odczytWagi = Serial.read(); // Twój odczyt masy z wagi (wyrażony w gramach!!!!!!!) //float minMasaPojemnika = 325; // 1g //float minMasaDoZamkniecia = 1325; // 100g } void loop() { static boolean newDataReady = 0; const int serialPrintInterval = 0; //increase value to slow down serial print activity // check for new data/start next conversion: if (LoadCell.update()) newDataReady = true; // get smoothed value from the dataset: if (newDataReady) { if (millis() > t + serialPrintInterval) { float i = LoadCell.getData(); Serial.print("Load_cell output val: "); Serial.println(i); newDataReady = 0; t = millis(); odczytWagi = i; Serial.write("Odczyt z wagi: " + i + "\r\n"); } } // receive command from serial terminal if (Serial.available() > 0) { char inByte = Serial.read(); if (inByte == 't') LoadCell.tareNoDelay(); //tare else if (inByte == 'r') calibrate(); //calibrate else if (inByte == 'c') changeSavedCalFactor(); //edit calibration value manually } // check if last tare operation is complete if (LoadCell.getTareStatus() == true) { Serial.println("Tare complete"); if(odczytWagi >= minMasaDoZamkniecia) { digitalWrite(ledPin, LOW); // Zamknij zawór } else if(odczytWagi >= minMasaPojemnika) { digitalWrite(ledPin, HIGH); // Otwórz zawór } else if (odczytWagi = 0) { digitalWrite(ledPin, LOW); // (Stan krytyczny - brak pojemnika na wadze, natychmiast zamknij zawór) // Zamknij zawór } } } void calibrate() { Serial.println("***"); Serial.println("Start calibration:"); Serial.println("Place the load cell an a level stable surface."); Serial.println("Remove any load applied to the load cell."); Serial.println("Send 't' from serial monitor to set the tare offset."); boolean _resume = false; while (_resume == false) { LoadCell.update(); if (Serial.available() > 0) { if (Serial.available() > 0) { char inByte = Serial.read(); if (inByte == 't') LoadCell.tareNoDelay(); } } if (LoadCell.getTareStatus() == true) { Serial.println("Tare complete"); _resume = true; } } Serial.println("Now, place your known mass on the loadcell."); Serial.println("Then send the weight of this mass (i.e. 100.0) from serial monitor."); float known_mass = 0; _resume = false; while (_resume == false) { LoadCell.update(); if (Serial.available() > 0) { known_mass = Serial.parseFloat(); if (known_mass != 0) { Serial.print("Known mass is: "); Serial.println(known_mass); _resume = true; } } } LoadCell.refreshDataSet(); //refresh the dataset to be sure that the known mass is measured correct float newCalibrationValue = LoadCell.getNewCalibration(known_mass); //get the new calibration value Serial.print("New calibration value has been set to: "); Serial.print(newCalibrationValue); Serial.println(", use this as calibration value (calFactor) in your project sketch."); Serial.print("Save this value to EEPROM adress "); Serial.print(calVal_eepromAdress); Serial.println("? y/n"); _resume = false; while (_resume == false) { if (Serial.available() > 0) { char inByte = Serial.read(); if (inByte == 'y') { #if defined(ESP8266)|| defined(ESP32) EEPROM.begin(512); #endif EEPROM.put(calVal_eepromAdress, newCalibrationValue); #if defined(ESP8266)|| defined(ESP32) EEPROM.commit(); #endif EEPROM.get(calVal_eepromAdress, newCalibrationValue); Serial.print("Value "); Serial.print(newCalibrationValue); Serial.print(" saved to EEPROM address: "); Serial.println(calVal_eepromAdress); _resume = true; } else if (inByte == 'n') { Serial.println("Value not saved to EEPROM"); _resume = true; } } } Serial.println("End calibration"); Serial.println("***"); Serial.println("To re-calibrate, send 'r' from serial monitor."); Serial.println("For manual edit of the calibration value, send 'c' from serial monitor."); Serial.println("***"); } void changeSavedCalFactor() { float oldCalibrationValue = LoadCell.getCalFactor(); boolean _resume = false; Serial.println("***"); Serial.print("Current value is: "); Serial.println(oldCalibrationValue); Serial.println("Now, send the new value from serial monitor, i.e. 696.0"); float newCalibrationValue; while (_resume == false) { if (Serial.available() > 0) { newCalibrationValue = Serial.parseFloat(); if (newCalibrationValue != 0) { Serial.print("New calibration value is: "); Serial.println(newCalibrationValue); LoadCell.setCalFactor(newCalibrationValue); _resume = true; } } } _resume = false; Serial.print("Save this value to EEPROM adress "); Serial.print(calVal_eepromAdress); Serial.println("? y/n"); while (_resume == false) { if (Serial.available() > 0) { char inByte = Serial.read(); if (inByte == 'y') { #if defined(ESP8266)|| defined(ESP32) EEPROM.begin(512); #endif EEPROM.put(calVal_eepromAdress, newCalibrationValue); #if defined(ESP8266)|| defined(ESP32) EEPROM.commit(); #endif EEPROM.get(calVal_eepromAdress, newCalibrationValue); Serial.print("Value "); Serial.print(newCalibrationValue); Serial.print(" saved to EEPROM address: "); Serial.println(calVal_eepromAdress); _resume = true; } else if (inByte == 'n') { Serial.println("Value not saved to EEPROM"); _resume = true; } } } Serial.println("End change calibration value"); Serial.println("***"); } Tylko uprzedzam, pisałem to na sucho, więc może być jakiś błąd, aczkolwiek logikę masz wyjaśnioną powyżej Powiem szczerze... nic z tego nie kumam... kurcze próbuję Ojcu ułatwić pakowanie miodu do słoików a sam sobie utrudniam życie... nie daje mi to spać po nocach nie myślałem że to takie trudne albo skomplikowane... chyba wolę konstruować niż programować... spawarka łatwiejsza w obsłudze Dzieki za pomoc
H1M4W4R1 Listopad 24, 2021 Udostępnij Listopad 24, 2021 3 godziny temu, Krisu880 napisał: Powiem szczerze... nic z tego nie kumam... kurcze próbuję Ojcu ułatwić pakowanie miodu do słoików a sam sobie utrudniam życie... nie daje mi to spać po nocach nie myślałem że to takie trudne albo skomplikowane... chyba wolę konstruować niż programować... spawarka łatwiejsza w obsłudze Dlatego napisałem ostrzeżenie, że pisane na sucho... Byłem po robocie, dlatego tam wylądowały plusy, polecam zakomentować tą linijkę, bo to tylko wyrzucenie danych do seriala, ewentualnie to co ma plusy rozdzielić na trzy wykonania tej samej metody Serial.write("Odczyt z wagi"); Serial.write(i); Serial.write("\r\n");
Krisu880 Listopad 24, 2021 Udostępnij Listopad 24, 2021 11 godzin temu, H1M4W4R1 napisał: Dlatego napisałem ostrzeżenie, że pisane na sucho... Byłem po robocie, dlatego tam wylądowały plusy, polecam zakomentować tą linijkę, bo to tylko wyrzucenie danych do seriala, ewentualnie to co ma plusy rozdzielić na trzy wykonania tej samej metody Serial.write("Odczyt z wagi"); Serial.write(i); Serial.write("\r\n"); Podmieniłem te wpisy ale udało się wgrać dopiero po usunięciu linijki SERIAL.write(i); inaczej wywala ciągle błąd przy wgrywaniu... teraz widzę jaki jestem zielony w tym wszystkim:( waga dziala a i tak nie uruchamia przekaźnika do elektrozaworu Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), Płytka:"Arduino Uno" C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries -libraries C:\Users\krist\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10813 -build-path C:\Users\krist\AppData\Local\Temp\arduino_build_572938 -warnings=default -build-cache C:\Users\krist\AppData\Local\Temp\arduino_cache_968761 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -verbose C:\Users\krist\Documents\Arduino\Poprawiona_Waga_z_Botland\Poprawiona_Waga_z_Botland.ino C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\arduino-builder -compile -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries -libraries C:\Users\krist\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10813 -build-path C:\Users\krist\AppData\Local\Temp\arduino_build_572938 -warnings=default -build-cache C:\Users\krist\AppData\Local\Temp\arduino_cache_968761 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr -verbose C:\Users\krist\Documents\Arduino\Poprawiona_Waga_z_Botland\Poprawiona_Waga_z_Botland.ino Using board 'uno' from platform in folder: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr Using core 'arduino' from platform in folder: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr Detecting libraries used... "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE Alternatives for HX711_ADC.h: [[email protected]] ResolveLibrary(HX711_ADC.h) -> candidates: [[email protected]] "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\krist\\Documents\\Arduino\\libraries\\HX711_ADC-master\\src" "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE Alternatives for EEPROM.h: [[email protected]] ResolveLibrary(EEPROM.h) -> candidates: [[email protected]] "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\krist\\Documents\\Arduino\\libraries\\HX711_ADC-master\\src" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\libraries\\EEPROM\\src" "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp" -o nul -DARDUINO_LIB_DISCOVERY_PHASE Using cached library dependencies for file: C:\Users\krist\Documents\Arduino\libraries\HX711_ADC-master\src\HX711_ADC.cpp Generating function prototypes... "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\krist\\Documents\\Arduino\\libraries\\HX711_ADC-master\\src" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\libraries\\EEPROM\\src" "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp" -o "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\preproc\\ctags_target_for_gcc_minus_e.cpp" -DARDUINO_LIB_DISCOVERY_PHASE "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\preproc\\ctags_target_for_gcc_minus_e.cpp" Kompilowanie szkicu... "C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\krist\\Documents\\Arduino\\libraries\\HX711_ADC-master\\src" "-IC:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\\hardware\\arduino\\avr\\libraries\\EEPROM\\src" "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp" -o "C:\\Users\\krist\\AppData\\Local\\Temp\\arduino_build_572938\\sketch\\Poprawiona_Waga_z_Botland.ino.cpp.o" C:\Users\krist\Documents\Arduino\Poprawiona_Waga_z_Botland\Poprawiona_Waga_z_Botland.ino: In function 'void loop()': Poprawiona_Waga_z_Botland:82:21: error: call of overloaded 'write(float&)' is ambiguous Serial.write(i); // wyrzucenie danych do seriala ^ In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:233:0, from C:\Users\krist\AppData\Local\Temp\arduino_build_572938\sketch\Poprawiona_Waga_z_Botland.ino.cpp:1: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:129:20: note: candidate: virtual size_t HardwareSerial::write(uint8_t) virtual size_t write(uint8_t); ^~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:130:19: note: candidate: size_t HardwareSerial::write(long unsigned int) inline size_t write(unsigned long n) { return write((uint8_t)n); } ^~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:131:19: note: candidate: size_t HardwareSerial::write(long int) inline size_t write(long n) { return write((uint8_t)n); } ^~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:132:19: note: candidate: size_t HardwareSerial::write(unsigned int) inline size_t write(unsigned int n) { return write((uint8_t)n); } ^~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:133:19: note: candidate: size_t HardwareSerial::write(int) inline size_t write(int n) { return write((uint8_t)n); } ^~~~~ Poprawiona_Waga_z_Botland:84:5: error: expected ';' before '}' token } ^ Użycie biblioteki HX711_ADC-master w wersji 1.2.6 z folderu: C:\Users\krist\Documents\Arduino\libraries\HX711_ADC-master Użycie biblioteki EEPROM w wersji 2.0 z folderu: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\libraries\EEPROM exit status 1 call of overloaded 'write(float&)' is ambiguous 11 godzin temu, H1M4W4R1 napisał: Dlatego napisałem ostrzeżenie, że pisane na sucho... Byłem po robocie, dlatego tam wylądowały plusy, polecam zakomentować tą linijkę, bo to tylko wyrzucenie danych do seriala, ewentualnie to co ma plusy rozdzielić na trzy wykonania tej samej metody Serial.write("Odczyt z wagi"); Serial.write(i); Serial.write("\r\n"); Tutaj jest kod błedu
farmaceuta Listopad 25, 2021 Udostępnij Listopad 25, 2021 Serial.write jako argumenty przyjmuje bajt lub tablice bajtow lub string...musisz tego floata przerobic na tablice 4 bajtow i tak ja wyslac...a po drugiej stronie musisz zlozyc ta tablice w tego floata...
Krisu880 Listopad 25, 2021 Udostępnij Listopad 25, 2021 34 minuty temu, farmaceuta napisał: Serial.write jako argumenty przyjmuje bajt lub tablice bajtow lub string...musisz tego floata przerobic na tablice 4 bajtow i tak ja wyslac...a po drugiej stronie musisz zlozyc ta tablice w tego floata... Dzięki za odpowiedź Wieczorem spróbuję coś podziałać Choć nie ukrywam że to brzmi jak jakiś zaklęcie a całe to programowanie to czary mary
farmaceuta Listopad 25, 2021 Udostępnij Listopad 25, 2021 3 minuty temu, Krisu880 napisał: Dzięki za odpowiedź Wieczorem spróbuję coś podziałać Choć nie ukrywam że to brzmi jak jakiś zaklęcie a całe to programowanie to czary mary Nie no wszystko przyjdzie...ale z czasem a nie odrazu jakis przyklad Ci tam wrzuce pozniej, moze zadziala... 1
ethanak Listopad 25, 2021 Udostępnij Listopad 25, 2021 Jako stary czarodziej zgodzę się - programowanie i magia mają wiele wspólnego. Tyle, że na opanowanie podstaw programowania potrzebujesz dni, a opanowanie zaklęcia "programie napisz się sam" zajmuje co najmniej 200 lat pilnego studiowania ksiąg magicznych... 2
Krisu880 Listopad 25, 2021 Udostępnij Listopad 25, 2021 2 godziny temu, ethanak napisał: Jako stary czarodziej zgodzę się - programowanie i magia mają wiele wspólnego. Tyle, że na opanowanie podstaw programowania potrzebujesz dni, a opanowanie zaklęcia "programie napisz się sam" zajmuje co najmniej 200 lat pilnego studiowania ksiąg magicznych... A ja jestem zwykłym konstruktorem... coś jak złota rączka a do programowania moje zdolności manualne się nie przydają. Ktoś udziela lekcji online?
Krisu880 Listopad 25, 2021 Udostępnij Listopad 25, 2021 5 godzin temu, farmaceuta napisał: Nie no wszystko przyjdzie...ale z czasem a nie odrazu jakis przyklad Ci tam wrzuce pozniej, moze zadziala... Dziekuję bardzo, tylko zaznaczam... jestem laikiem... więc proszę ŁOPATOLOGICZNIE
H1M4W4R1 Listopad 25, 2021 Udostępnij Listopad 25, 2021 5 godzin temu, ethanak napisał: Jako stary czarodziej zgodzę się - programowanie i magia mają wiele wspólnego. Tyle, że na opanowanie podstaw programowania potrzebujesz dni, a opanowanie zaklęcia "programie napisz się sam" zajmuje co najmniej 200 lat pilnego studiowania ksiąg magicznych... PROGRAMIE NAPISZ SIĘ SAM 3 godziny temu, Krisu880 napisał: Ktoś udziela lekcji online? To nie takie proste... Zależy czego chcesz się nauczyć
farmaceuta Listopad 25, 2021 Udostępnij Listopad 25, 2021 //Nadawanie typedef union { float cos; byte tab[4]; } flo; flo X; void setup() { // put your setup code here, to run once: X.cos = 11.7; //wartosc do wyslania Serial.begin(115200); Serial.write(X.tab,4); } void loop(){ }
farmaceuta Listopad 25, 2021 Udostępnij Listopad 25, 2021 Tylko tak...trzeba tam jakas "synchronizacje" zrobic zeby pobrac ta tablice w odpowiednim momencie... czekajcie...chyba sie zakrecilem...o co tu chodzi?? Tym serialem wyswietlamy dane w monitorze czy przesylamy do innego urzadzenia??
H1M4W4R1 Listopad 25, 2021 Udostępnij Listopad 25, 2021 (edytowany) 2 minuty temu, farmaceuta napisał: czekajcie...chyba sie zakrecilem...o co tu chodzi?? Tym serialem wyswietlamy dane w monitorze czy przesylamy do innego urzadzenia?? Miał służyć za debuga, więc wyświetlanie Zamiast Serial.write(i) trzeba by użyć Serial.print(i, 2) i powinno zadziałać z float'em Edytowano Listopad 25, 2021 przez H1M4W4R1
farmaceuta Listopad 25, 2021 Udostępnij Listopad 25, 2021 (edytowany) 5 minut temu, H1M4W4R1 napisał: Miał służyć za debuga, więc wyświetlanie Zamiast Serial.write(i) trzeba by użyć Serial.print(i, 2) i powinno zadziałać z float'em Dokladnie tak!... z tym ze liczba 2 oznacza ilosc miejsc po przecinku do wyswietlenia...(to tak zeby kolega wiedzial) He..a mi sie cos ubzduralo ze kolega chce to w kosmos przesylac do jakiegos satelity...wiec ostatecznie bedzie Serial.print(i,2); I powinno juz chulac... Edytowano Listopad 25, 2021 przez farmaceuta
Krisu880 Listopad 25, 2021 Udostępnij Listopad 25, 2021 Panowie, dzieki, fajnie, wgrało się ale wyświetla mi tylko w monitorze portu odczyt wagi a ja bym chciał żeby moj przekaźnik do elektrozaworu zadziałał... NZ elektrozawór powinien się otwierać przy masie około 325g i zamykać przy masie 1325 g a przekaźnik induino mam podpięty pod Digitalny led pin ~3
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »