Skocz do zawartości

Komputer do kompilacji arduino ide


SOYER

Pomocna odpowiedź

@SOYER Jeśli podasz linka do projektu który kompilujesz 20min, albo chociaż do czegoś podobnego to może porównamy czasy kompilacji na rożnych konfiguracjach. Wtedy będzie łatwiej zdecydować co naprawdę potrzebujesz.

Link do komentarza
Share on other sites

Przepraszam, nie ten znak mi wskoczył 😅. Oczywiście chodziło mi o <10.

14 minut temu, SOYER napisał:

Jak ma naklejkę to jest wydajny i nadaje się do wszystkiego, tak?

Z tego co wiem to tak.

Link do komentarza
Share on other sites

5 godzin temu, Elvis napisał:

@SOYER Jeśli podasz linka do projektu który kompilujesz 20min, albo chociaż do czegoś podobnego to może porównamy czasy kompilacji na rożnych konfiguracjach. Wtedy będzie łatwiej zdecydować co naprawdę potrzebujesz.

Świetny pomysł, 3 biblioteki do zainstalowania i można kompilować. 

Robimy konkurs.

Szkic:

/////////////////////////////////////  192.168.4.1/update    //////////////////////////////
#include <SuplaDevice.h>//////https://github.com/SUPLA
#include <supla/sensor/DS18B20.h>
#include <supla/control/relay.h>
#include <supla/control/virtual_relay.h>
#include <supla/control/button.h>
#include <supla/sensor/binary.h>
#include <supla/network/esp_wifi.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/network/html/custom_parameter.h>
#include <supla/network/html/custom_text_parameter.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>
#include <supla/storage/eeprom.h>
#include <HTTPUpdateServer.h>                     //OTA
#include <Timers.h>   ////////url=https://github.com/nettigo/Timers
#include <supla/clock/clock.h> //int suplaClock.getYear(); getMonth(); getDay(); getDayOfWeek();1 - Sunday, 2 - Monday getHour(); getMin(); getSec();
#include <supla/sensor/impulse_counter.h>
#include <supla/device/notifications.h>
#include <supla/sensor/thermometer.h>

const char PARAM1[] = "param1";
const char PARAM2[] = "param2";

Supla::Clock suplaClock;
Supla::Eeprom eeprom;
Supla::ESPWifi wifi;
HTTPUpdateServer httpUpdater;
#include <Ephemeris.h> ////https://github.com/MarScaper/ephemeris

#define LEDC_0     0
#define LEDC_1     1
#define LEDC_2     2
#define LEDC_TIMER_12_BIT  12
#define LEDC_BASE_FREQ     5000
#define LED_PIN0              33
#define LED_PIN1            26
#define LED_PIN2            27

int hoursR, minutesR, hoursS, minutesS;
int offsetTime = 20;
boolean night = 0;
char buf[200] = {};
int minutyZ, godzinyZ, minutyW, godzinyW;

int bright0 = 1;
int bright1 = 1;
int bright2 = 1;
int fadeAmount = 3;
int proceduraLed = 0;
int ledDone0 = 1;
int ledDone00 = 1;
int ledDone1 = 1;
int ledDone2 = 1;
//int vrON = 0;
int vr2 = 0;
int vr3 = 0;
int vr4 = 0;
int vr5 = 0;
int vr6 = 0;
int vr7 = 0;
int vr8 = 0;
int vr9 = 0;
int vr10 = 0;
#define praleczka 12
#define wodomierz 34
#define BUTTON_CFG_RELAY_GPIO 35
#define ONE_WIRE 13
#define kran_wjazd 32
#define bramaWjazdRelay 21
#define extraRelay 19
#define lampaPlacRelay 18
#define kompresorRelay 5
#define czujnikRuchu 14
int chLicznikWody;
int progWody = 30;
int pralkaSMS = 0;
enum PIERWSZE {JEDEN = 1, DWA, TRZY, CZTERY, PIEC, SZESC, SIEDEM, OSIEM, DZIEWIEC, DZIESIEC, JEDENASCIE, DWANASCIE};
int lampyStan = JEDEN;

