- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Xiaomi 14 - párátlanul jó lehetne
- Yettel topik
- Motorola Razr 40 Ultra - jó volt a terv
- Garmin Forerunner 165 - alapozó edzés
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iOS alkalmazások
- Vodafone mobilszolgáltatások
- Amazfit GTS 4 - divatos megjelenés
- Android alkalmazások - szoftver kibeszélő topik
Hirdetés
-
Robotkart irányított a majom a kínai Neuralink agyi chipjével
it A mindezt lehetővé tévő Neucybert a Neuralink kínai riválisa, a Beijing Xinzhida Neurotechnology fejlesztette ki.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Érkezőben a Poco M6 4G
ma 5G-s és 4G-s Pro modell már van, hamarosan lesz Poco M6 4G-s alapváltozat is.
-
Mobilarena
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
-
lanszelot
addikt
A gyártói leírást. Belinkeltem a pdf-et. Ott van minden lépés, bár össze vissza írták. Abban vannak a linkek is.
1.8.18
Még nem tudtam azokat próbálni, mert dolgozom. Ezért irtam, hogy pénteken fogom tudni próbálni, mert akkor már ünnep lesz és lesz időm
Hétközben nem nagyon van időm, max 10-15 perc. -
KoVee84
senior tag
Nem raktam deep sleepet...
órakezelésben tudtok segíteni?
Íme a kód:#ifndef BOARD_HAS_PSRAM
#error "Please enable PSRAM !!!"
#endif
#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 unsigned long het1 = 604800000UL;
const unsigned long het2 = 1209600000UL;
const unsigned long het3 = 1814400000UL;
const unsigned long het4 = 2419200000UL;
const unsigned long szelektiv = 2332800000UL; // utolsó nap
//teszt
//const uint32_t het1 = 20000;
//const uint32_t het2 = 40000;
//const uint32_t het3 = 60000;
//const uint32_t het4 = 80000;
//const uint32_t szelektiv = 70000;
void setup()
{
Serial.begin(115200);
delay(10);
// Correct the ADC reference voltage
esp_adc_cal_characteristics_t adc_chars;
epd_init();
epd_poweron();
epd_clear();
delay(10);
// első hét
//feszültség
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);
//név
cursor_x = 180;
cursor_y = 290;
writeln((GFXfont *)&OpenSansExtraBold72, (texts[0]), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
}
void loop()
{
unsigned long currentMillis = millis();
switch (currentMillis)
{
case het1:
{
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);
epd_poweroff_all();
break;
}
case het2:
{
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);
epd_poweroff_all();
}
case het3:
{
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);
break;
}
case szelektiv:
{
epd_poweron();
delay(10);
int cursor_x = 550;
int cursor_y = 475;
writeln((GFXfont *)&FiraSans, ("SZELEKTÍV KUKA"), &cursor_x, &cursor_y, NULL);
epd_poweroff_all();
break;
}
case het4:
{
esp_restart();
}
}
}[ Szerkesztve ]
-
ReFleXx
addikt
válasz KoVee84 #19956 üzenetére
Deepsleep nelkul nem csoda, deepsleepben 10-20 mikroamperig is le tudod faragni a fogyit, foleg ha jol ertem heti 1x kell valtoztatni a kijelzon es nem kell annyira pontosan, szl be tudod idoziteni ejszaka valamikorra.
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
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.[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
-
lanszelot
addikt
ami még kimaradt:
board lista: [kép]
/első az uno miatt ami nekem nincs, de nem is értem minek az uno
másik board lista: [kép]
hiába van kiválasztva, nincs com port
com lista: [kép]
megvárom mit jelez vissza a gyártó.
hétvégéig úgy se nagyon van időm
pénteken majd neki ugrok, hogy a te két félédet is megpróbáljam
újra lett indítva a gép, tehát az se lehet hiba[ Szerkesztve ]
-
KoVee84
senior tag
válasz ReFleXx #19959 üzenetére
Elvileg korábban valahol azt olvastam, hogy nagyon jó a fogyasztása, sleep modeban 170 mikroamper, de ez szinte biztos, hogy nem a deep sleepre vonatkozik.
Viszont a deepsleep miatt dobhatom ki a korábbi kódom, mert a millis() nullázódik. Van esetleg valami reboot számláló, mert akkor egyszerűen azt tenném a casekbe?
-
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[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
nagyúr
válasz lanszelot #19962 üzenetére
Nem lesz com port!
Feltöltés előtt ki kell húzni a lapot, és amikor végzett a fordítással, írni fogja, hogy dugd be a cuccot a gépbe, na akkor dugd be újra. Lesz rá 60 másodperced.
Nincs itt semmi hiba.szerk.: csak most láttam, hogy az előzőt még kiegészítetted. A driver telepítés probléma amiatt lehet, amit írtam korábban, tudniillik vagy nincs rajta bootloader, vagy valamiért nem szereti azt az usb portot, amire dugod. Utóbbi esetben próbáld meg egy 2.0-s USB hub-ra dugni, de semmi más ne legyen bele dugva, csak ez. Nekem ez jött be, pár évvel ha visszaolvasol, láthatod mennyit qrvaanyáztam, mire rájöttem, mi a gond
[ Szerkesztve ]
-
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();
}
}
} -
KoVee84
senior tag
válasz ReFleXx #19969 üzenetére
Kisegítesz a kódrészlettel?
Van egy másik próblémám még egyébként, most próbáltam a wifi ntp-vel kiegészíteni a kódot, de mivel a opensans72eb.h majdnem 5 MB, ezért ha újrafordítom a kódot, akkor: Sketch uses 1753729 bytes (133%) of program storage space. Maximum is 1310720 bytes.133%
[ Szerkesztve ]
-
ReFleXx
addikt
válasz KoVee84 #19970 üzenetére
Persze:
const char* texts[] = {"Könözsi","Csepura","Németh","Kovács"};
Kell bele az a opensans72eb.h? Mi lenne az valami speci font keszlet?
Egyebkent pontosan melyik lilygos epaper modulod van? tipus es verzio?[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
ReFleXx
addikt
válasz KoVee84 #19973 üzenetére
azert egy kicsit agyuval verebre projekt, egy db A4-es papirral megoldhato lenne ez a problema egy evre de biztos engem fertoztek mar meg a cegnel ezzel a sok costcut temaval
kiprobalnek egy jofele epapert de baromi dragak.2020-as dakota közmondás: "Intel a csórók AMD-je"
-
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)
[ Szerkesztve ]
-
nagyúr
válasz lanszelot #19972 üzenetére
1. Ahogy a kolléga írta, a bootloader nem feltétele a blink programnak. Bár ha demó program feltöltésére vették a fáradságot, talán az is rendben van.
2. Az is a gyártói leírásban volt, hogy az UNO-t kell kiválasztani a listából (szerinted). Ha a leírás jobban tudja, mint én, akkor ne itt kérdezd, hanem kövesd a leírást. -
KoVee84
senior tag
válasz its_grandpa #19976 üzenetére
-
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.
[ Szerkesztve ]
-
ReFleXx
addikt
illetve ha mar van wifi, akkor ki lehetne rakni a netre valahova egy tablazatot hogy adott heten ki a soros es azt lekerdezve irhatna ki a kapott nevet, ennek meglenne az az elonye, hogy tavolrol frissitheto a lista, nem kell ujra programozni az eszkozt ha valaki kimarad mert epp nyaral stb
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
lanszelot
addikt
Félre értettél.
Egyáltalán nem mondtam, hogy úgy kell ahogy a gyártó mondja.
Úgy néz ki én vagyok gyenge elméjű, és nem akartam marhaságokat írni ide.Amit szerettem volna:
Amikor megvettem a gyártó ígért: leírást, installalási útmutatót, példa programot, és ha bármi gond lenne segítséget.
Ezt a gyártó garantálja. És állítja hogy az úgy jó ahogy ő írja.
Meg is osztottam amit küldött pdf-et.
Amit sikerült valamennyire kibogoznom.A gond a pdf-el a sorrend.
Gyártó pdf szerinti sorrend:
+ installald az Arduino ide-t
+ Valaszd ki a board -odat
+ Válaszd ki a portot
+ Linkeld be a jsont
+ Installald a board managerben
+Installald a windows driver -tTehát a leges legvégén kell a drivert installálni.
Ez így szerintetek rendben van ez a sorrend?Mert így én nem tudtam felrakni.
Ezért írtam nekik, hogy hol rontottam el.
Még videót is küldtem róla, meg képeket.
Azt írták, hogy én nem tudok telepíteni és keressek valakit aki tud.
[kép]
Ha ennyire hülye vagyok akkor nem akartam itt marhaságokat írni.
Szerettem volna saját hibámat kizárni.
Ezért olvasgatok utána, de nem találom hol hibáztam. -
KoVee84
senior tag
Csak a tesztelés miatt lett rossz ott az érték, egyébként minden név 7 napig jelenik meg, a Szelektív kuka felirat meg a 4. hét utolsó napján.
Nyilván lehet ezt sokkal jobban is csinálni, de az én programozó tudásommal ennek is nagyon örülök és majd nekiállok még csiszolgatni. Köszönöm az eddigi segítségeket!
-
nagyúr
válasz lanszelot #19981 üzenetére
A gond a pdf-el, hogy hülyeséget ír.
COM portot nem tudsz akkor sem beállítani, ha a fejed tetejére állsz, mert a Digispark nem tartalmaz USB-soros átalakítót, mint az UNO.
A leírás valószínűleg arra gondol, hogy telepítés után az UNO van default beállítva, vagy egy olyan pdf-et alakítottak át, amit eredetileg az UNO mellé küldtek, csak elfelejtették kivenni az ide vonatkozó részt, nem tudom. -
lanszelot
addikt
Hello,
Volt egy kis időm, és a te módszereddel sikerült életet lehelni beleKét kérdésem lenne:
- Arduino progi : File -> preferences -> URL -hez lehetséges vlahogy több linket becsatolni?
Mert kell ennek a Digispark-nak, és a Nano -nak is kell.
Állandóan be kell másolgatnom amit épp rádugok.- ezzel a progival próbálgatom megtudjam melyik pin micsoda
/progin változtattam: led pin 1 , button pin 2/const int buttonPin = 2;
const int ledPin = 1;
Nekem a button - arduino vezetéken van egy led
Ha PB3 -ba dugom akkor a led-emet kontrollálom a gombbal
Ha PB4-be dugom az onboard led -et kontrollálom a gombbal
video róla bocsánata a minőségért, csak 2 kezem van
Hogy is van ez? Miért vált led-et, a program ugyanaz?
Az se mindegy melyikre dugom, mikor bedudom a Digisparkot usb-re.
Amelyik bedugáskor be van kötve az alapból kikapcsolt, és gomb nyomásra bekapcsol.
A másik fordítva, ahogy a videón is látszik.
De ha a másikkal dugom be először, akkor az lesz alapból kikapcsolt.[ Szerkesztve ]
-
nagyúr
válasz lanszelot #19986 üzenetére
File -> preferences -> URL -hez lehetséges vlahogy több linket becsatolni?
A pirossal bekarikázott gombra nyomva új sorként tudsz betenni új linket, vagy a szövegmezőbe ;-vel elválasztva, de előbbi átláthatóbb.A hozzászólás második részét próbálom értelmezni, de nem nagyon megy.
A gomb felső részére egy piros vezeték van kötve, aminek nem látom, hogy hová vezet a másik vége, vagyis nem tudom, hogy a gombbal mit kötsz mire.Írtam, hogy a PB3, PB4 lábak kettős funkciót töltenek be, egyrészt tudod őket vezérelni, másrészt az USB csatlakozó D+, D- lábaival vannak összekötve. Ezért gyárilag van egy 1k felhúzó (ha jól emlékszem?) ellenállás és egy Zener dióda a GND irányába, mindkét lábon. Ez azt jelenti, hogy 3,3V feszültség van rajtuk akkor is, ha amúgy nem kéne neki. Ez okozhat nem várt viselkedést, például ha LED-et kötsz rá, az mindkét irányban világítani fog. Szerintem ebben rejlik a válasz a kérdésedre. Hogy az onboard LED miért alszik ki? Szerintem rövidzárlatot csináltál a gombbal.
-
lanszelot
addikt
"próbálom értelmezni," - ezért raktam be a linket, ahol ott a bekötési rajz
amúgy a piros vezeték: gomb és pozitív 5V boardról /ami fehér a pozitív, mert a pirost nem bírtam oda dugni, hogy ne ugorjon ki/ amikor a board-ot mutatom ott látszik a fehér hova van dugvaNem csinálhatok zárlatot, mert ahogy írtam, ha lehúzom a board-ot usb-ről, és PB4 -be dugva dugom vissza, akkor alapból nem világít, csak ha megnyomom a gombot akkor világít, ebben az esetben ha átdugom PB3-ra, akkor a bread board led világít folyamatosan, és gomb nyomásra elalszik.
Meg próbálom az asszonyt rávenni csináljunk új videót, hogy látsd[ Szerkesztve ]
-
nagyúr
válasz lanszelot #19988 üzenetére
Meg próbálom az asszonyt rávenni csináljunk új videót
Csak azt a másik PH-ra töltsd fel!
A PB4 okát már írtam, a PB3-at nem tudom megfejteni.
Ha azt írod, hogy ezzel a progival, abból én honnan a fenéből tudjam, hogy ott találom a bekötési rajzot?? Legyél már egyértelműbb.
[ Szerkesztve ]
-
lanszelot
addikt
Már nem úgy müködik....hmmm
Ez fura. Pihent kicsit és mindegy hogy dugom, ugyanúgy működik.
A digispark-ba a vezetékeket, a pc-be a digispark-ot
Viszont vmi kondenzátor vagy valami megtartja az onboard led-et pár másodpercig kék vezeték lehúzás után, ha alapból világít az onboard led.De a lényeget megtudtam, hogy melyik melyik pin a kódban.
Köszönöm szépen a segítségetVégre jöhet a project amit kinéztem rá
-
ViZion
félisten
válasz lanszelot #19990 üzenetére
"Meg próbálom az asszonyt rávenni csináljunk új videót, hogy látsd "
...
"Már nem úgy müködik....hmmm
Ez fura. Pihent kicsit és mindegy hogy dugom, ugyanúgy működik."Hááát, nekem nincs kérdésem.
Aryes miatt van , a hsz-e után már nem tudtam ugyan úgy olvasni, mint előtte...Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy
-
lanszelot
addikt
válasz lanszelot #19848 üzenetére
Hello,
Össze raktam a gáz érzékelőt és a hőmérőt.
Jelenleg mind a kettő a kis kijelzőn külön sorban mutatja az értéket.
Gondoltam ha tennék be egy gombot hogy vállthassak a
- ket értek együtt
- csak hőmérő értéke
- csak gáz érzékelő értéke
Között.
Function -ba kell raknom a kijelző megjelenítéseket és gomb nyomásra más más function -t futtassak?
Vagy hogy szokás megoldani? -
nagyúr
válasz lanszelot #19993 üzenetére
Egy változó állapota alapján döntsd el, hogy mi legyen a kiírás, a gombbal a változó értékét változtasd (a.k.a. "állapotgép"). Hogy aztán a loop-ban if-et, switch-et, vagy függvénypointer-tömböt használsz, az már teljesen egyéni preferencia kérdése. Általában attól függ mit használok, hogy később szeretném-e bővíteni a funkciókat, vagy elég egy quick&dirty megoldás.
-
lanszelot
addikt
Igen, az meg volt, hogy egy változó értékét valtoztatom a gombbal és if -et használok. De az if-be nem a teljes kódot, csak a függvény futtatást rakom be, hogy átlátható legyen.
De if helyett a switch is jó, az nem jutott eszembe.
Melyik eszik kevesebb memóriát?[ Szerkesztve ]
-
lanszelot
addikt
Hello,
C++ function létrehozással - meghívással gondom van
mivel még sohase csináltam, csak próbálgatom, de valami nem jó
#include <MQ135.h> /*gaz erzekelo, de nem kell neki igazabol*/
#include <Adafruit_SSD1306.h> /*oled display*/
#include <splash.h> /*oled display -nek kell*/
#include <max6675.h> /*homero*/
int thermoDO = 10; /*valtozo a homero DO pin -nek*/
int thermoCS = 9; /*valtozo a homero CS pin -nek*/
int thermoCLK = 8; /*valtozo a homero CLK pin -nek*/
int gombNyomas = 1; /*valtozo a gomb nyomas szamlalasara*/
int gombPin = 5; /*valtozo a gomb pin -nek*/
int gombAllapot = 0; /*valtozo a gomb allapot olvasasahoz*/
byte a = 0; /*valtozo a gaz erzekelo negyzet villogashoz*/
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
void setup() {
Serial.begin(9600); /*elindítja a sorosportot, 9600 baud beállítással. Ez azért jó, mert a Serial Monitoron a program futását tudod monitorozni*/
pinMode(gombPin, INPUT); /*inicializálja a gomb pin -jet inputnak*/
Serial.println("MAX6675 test");
/*wait for MAX chip to stabilize*/
delay(500);
/*SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally*/
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); /*Address 0x3C for 128x32*/
display.display();
delay(2000);
}
void loop() {
int sensorValue = analogRead(A0); /*valtozo a gaz erzekelo alalog pin -nek*/
int isgas = digitalRead(2); /*valtozo a gaz erzekelo digitalis pin -nek, ez arra kell, ha gas van akkor jelet ad, nem kell kulon erteket adni*/
String gas; /*valtozo a gaz erzekelo gas vagy no gas kiirasahoz*/
/*For the MAX6675 to update, you must delay AT LEAST 250ms between reads!*/
delay(500);
/*read the state of the pushbutton value:*/
gombAllapot = digitalRead(gombPin);
/*check if the pushbutton is pressed. If it is, the buttonState is HIGH:*/
if (gombAllapot == HIGH) {
gombNyomas++;
}
if (gombAllapot > 3) {
gombNyomas = 1;
}
switch(gombAllapot) {
case 1:
mindenRajtaVan();
break;
case 2:
homeroVanRajta();
break;
case 3:
gazVanRajta();
break;
}
void mindenRajtaVan() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(2); /*text size 2*/
display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("C = ");
display.print(thermocouple.readCelsius());/*Celsius*/
display.setTextSize(1); /*text size 2*/
display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("F = ");
display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
display.setTextSize(1); /*text size 2*/
display.setCursor(0,50); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
/*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
if (sensorValue < 90) {gas = "No Gas";}
else {gas = " Gas";
if(a) {display.drawRoundRect(80, 47, 40, 15, 2, WHITE);} /*negyzet a gas felirat kore feher*/
else {display.drawRoundRect(80, 47, 40, 15, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
a^=1;
}
display.print(gas);
}
void homeroVanRajta() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(2); /*text size 2*/
display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("C = ");
display.print(thermocouple.readCelsius());/*Celsius*/
display.setTextSize(1); /*text size 2*/
display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("F = ");
display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
}
void gazVanRajta() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(1); /*text size 2*/
display.setCursor(0,50); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
/*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
if (sensorValue < 90) {gas = "No Gas";}
else {gas = " Gas";
if(a) {display.drawRoundRect(80, 47, 40, 15, 2, WHITE);} /*negyzet a gas felirat kore feher*/
else {display.drawRoundRect(80, 47, 40, 15, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
a^=1;
}
display.print(gas);
}
display.display(); /*to shows or update your TEXT*/
}hiba üzenet:
C:\Users\robag\Documents\Arduino\gas_homero_gomb_nano\gas_homero_gomb_nano.ino: In function 'void loop()':
gas_homero_gomb_nano:56:25: error: a function-definition is not allowed here before '{' token
void mindenRajtaVan() {
^
gas_homero_gomb_nano:88:25: error: a function-definition is not allowed here before '{' token
void homeroVanRajta() {
^
gas_homero_gomb_nano:106:22: error: a function-definition is not allowed here before '{' token
void gazVanRajta() {
^
gas_homero_gomb_nano:130:5: error: 'mindenRajtaVan' was not declared in this scope
mindenRajtaVan();
^~~~~~~~~~~~~~
gas_homero_gomb_nano:133:5: error: 'homeroVanRajta' was not declared in this scope
homeroVanRajta();
^~~~~~~~~~~~~~
gas_homero_gomb_nano:136:5: error: 'gazVanRajta' was not declared in this scope
gazVanRajta();
^~~~~~~~~~~
Multiple libraries were found for "Wire.h"
Used: C:\Users\robag\AppData\Local\Arduino15\packages\ATmega328PB-incl-Bootloader\hardware\avr\0.1.0\libraries\Wire
Not used: C:\Users\robag\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
Multiple libraries were found for "SPI.h"
Used: C:\Users\robag\AppData\Local\Arduino15\packages\ATmega328PB-incl-Bootloader\hardware\avr\0.1.0\libraries\SPI
Not used: C:\Users\robag\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\SPI
exit status 1
a function-definition is not allowed here before '{' token -
lanszelot
addikt
Hmmm, ez a baj. Nem tudtam a scope -ot.
Nem tudtam, hogy a loop -ból oda ki tud nyúlni.gombbal van most gond.
ha kikötöm, akkor is össze vissza nyomkodja magát. Azaz a gombnyomas valtozo értéke változik valamiért.#include <MQ135.h> /*gaz erzekelo, de nem kell neki igazabol*/
#include <Adafruit_SSD1306.h> /*oled display*/
#include <splash.h> /*oled display -nek kell*/
#include <max6675.h> /*homero*/
int thermoDO = 10; /*valtozo a homero DO pin -nek*/
int thermoCS = 9; /*valtozo a homero CS pin -nek*/
int thermoCLK = 8; /*valtozo a homero CLK pin -nek*/
int gombNyomas = 1; /*valtozo a gomb nyomas szamlalasara*/
int gombPin = 5; /*valtozo a gomb pin -nek*/
int gombAllapot = 0; /*valtozo a gomb allapot olvasasahoz*/
byte a = 0; /*valtozo a gaz erzekelo negyzet villogashoz*/
int sensorValue = analogRead(A0); /*valtozo a gaz erzekelo alalog pin -nek*/
int isgas = digitalRead(2); /*valtozo a gaz erzekelo digitalis pin -nek, ez arra kell, ha gas van akkor jelet ad, nem kell kulon erteket adni*/
String gas; /*valtozo a gaz erzekelo gas vagy no gas kiirasahoz*/
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
void mindenRajtaVan() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(2); /*text size 2*/
display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("C = ");
display.print(thermocouple.readCelsius());/*Celsius*/
display.setTextSize(1); /*text size 2*/
display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("F = ");
display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
display.setTextSize(1); /*text size 2*/
display.setCursor(0,50); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
/*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
if (sensorValue < 90) {gas = "No Gas";}
else {gas = " Gas";
if(a) {display.drawRoundRect(80, 47, 40, 15, 2, WHITE);} /*negyzet a gas felirat kore feher*/
else {display.drawRoundRect(80, 47, 40, 15, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
a^=1;
}
display.print(gas);
display.display(); /*to shows or update your TEXT*/
}
void homeroVanRajta() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(2); /*text size 2*/
display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("C = ");
display.print(thermocouple.readCelsius());/*Celsius*/
display.setTextSize(1); /*text size 2*/
display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("F = ");
display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
display.display(); /*to shows or update your TEXT*/
}
void gazVanRajta() {
display.clearDisplay(); /*this line to clear previous logo*/
display.setTextSize(1); /*text size 3*/
display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("Thermometer by Gabor");
display.setTextSize(1); /*text size 2*/
display.setCursor(0,50); /*ez tartja egy helyben a szöveget*/
display.setTextColor(WHITE); /*without this no display*/
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
/*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
if (sensorValue < 90) {gas = "No Gas";}
else {gas = " Gas";
if(a) {display.drawRoundRect(80, 47, 40, 15, 2, WHITE);} /*negyzet a gas felirat kore feher*/
else {display.drawRoundRect(80, 47, 40, 15, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
a^=1;
}
display.print(gas);
display.display(); /*to shows or update your TEXT*/
}
void setup() {
Serial.begin(9600); /*elindítja a sorosportot, 9600 baud beállítással. Ez azért jó, mert a Serial Monitoron a program futását tudod monitorozni*/
pinMode(gombPin, INPUT); /*inicializálja a gomb pin -jet inputnak*/
Serial.println("MAX6675 test");
/*wait for MAX chip to stabilize*/
delay(500);
/*SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally*/
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); /*Address 0x3C for 128x32*/
display.display();
delay(2000);
}
void loop() {
/*For the MAX6675 to update, you must delay AT LEAST 250ms between reads!*/
delay(500);
/*read the state of the pushbutton value:*/
gombAllapot = digitalRead(gombPin);
/*check if the pushbutton is pressed. If it is, the buttonState is HIGH:*/
if (gombAllapot == HIGH) {
gombNyomas++;
}
Serial.println(gombNyomas);
if (gombNyomas == 1) {
mindenRajtaVan();
} else if (gombNyomas == 2) {
homeroVanRajta();
} else if (gombNyomas == 3) {
gazVanRajta();
} else if (gombNyomas > 3) {
gombNyomas = 1;
}
}gombnyomas értéke:
MAX6675 test
1
2
2
2
3
3
4
2
2
3
4
1
2
2pedig nincs semmi az 5-ös pin-en.
Lehúztam.Amúgy hogyan kell a gombot helyesen bekötni?
Ahogy én gondoltam: negativ -> gomb -> 5-ös pin
Pozitív nélkül
Vagy nem földelni kell gombnyomáskor az 5-ös pint, hanem 3V vagy 5V-t adni neki gombnyomáskor?