Skocz do zawartości

Podłączenie przekaźnika - problem


deprimo

Pomocna odpowiedź

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 🙂

prntscrn.jpg

Link do komentarza
Share on other sites

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");

 

Link do komentarza
Share on other sites

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: [HX711_ADC-master@1.2.6]
ResolveLibrary(HX711_ADC.h)
  -> candidates: [HX711_ADC-master@1.2.6]
"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: [EEPROM@2.0]
ResolveLibrary(EEPROM.h)
  -> candidates: [EEPROM@2.0]
"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

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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

Link do komentarza
Share on other sites

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...

  • Pomogłeś! 1
Link do komentarza
Share on other sites

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...

 

  • Lubię! 2
Link do komentarza
Share on other sites

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?  😁😁😁

Link do komentarza
Share on other sites

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 😄

Link do komentarza
Share on other sites

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

2129717092_2021-11-2517-32-55.thumb.gif.8deea2ac3f6371251c4862d1a8982dea.gif

3 godziny temu, Krisu880 napisał:

Ktoś udziela lekcji online?  😁😁😁

To nie takie proste... Zależy czego chcesz się nauczyć 😛 

Link do komentarza
Share on other sites

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 przez H1M4W4R1
Link do komentarza
Share on other sites

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 przez farmaceuta
Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.