void printRiseAndSet(FLOAT latitude, FLOAT longitude, int UTCOffset, int day, int month, int year)
{
  Ephemeris::setLocationOnEarth(latitude, longitude);
  SolarSystemObject sun = Ephemeris::solarSystemObjectAtDateAndTime(Sun, day, month, year, 0, 0, 0);

  if ( sun.riseAndSetState == RiseAndSetOk )
  {
    
    FLOAT seconds;
    Ephemeris::floatingHoursToHoursMinutesSeconds(Ephemeris::floatingHoursWithUTCOffset(sun.rise, UTCOffset), &hoursR, &minutesR, &seconds);
    Serial.print("  Wschod: ");
    Serial.print(hoursR);
    Serial.print("h");
    Serial.print(minutesR);
    Serial.print("m");
    Ephemeris::floatingHoursToHoursMinutesSeconds(Ephemeris::floatingHoursWithUTCOffset(sun.set, UTCOffset), &hoursS, &minutesS, &seconds);
    Serial.print("  Zachod:  ");
    Serial.print(hoursS);
    Serial.print("h");
    Serial.print(minutesS);
    Serial.print("m");
  }
  Serial.println();
}

int pralkaOdczyt;
const int analogInPin = praleczka;

class AnalogValue : public Supla::Sensor::Thermometer {
  public:
    AnalogValue(int pin) : pin(pin) {
    }

    void onInit() {
      pinMode(pin, INPUT);
      channel.setNewValue(getValue());
    }
    double getValue() {
      return analogRead(pin);
    }
  protected:
    int pin;
};

Timer sekund10;
Timer mili40;
Timer minut1;
Timer sek075;
Timer minut076;
Timer sek35;
Timer minut3;


Supla::LittleFsConfig configSupla;
Supla::EspWebServer suplaServer;
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Sensor::ImpulseCounter *licznikWody = nullptr;
Supla::Control::Relay *bramaWjazd = nullptr;
Supla::Control::Relay *extra = nullptr;
Supla::Control::Relay *lampaPlac = nullptr;
Supla::Control::Relay *kompresor = nullptr;
Supla::Sensor::Binary *kranWjazd = nullptr;
Supla::Control::VirtualRelay *vrelay1 = nullptr;
Supla::Control::VirtualRelay *vrelay2 = nullptr;
Supla::Control::VirtualRelay *vrelay3 = nullptr;
Supla::Control::VirtualRelay *vrelay4 = nullptr;
Supla::Control::VirtualRelay *vrelay5 = nullptr;
Supla::Control::VirtualRelay *vrelay6 = nullptr;
Supla::Control::VirtualRelay *vrelay7 = nullptr;
Supla::Control::VirtualRelay *vrelay8 = nullptr;
Supla::Control::VirtualRelay *vrelay9 = nullptr;
Supla::Control::VirtualRelay *vrelay10 = nullptr;
Supla::Clock clock1;

void pralka() {
  pralkaOdczyt = analogRead(analogInPin);
  if ((pralkaOdczyt < 30) && (!pralkaSMS)) {
    vrelay1->turnOff();
    Supla::Notification::Send(-1, "PRALKA", "Koniec pracy");
    pralkaSMS=1;
  }
  else {
    vrelay1->turnOn();
    pralkaSMS=0;
  }
}

void ledcAnalogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255) {
  // calculate duty, 4095 from 2 ^ 12 - 1
  uint32_t duty = (4095 / valueMax) * min(value, valueMax);

  // write duty to LEDC
  ledcWrite(channel, duty);
}


