-
Fototrend
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
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)
-
KoVee84
senior tag
válasz
KoVee84 #19966 üzenetére
#include <Arduino.h>
#include "epd_driver.h"
#include "font/firasans.h"
#include "font/opensans72eb.h"
#include "esp_adc_cal.h"
#include "pins.h"
#include "time.h"
int vref = 1100;
const char* texts[] = {"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()
{
switch (reboot_counter)
{
case 0:
{
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, (texts[0]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 1:
{
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, (texts[1]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 2:
{
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, (texts[2]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 3:
{
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, (texts[3]), &cursor_x, &cursor_y, NULL);
reboot_counter++;
epd_poweroff_all();
esp_sleep_enable_timer_wakeup(egy_nap * 7);
esp_deep_sleep_start();
}
case 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();
}
case 5:
{
esp_restart();
}
}
} -
ReFleXx
addikt
válasz
KoVee84 #19963 üzenetére
Rtc memoriaban tudsz tarolni es megjegyzi deepsleep alatt.
gugli elso: [link]
nem irtad vane wifire csatlakozasra lehetoseg.
amugy a 170mikroamper jol hangzik, van devkit ami ennek tobbszoroset eszi nagysagrendekkel, de ez is 10xese annak amit maga a modul eszik deepsleepben -
ReFleXx
addikt
válasz
KoVee84 #19956 üzenetére
egyebkent nem kapcsolodik fel wifire sem a kutyu?
Van wifi ott ahova telepited? Honnan tudja mennyi a pontos ido? A belso ora nem pontos ennyire siman elmaszik 5%ot is,de ha pontos lenne akkor is elcsuszna neked az ido mert x hetente ujrainditod es amig ujraindul elmaszik az idozites. Ha nincs net akkor kelleni fog kulso RTC , hogy tudja mikor van uj het vagy kell net es akkor idonkent felebreszted deepsleepbol besynceled a pontos idot netrol es ujraaltatod. -
vargalex
félisten
válasz
KoVee84 #19938 üzenetére
Mire iratod ki az adatokat? Ha nem e-ink kijelzőre, akkor ugye a kijelzés is harap erősen az akkuból.
Egyébként, ha e-ink, akkor ahogy a kolléga mondja, deep sleep-be kell küldeni az ESP32-t (én ESP8266-al csináltam percenként ébredő hőmérőket, amik 10 percenként wifi-re is csatlakoznak és post-olják az addig mért adatokat, azok egy 18650-es cellával 3-4 hónapig elvannak) és időzítve ébreszteni.Szerk.: mondjuk a developer board-ok nem biztos, hogy ideálisak a feladatra, mivel ha az ESP-t deep sleep-be is küldöd, attól a körítés, ami a lapon van, fogja enni az akkut. És nem biztos, hogy maga az ESP a legnagyobb fogyasztó. Én csupasz ESP12E-kett használtam a projektemhez.
-
válasz
KoVee84 #19938 üzenetére
Ez jól hangzik.
Nem ismerem ezt a kütyüt, csak a fotó alapján látom, hogy ESP32 van rajta, és abban van RTC modul, ha nem is a legpontosabb. Arra viszont szerintem pont jó, hogy felébressze a cuccot mondjuk minden éjszaka, NTP szerverről frissítse magát és visszaaludjon. Szívesen segítenék, de ESP-ben nem vagyok különösebben jártas, és a kütyü nélkül tesztelni sem tudnám, de ha ide beteszed (ha hosszú, töltsd fel valahová) akkor biztos megoldjuk.
Új hozzászólás Aktív témák
- BONTATLAN iPhone 16 Pro Max 256GB Natúr Titán
- 4G/LTE-SiM DELL 7320 DETACH MAGYAR - 13" touch FHD+ 100% sRGB, i5, 16/1TB WiFi6/TBolt4 GARANC +SZLA
- IPhone 16 Pro max 256GB gyári független 2027.11.09. Apple jótállás
- 7db Dell Latitude 7420,14"4K UHD,i7-1185G7,16GB DDR4, értékcsökkentett
- Denon AVR-X520BT házimozi erősítő
- ÁRGARANCIA!Épített KomPhone i5 10600KF 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASRock AB350 R5 1600X 16GB DDR4 500GB SSD RX 580 4GB Rampage SHIVA Zalman 600W
- ÁRCSÖKKENTÉS Eszpresszóképes kávéfőző 15 bar nyomással
- LG 34WQ75X-B - 34" Ívelt IPS Panel - 3440x1440 2K QHD - 60Hz 5ms - FreeSync - USB Type-C 90W
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest