Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Aryes

    nagyúr

    válasz KoVee84 #19967 üzenetére

    Mondd már el, hogy a szelektívvel mi újság van? Mert szerintem nem azt csinálja a program, amit az eredeti.

    4 hétig kiír egy-egy nevet, aztán 6 napig azt, hogy szelektív.

    Ha bármi miatt újraindul, a te neved lesz kint, ahogy már írták, de ezen nem is tudsz változtatni. Akár elemcsere vagy egy jóindulatú szomszéd miatt állandóan ti lesztek a Soros ;]

    Miért újraindulással nullázod a számlálót, miért nem használod ki, hogy az rtc memória nem veszik el?

    Én a mostani helyett naponta ébreszteném fel, kiírnám rá a dátumot, hogy látható legyen, ha valamiért lefagyott volna vagy bármi (nem változik a dátum).

    Egyszer, újraindításkor wifiről frissíteném az időt. Utána csak akkor, ha nagyon elmászik (állítólag nem túl pontos, nekem nincs tapasztalatom vele, de ha következetesen pontatlan, azt lehet korrigálni programból is).

    Nem az eltelt napokat venném alapul, hanem mikor lejár egy mandátum, kiszámítanám a következő változás napját és azt írnám a RTC memóriába. Ezzel azt lehet elérni, hogy soha többet nem kell piszkálni, ha újraindul, ha bármi történik (két napra kiveszed az akkut tölteni) mindig jó adatot fog mutatni.

  • its_grandpa

    tag

    válasz KoVee84 #19967 üzenetére

    Bocs de ez így egy ~ 130 soros borzalom.
    A case ágak 0-3 ig ugyanazok, csak a név kiírása miatt van benne "magic number" azaz a texts[n].
    Ez kb. a fele, 65 sor és remélem ugyanazt csinálja.

    int vref = 1100;
    const char* persons[] = {"Kovács","Könözsi","Csepura","Németh"};
    const uint64_t egy_nap = 86400000000;

    RTC_DATA_ATTR unsigned int reboot_counter = 0;
    void setup()
    {
        Serial.begin(115200);
        delay(10);
        epd_init();
        delay(10);
      
        // Correct the ADC reference voltage
        esp_adc_cal_characteristics_t adc_chars;

    }

    void loop()
    {
    int persons_no = reboot_counter;  // csak a szépség kedvéért
        
        if reboot_counter < 4:
            {
              epd_poweron();
              epd_clear();
              delay(10);
              uint16_t v = analogRead(BATT_PIN);
              float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
              String voltage = "Feszültség: " + String(battery_voltage) + "V";
              Serial.println(voltage);
              int cursor_x = 60;
              int cursor_y = 475;
              writeln((GFXfont *)&FiraSans, (char *)voltage.c_str(), &cursor_x, &cursor_y, NULL);
              cursor_x = 180;
              cursor_y = 290;
              writeln((GFXfont *)&OpenSansExtraBold72, (persons[ persons_no]), &cursor_x, &cursor_y, NULL);
              reboot_counter++;
              epd_poweroff_all();
              esp_sleep_enable_timer_wakeup(egy_nap * 7);
              esp_deep_sleep_start();
            }
      else if reboot_counter = 4:
            {
              epd_poweron();
              delay(10);
              int cursor_x = 550;
              int cursor_y = 475;
              writeln((GFXfont *)&FiraSans, ("SZELEKTÍV KUKA"), &cursor_x, &cursor_y, NULL);
              reboot_counter++;
              epd_poweroff_all();
              esp_sleep_enable_timer_wakeup(egy_nap * 6);
              esp_deep_sleep_start();
            }
            
        else
            {
              esp_restart();
            }
        
    } /* loop */

    A switch ágak végére meg illenék a break csak a megszokás miatt.

    (ez a notepad++ ból történő másolás, kódformázás nem lett az igazi, bocs)

  • ReFleXx

    addikt

    válasz KoVee84 #19967 üzenetére

    sulyos hibat latok a kodban, ha valami hiba miatt ujraindul a mikrokontroller akkor mindig a te neved kerül ki a displayre, szal hiba eseten mindig te leszel a soros kukakezelo :C

Új hozzászólás Aktív témák