void setup()
{
  Serial.begin(9600);
  pinMode(czujnikRuchu, INPUT);
  SuplaDevice.addClock(new Supla::Clock);
  auto clock1 = SuplaDevice.getClock();
  ledcSetup(LEDC_0, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);
  ledcAttachPin(LED_PIN0, LEDC_0);
  ledcSetup(LEDC_1, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);
  ledcAttachPin(LED_PIN1, LEDC_1);
  ledcSetup(LEDC_2, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);
  ledcAttachPin(LED_PIN2, LEDC_2);

  httpUpdater.setup(suplaServer.getServerPtr(), "/update");
  new Supla::Html::CustomTextParameter(PARAM1, "Wpisz tekst", 100);
  new Supla::Html::CustomParameter(PARAM2, "Wpisz liczbę");
  auto buttonCfgRelay =
    new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, true, true);
  Supla::Notification::RegisterNotification(-1);

  new Supla::Sensor::DS18B20(ONE_WIRE);
  licznikWody = new Supla::Sensor::ImpulseCounter(wodomierz, true, false, 100);///D5
  extra = new Supla::Control::Relay(extraRelay, false);
  lampaPlac = new Supla::Control::Relay(lampaPlacRelay, false);
  bramaWjazd = new Supla::Control::Relay(bramaWjazdRelay, false);
  kompresor = new Supla::Control::Relay(kompresorRelay, false);
  kranWjazd = new Supla::Sensor::Binary(kran_wjazd, false);// false = pullUp

  new AnalogValue(analogInPin);
  vrelay1 = new Supla::Control::VirtualRelay(); // pralka ikona
  vrelay2 = new Supla::Control::VirtualRelay();
  vrelay3 = new Supla::Control::VirtualRelay();
  vrelay4 = new Supla::Control::VirtualRelay();
  vrelay5 = new Supla::Control::VirtualRelay();
  vrelay6 = new Supla::Control::VirtualRelay();
  vrelay7 = new Supla::Control::VirtualRelay();
  vrelay8 = new Supla::Control::VirtualRelay();
  vrelay9 = new Supla::Control::VirtualRelay();
  vrelay10 = new Supla::Control::VirtualRelay();

  buttonCfgRelay->configureAsConfigButton(&SuplaDevice);
  // configure defualt Supla CA certificate
  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
  SuplaDevice.begin();

if (Supla::Storage::ConfigInstance()->getString(PARAM1, buf, 200)) {
    SUPLA_LOG_DEBUG(" **** Param[%s]: %s", PARAM1, buf);
  } else {
    SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM1);
  }
  
  if (Supla::Storage::ConfigInstance()->getInt32(PARAM2, &offsetTime)) {
    SUPLA_LOG_DEBUG(" **** Param[%s]: %d", PARAM2, offsetTime);
  } else {
    SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM2);
  }
  
  sekund10.begin(9985);
  mili40.begin(40);
  minut1.begin(59998);
  sek075.begin(500);
  sek35.begin(38989);
  minut3.begin(60001);
}

void loop() {  ////////////LLLLLLLOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP////////////////////
  SuplaDevice.iterate();
  //pralka();
  pobierzCzas();
  ledovo();
  kontrolaWody();
  vRelaysRead();
}

void pobierzCzas() {
  if (sekund10.available()) {
    Serial.print("offsetTime:    ");
  Serial.println(offsetTime);
  Serial.print("buforek:    ");
  Serial.println(buf);
  Serial.print("gW: ");
  Serial.print(godzinyW);
  Serial.print(" : ");
  Serial.println(minutyW);
  Serial.print("gZ: ");
  Serial.print(godzinyZ);
  Serial.print(" : ");
  Serial.println(minutyZ);
  printRiseAndSet(50.0169,    18.8098,  +1,  suplaClock.getDay(), suplaClock.getMonth(), suplaClock.getYear());
   if((minutesS + offsetTime) > 59){
    minutyZ = ((minutesS + offsetTime) -60);
    godzinyZ = (hoursS +1);
   }
    if((minutesR - offsetTime) < 1){
    minutyW = ((minutesR - offsetTime) +60);
    godzinyW = (hoursR -1);
   }
   if((clock1.getHour() >= godzinyZ) && (clock1.getMin() >= minutyZ)){
      night = true;
      Serial.println("godzina i minuta wyższa od zachodu i nizsza od wschodu");
    }
    else if((clock1.getHour() <= godzinyW) && (clock1.getMin() <= minutyW)){
      night = true;
      Serial.println("godzina i minuta wyższa od zachodu i nizsza od wschodu");
    }
    else{
      night = false;
      Serial.println("godzina i minuta NIE JEST wyższa od zachodu i nizsza od wschodu");
    }
    sekund10.restart();
  }
}
void kontrolaWody() {
  if (minut1.available()) {
    if (licznikWody->getCounter() > (chLicznikWody + progWody)) {
      Supla::Notification::Send(-1, "WODOMIERZ", "Przekroczono limit wylanej wody w 1 minutę");
    }
    chLicznikWody = licznikWody->getCounter();
    minut1.restart();
  }
}
void vRelaysRead() {
  if (vrelay2->isOn()) {
    if (vr2 == 0) {
      vr2 = 1;
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = DWA;
    }
    led();
  }
   else if (!vrelay2->isOn()) {
    vr2 = 0;
  }
  if (vrelay3->isOn()) {
    if (vr3 == 0) {
      vr3 = 1;
      sek35.restart();
      vrelay2->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = TRZY;
      ledDone0 = 0;
      ledDone00 = 1;
    }
    led();
  }
  else if (!vrelay3->isOn()) {
    vr3 = 0;
  }
  if (vrelay4->isOn()) {           /////closeningGate
    if (vr4 == 0) {
      sek35.restart();
      vr4 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = CZTERY;
      fadeAmount = 15;
      bright1 = 255;
      bright2 = 255;
      ledcAnalogWrite(LEDC_1, bright1);
      ledcAnalogWrite(LEDC_2, bright2);
      ledDone0 = 0;
      ledDone00 = 1;
      ledDone1 = 0;
      ledDone2 = 0;
    }
    led();
  }
  else if (!vrelay4->isOn()) {
    vr4 = 0;
  }
  /*if (!kranWjazd->getValue()) {
    vr4 = 0;
  }*/
  if (vrelay5->isOn()) {
    if (vr5 == 0) {
      vr5 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = PIEC;
      bright0 = 0;
      ledDone0 = 0;
    }
    led();
  }
  else if (!vrelay5->isOn()) {
    vr5 = 0;
  }
  if (vrelay6->isOn()) {
    if (vr6 == 0) {
      vr6 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = SZESC;
      bright0 = 255;
      fadeAmount = 15;
      ledcAnalogWrite(LEDC_0, bright0);
      ledcAnalogWrite(LEDC_1, bright0);
      ledcAnalogWrite(LEDC_2, bright0);
      ledDone0 = 0;
    }
    led();
  }
  else if (!vrelay6->isOn()) {
    vr6 = 0;
  }
  if (vrelay7->isOn()) {///fade up 1
    if (vr7 == 0) {
      vr7 = 1;
      minut3.restart();
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = SIEDEM;
      fadeAmount = 1;
      bright0 = 0;
      ledDone0 = 0;
    }
    led();
  }
  else if (!vrelay7->isOn()) {
    vr7 = 0;
  }
  if (vrelay8->isOn()) {
    if (vr8 == 0) {
      vr8 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay9->turnOff();
      vrelay10->turnOff();
      lampyStan = OSIEM;
      fadeAmount = 15;
      bright0 = 255;
      ledDone0 = 0;
    }
    led();
  }
  else if (!vrelay8->isOn()) {
    vr8 = 0;
  }
  if (vrelay9->isOn()) {
    if (vr9 == 0) {
      vr9 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay10->turnOff();
      lampyStan = DZIEWIEC;
      ledDone0 = 0;
      ledDone1 = 1;
    }
    led();
  }
  else if (!vrelay9->isOn()) {
    vr9 = 0;
  }
  if (vrelay10->isOn()) {   ////////////openingGate
    if (vr10 == 0) {
      sek35.restart();
      vr10 = 1;
      vrelay2->turnOff();
      vrelay3->turnOff();
      vrelay4->turnOff();
      vrelay5->turnOff();
      vrelay6->turnOff();
      vrelay7->turnOff();
      vrelay8->turnOff();
      vrelay9->turnOff();
      fadeAmount = 1;
      bright0 = 0;
      bright1 = 0;
      bright2 = 0;
      ledDone0 = 0;
      ledDone00 = 1;
      ledDone1 = 0;
      ledDone2 = 0;
      lampyStan = DZIESIEC;
    }
    led();
  }
   else if (!vrelay10->isOn()) {
    vr10 = 0;
  }
  /*if (!kranWjazd->getValue()) {
    vr10 = 0;
  }*/
  if ((!vr2) && (!vr3) && (!vr4) && (!vr5) && (!vr6) && (!vr7) && (!vr8) && (!vr9) && (!vr10)) {
    lampyStan = JEDEN;
    led();
  }
}
void led() { 
  Serial.println(lampyStan);
  Serial.print("ledDone1:");
            Serial.println(ledDone1);
            Serial.print("ledDone2:");
            Serial.println(ledDone2);
  switch (lampyStan) {
    case JEDEN:                         ////wyłączenie wszystkiego naraz
      ledcAnalogWrite(LEDC_0, 0);
      ledcAnalogWrite(LEDC_1, 0);
      ledcAnalogWrite(LEDC_2, 0);
      break;
    case DWA:                             ////włączenie wszystkiego naraz
      ledcAnalogWrite(LEDC_0, 255);
      ledcAnalogWrite(LEDC_1, 255);
      ledcAnalogWrite(LEDC_2, 255);
      break;
    case TRZY:                                 ////miganie 1
      if (!sek35.available()) {
       if ((sek075.available()) && (!ledDone0)) {
          ledcAnalogWrite(LEDC_0, 0);
          ledDone0 = 1;
          ledDone00 = 0;
          sek075.restart();
        }
        if ((sek075.available()) && (!ledDone00)) {
          ledcAnalogWrite(LEDC_0, 255);
          ledDone00 = 1;
          ledDone0 = 0;
          sek075.restart();
        } 
      }
      if ((sek075.available()) && (!ledDone0)) {
        vrelay3->turnOff();
      }
      break;
    case CZTERY:                                /////closeGate
      if (!sek35.available()) {
        if (!ledDone2) {
          if (mili40.available()) {
            if (bright2 < 150) {
              fadeAmount = 1;
            }
            ledcAnalogWrite(LEDC_2, bright2);
            bright2 = bright2 - fadeAmount;
            mili40.restart();
            if (bright2 <= 0) {
              ledcAnalogWrite(LEDC_2, 0);
              fadeAmount = 15;
              ledDone2 = 1;
            }
          }
        }
        if ((ledDone2) && (!ledDone1)) {
          if (mili40.available()) {
            if (bright1 < 150) {
              fadeAmount = 1;
            }
            ledcAnalogWrite(LEDC_1, bright1);
            bright1 = bright1 - fadeAmount;
            mili40.restart();
            if (bright1 <= 0) {
              ledcAnalogWrite(LEDC_1, 0);
              ledDone1 = 1;
            }
          }
        }
        if ((sek075.available()) && (!ledDone0)) {
          ledcAnalogWrite(LEDC_0, 0);
          ledDone0 = 1;
          ledDone00 = 0;
          sek075.restart();
        }
        if ((sek075.available()) && (!ledDone00)) {
          ledcAnalogWrite(LEDC_0, 255);
          ledDone00 = 1;
          ledDone0 = 0;
          sek075.restart();
        }
      }
      if ((sek35.available()) || (!kranWjazd->getValue())) {
        vrelay4->turnOff();
        vrelay2->turnOff();
        vr10=0;
        lampyStan = JEDEN;
      }
      break;
    case PIEC:                                /////rozjaśnienie naraz 3 stringów
      if (!ledDone0) {
        if (mili40.available()) {
          ledcAnalogWrite(LEDC_0, bright0);
          ledcAnalogWrite(LEDC_1, bright0);
          ledcAnalogWrite(LEDC_2, bright0);
          bright0 = bright0 + fadeAmount;
          mili40.restart();
          if (bright0 == 255) {
            ledDone0 = 1;
          }
        }
      }
      break;
    case SZESC:                                /////ściemnienie naraz 3 stringów
      if (!ledDone0) {
        if (mili40.available()) {
          if (bright0 < 150) {
              fadeAmount = 1;
            }
            if (bright1 < 150) {
              fadeAmount = 1;
            }
            if (bright2 < 150) {
              fadeAmount = 1;
            }
          ledcAnalogWrite(LEDC_0, bright0);
          ledcAnalogWrite(LEDC_1, bright0);
          ledcAnalogWrite(LEDC_2, bright0);
          bright0 = bright0 - fadeAmount;
          mili40.restart();
          if (bright0 == 0) {
            ledcAnalogWrite(LEDC_0, 0);
            ledcAnalogWrite(LEDC_1, 0);
            ledcAnalogWrite(LEDC_2, 0);
            ledDone0 = 1;
            vrelay6->turnOff();
          }
        }
      }
      break;
    case SIEDEM:                                 ////rozjaśnienie przed bramą
     if(!minut3.available()){ 
      if (!ledDone0) {
        if (bright0 > 150) {
              fadeAmount = 15;
            }
        if (mili40.available()) {
          ledcAnalogWrite(LEDC_0, bright0);
          bright0 = bright0 + fadeAmount;
          mili40.restart();
          if (bright0 == 255) {
            ledDone0 = 1;
          }
        }
      }
     }
     if(minut3.available()){
      vrelay7->turnOff();
      vrelay8->turnOn();
     }
      break;
    case OSIEM:                                ////ściemnienie przed bramą
      if (!ledDone0) {
        if (mili40.available()) {
          if (bright0  < 150) {
              fadeAmount = 1;
            }
          ledcAnalogWrite(LEDC_0, bright0);
          bright0 = bright0 - fadeAmount;
          mili40.restart();
          if (bright0 == 0) {
            ledcAnalogWrite(LEDC_0, 0);
            ledDone0 = 1;
            vrelay8->turnOff();
          }
        }
      }
      break;
    case DZIEWIEC:                                ////miganie
      if ((sek075.available()) && (!ledDone0)) {
        ledcAnalogWrite(LEDC_0, 0);
        ledcAnalogWrite(LEDC_1, 0);
        ledcAnalogWrite(LEDC_2, 0);
        ledDone0 = 1;
        ledDone1 = 0;
        sek075.restart();
      }
      if ((sek075.available()) && (!ledDone1)) {
        ledcAnalogWrite(LEDC_0, 255);
        ledcAnalogWrite(LEDC_1, 255);
        ledcAnalogWrite(LEDC_2, 255);
        ledDone1 = 1;
        ledDone0 = 0;
        sek075.restart();
      }
      break;
    case DZIESIEC:                                ////open gate
      if (!sek35.available()) {
        if (!ledDone1) {
          if (mili40.available()) {
            if (bright1 > 150) {
              fadeAmount = 15;
            }
            ledcAnalogWrite(LEDC_1, bright1);
            bright1 = bright1 + fadeAmount;
            mili40.restart();
            if (bright1 >= 255) {
              fadeAmount = 1;
              ledDone1 = 1;
            }
          }
        }
        if ((ledDone1) && (!ledDone2)) {
          Serial.println("led2");
          if (mili40.available()) {
            if (bright2 > 150) {
              fadeAmount = 15;
            }
            ledcAnalogWrite(LEDC_2, bright2);
            bright2 = bright2 + fadeAmount;
            mili40.restart();
            if (bright2 >= 255) {
              ledDone2 = 1;
            }
          }
        }
        if ((sek075.available()) && (!ledDone0)) {
          ledcAnalogWrite(LEDC_0, 0);
          ledDone0 = 1;
          ledDone00 = 0;
          sek075.restart();
        }
        if ((sek075.available()) && (!ledDone00)) {
          ledcAnalogWrite(LEDC_0, 255);
          ledDone00 = 1;
          ledDone0 = 0;
          sek075.restart();
        }
      }
      if (sek35.available()) {
        vrelay10->turnOff();
        vrelay2->turnOn();
        vr4=0;
      }
      break;
  }
}
void ledovo() {
  otwieranieWjazd();
  zamykanieWjazd();
  mooveSensor();
}
void otwieranieWjazd(){
  if((bramaWjazd->isOn()) && (!kranWjazd->getValue())) {///&& (night))
    vrelay10->turnOn();
  }
  }
void zamykanieWjazd() {
  if ((bramaWjazd->isOn()) && (kranWjazd->getValue()))  {//&& (night))
    if(lampyStan==DWA){
     vrelay4->turnOn();
    }
    else{
      vrelay3->turnOn();
    }
  }
}
void mooveSensor(){
  if((digitalRead(czujnikRuchu)==HIGH) && (lampyStan==JEDEN)) {      //&& (night))
    vrelay7->turnOn();
  }
  else if((digitalRead(czujnikRuchu)==HIGH) && (lampyStan==OSIEM)) {      //&& (night))
    vrelay8->turnOff();
    vrelay7->turnOn();
    vr7 = 1;
    minut3.restart();
    lampyStan=SIEDEM;
   }
}

 

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

Miałem jednak głupi pomysł z tymi testami... W każdym razie nauczyłem się jednego - Arduino IDE jest fajne dla małych projektów, ale coś jak Supla to już nie za bardzo. Doinstalowanie wszystkich bibliotek to jakiś koszmar.

@AntekBezak Musisz zmienić target na ESP32 wtedy powinien widzieć HTTPUpdateServer.

Link do komentarza
Share on other sites

W każdym razie po bardzo długiej walce z Arduino IDE udało mi się ten szkic skompilować. Zajmuje to niecałe 40s...

Co prawda na stacjonarnym komputerze i na Ubuntu 20.04, ale chyba nic nie tłumaczy takiej różnicy w czasie kompilacji. 30x to trochę za dużo.

@SOYER Wydaje mi się, że Twój komputer musi być już mocno obciążony, chociaż nie mam pojęcia czym. W każdym razie pewnie zwykła reinstalacja systemu, albo jeszcze lepiej instalacja Linux-a dałaby ogromny przyrost prędkości. Może warto chociaż spróbować zanim kupisz nową maszynę?

I jeszcze jedno - Arduino IDE używa tylko jednego rdzenia. To jakiś koszmar i marnowanie zasobów. Więc kolejna sprawa do poprawki - zamiast wymieniać sprzęt, może zmień oprogramowanie? Nie wiem na co najłatwiej przejść z Arduiono IDE, może PlatformIO? W każdym razie cokolwiek co potrafi użyć kilku rdzeni da ogromny przyrost prędkości.

Link do komentarza
Share on other sites

19 minut temu, Elvis napisał:

Musisz zmienić target na ESP32

To się zmienia tam w tools>boards?

14 minut temu, Elvis napisał:

Co prawda na stacjonarnym komputerze i na Ubuntu 20.04

A jaka specyfikacja?

Link do komentarza
Share on other sites

22 minuty temu, Elvis napisał:

Wydaje mi się, że Twój komputer musi być już mocno obciążony, chociaż nie mam pojęcia czym.

Skomentuję to obrazkiem:

obraz.thumb.png.bc08691b543d0727368fc5a3c29db5f5.png

Mam odpaloną przeglądarkę (Firefox) i program do screenshotów... Ciekawe czemu komputer jest tak obciążony... Oczywiście, że Microsh** 😉 

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

@AntekBezak Tak jak napisałem, najpierw testowałem na stacjonarnym - co prawda na tyle małym, że używam zamiast laptopa, ale zawsze. Komputer składałem z myślą o zabawie FPGA, więc to dość silna konfiguracja na i9-12900K. Wydaje mi się, że trudno porównywać z laptopem (chociaż jeśli ktoś będzie miał podobne wyniki na lapku to bardzo proszę o info, w sumie wolałbym coś poręczniejszego).

Przetestowałem właśnie kompilację na laptopie, który ma już kilka lat (i7, 8-gen). Wyszło mi 1 min 52 sek. Poniżej pełna konfiguracja:

laptop.thumb.png.8a5dc52b4e1672bdf39e7e53e3babb74.png

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

(edytowany)

Hm...

~/Arduino/supela$ time ardu
UWAGA: biblioteka Timers działa na architekturze(/architekturach) avr, sam, samd i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) esp32.
Szkic używa 1193933 bajtów (91%) pamięci programu. Maksimum to 1310720 bajtów.
Zmienne globalne używają 50732 bajtów (15%) pamięci dynamicznej, pozostawiając 276948 bajtów dla zmiennych lokalnych. Maksimum to 327680 bajtów.

Used library      Version Path                                                                                    
SuplaDevice       24.3    /home/ethanak/Arduino/libraries/SuplaDevice                                             
DallasTemperature 3.9.0   /home/ethanak/Arduino/libraries/DallasTemperature                                       
OneWire           2.3.7   /home/ethanak/Arduino/libraries/OneWire                                                 
WiFi              2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/WiFi            
WebServer         2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/WebServer       
HTTPUpdateServer  2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/HTTPUpdateServer
SPIFFS            2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/SPIFFS          
FS                2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/FS              
Update            2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/Update          
Timers            16.4.1  /home/ethanak/Arduino/libraries/Timers-master                                           
Ephemeris         1.0.1   /home/ethanak/Arduino/libraries/Ephemeris                                               
WiFiClientSecure  2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/WiFiClientSecure
EEPROM            2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/EEPROM          
LittleFS          2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/LittleFS        
Ticker            2.0.0   /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13/libraries/Ticker          

Used platform Version Path                                                         
esp32:esp32   2.0.13  /home/ethanak/.arduino15/packages/esp32/hardware/esp32/2.0.13

real	1m22,317s
user	2m31,933s
sys	0m38,550s
$ cat /proc/cpuinfo
  ...
processor	: 7
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
stepping	: 9
microcode	: 0x21
cpu MHz		: 1816.385
cache size	: 8192 KB
physical id	: 0
siblings	: 8
core id		: 3
cpu cores	: 4
apicid		: 7
initial apicid	: 7
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts md_clear flush_l1d
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds mmio_unknown
bogomips	: 7020.78
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

$ free -h
              razem       użyte       wolne    dzielone   buf/cache    dostępne
Pamięć:        15Gi       2,8Gi       6,8Gi       456Mi       5,8Gi        11Gi
Wymiana:        14Gi          0B        14Gi

Kompilacja po wyczyszczeniu cache. Skrypt "ardu" to wrapper do arduino-cli

$ arduino-cli version
arduino-cli  Version: 0.34.2 Commit: 963c1a76 Date: 2023-09-11T10:05:42Z

Ubuntu 20.04 LTS. 

Jak widać nieco wolniej niż u @Elvis (bo i maszyna słabsza) ale i tak do 20 minut daleko.

I jeszcze jedno: po wymuszeniu rekompilacji pliku ino (zamieniłem sobie linijki) wynik to:

real	0m14,271s
user	0m12,856s
sys	0m2,326s

Jak widać cache działa nieźle...

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

Chyba wiem gdzie jest problem... Na tym samym laptopie mam jeszcze drugi dysk z Win11.

Ten sam projekt kompiluje się nieco ponad 6 minut.

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

Przymierzam się do i5 8gen z 32gb ramu, ale 2 koła piechotą nie chodzi.

Na linuxie się nie znam. Na moim gracie jest win10, może on go tak muli.

Kiesyś chciałem się przesna platformio ale mnie pokonała instalacja tego i konfiguracja.

Więc?

 

 

Link do komentarza
Share on other sites

3 minuty temu, Elvis napisał:

Chyba wiem gdzie jest problem... Na tym samym laptopie mam jeszcze drugi dysk z Win11.

Ten sam projekt kompiluje się nieco ponad 6 minut.

winshit?

Link do komentarza
Share on other sites

(edytowany)

@SOYER Dla pewności powtórzyłem test. Po prostu wyszedłem z Arduino IDE, uruchomiłem je ponownie i wybrałem kompilację (bez zmiany czegokolwiek w kodzie). Tym razem wyszło 5 min. 33 sek. Ale to nie ma nawet porównania do 14 sek. które przy małej zmianie ma @ethanak - na niby wolniejszym sprzęcie.

Problem jest chyba nie sprzętowy, ale programowy. Spróbuj namówić @ethanak-a na podzielenie się sekretną wiedzą o arduino-cli, zainstaluj sobie Linuxa obok windowsa, do uruchomienia arduino nie trzeba być ekspertem.

A podczas zaoszczędzonego czasu będziesz miał 2 koła na poprawiacze humoru 😉

Edytowano przez Elvis
  • Lubię! 1
Link do komentarza
Share on other sites

Ok, czyli da się na moim lapku z win10 zainstalować linuxa i z poziomu tego linuxa odpalać ardu ide i na nim pracować tak samo jak pod windą?

@ethanakjak to robisz?

Tyle to chyba się nauczę.

Tylko muszę kupić kolejną klawiaturę bo ta zapasowa też już odmówiła, prawie, posłuszeństwa.

 A już miałem zgodę żony na nowszy komp, a tu cały plan w pizdu;).

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.