Fórum témák
- • Kapcsolóüzemű tápegység
- • KDC kaputelefon loggolás
- • Számítógép hiba, de mi a probléma?
- • Villanypásztor
- • Érdekességek
- • Erősítő mindig és mindig
- • TDA7294 végerősítő
- • Villanymotor bekötése
- • Pendrive emulátor
- • Műhelyünk felszerelése, szerszámai
- • Mosógép vezérlők és általános problémáik
- • Elektroncső
- • Vásárlás, hol kapható?
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Adatmentés pendrive-ról
- • TV hiba, mi a megoldás?
- • Rendelés külföldről (eBay - Paypal)
- • Arduino
- • Forrasztóónok - melyik miért jó
- • Elfogadnám, ha ingyen elvihető
- • Felajánlás, azaz ingyen elvihető
- • Házi vízmű
- • Quad 405-ös erősítő tapasztalatok és hibák
- • STK erősítők javítások
- • Muzeális készülékek-alkatrészek restaurálása
- • Oszcilloszkóp, avagy hogyan kell használni?
- • Régi elektronikai építőkészletek
- • Villanyszerelés
- • Genius 5.1-hez kapcsoló
- • Porszívó javítás
- • Vezetékes telefon szerelés
- • Vezetékes telefont vezetéknélkülivé alakítani?
- • Hűtőgép probléma
- • Kapcsolási rajzot keresek
- • Opel Astra elektromos hibák
- • Autórádió beszerelése
- • Andorid TV box okosságok
- • Hegesztő inverter javítás
- • Skoda Octavia elektromos probléma
- • Tirisztoros egyenirányító
- • DVB-S Műholdas digitális TV problémák
- • Analóg oszcilloszkóp javítása
- • Savas akkumulátor
- • Elektronikus szulfátoldó (Akku aktivátor)
- • PC HDD rögzítés
- • Elektronikai témájú könyvek újságok
- • Forrasztási 1×1 forrasztástechnikai miértek
- • WiFi antenna készítés
- • Vicces - mókás történetek
- • Elektroncső-vizsgáló berendezés
- • Elektromos távirányítós kapunyitó
- • Crystal radio - detektoros rádió
- • Erősítő építése elejétől a végéig
- • Dansk 3f-T3535, és minden, ami vele kapcsolatos
- • Alternativ HE találkozó(k)
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
| (#) |
(Felhasználó 120038) válasza jeges hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
Szia!
Nemértem mi a gond pontosan, reggel van.
50 nap bele sem fér az unsigned long-ba.
50*24*3600*1000=4 320 000 000 ms.
Unsigned long:4,294,967,295 (2^32 - 1) maximum ekkora számot tud tárolni.
Lehet jobban járnál egy olcsó RTC órával, abban pl kalendár is van, meg pl ébresztés, idő lejártának figyelése, stb. A hozzászólás módosítva: Dec 6, 2016
Erre régen volt egy egyszerű rutin, igaz az egy plusz változó, de így legalább nem függ a port terheléstől.
led = 1-led;
digitalwrite ( ledpin,led);
Aha, ez is jó megoldás  !
| (#) |
kissi válasza (Felhasználó 120038) hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
Idézet: „50 nap bele sem fér az unsigned long-ba.
50*24*3600*1000=4 320 000 000 ms.”
Igen, csak úgy írják a doksiban, hogy kb. 50 nap ( pontosabban valami 49,7 nap, ahogy írtad  ! ) !
| (#) |
(Felhasználó 120038) válasza kissi hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
Szerintem az RTC éppen erre való, lehet vele feléleszteni arduino-t, interrupt is megy vele, szóval sokkal jobb, mint számolgatni az arduino-val.
Ha nincs RTC akkor pedig az eltelt időt számolni ugyan milis()-el, de külön változóba pl. eltelt perc számlálás, 50 napi perc pedig belefér már a változóba.
ha eltelt idő>= 60 sec akkor eltelt perc=eltelt perc+1 és eltelt idő=0
ha eltelt perc= 50*24*60 akkor tegyen valamit, majd nullázza ki az eltelt percet is, hogy induljon újra a következő 50 nap. A hozzászólás módosítva: Dec 6, 2016
| (#) |
kissi válasza (Felhasználó 120038) hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
Igen, ha órát akarsz csinálni, akkor nagyon jó az RTC... De ha pl. valami várakozás kell pl. 170 ms ( mondjuk az alatt tölt meg egy flakont az automata ), akkor az RTC felejtős  !
| (#) |
(Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
A kérdés az, hogy mennyire lesz pontos 50 nap után az arduino-s számolgatás. Millis(1000), szerintem lesz pár milisec csúszás minden másodpercben, viszont 50 nap alatt ez jelentős lehet. RTC 25 ft, vagy mennyi, 250 ft bele az elem.
| (#) |
kissi válasza (Felhasználó 120038) hozzászólására (») |
Dec 6, 2016 |
 |
/ |
 |
|
Nincs semmi baj az 50 nappal, ez csak annyi, hogy maximum ennyit tud mérni átfordulás nélkül... de ha számolom az átfordulásokat, akkor akár éveket is !
Abbahagyom, ne off-oljunk tovább !
Ez sajnos nem így van!
Ha megnézed az óra kvarcok jóval kisseb méretűek.
A kisebb felületen kisebb hő tágulás történik, ezáltal kisebb rezonancia eltérések keletkeznek, hőmérsékletváltozás esetén.
Ebből meg következi az óra kvarcok jobb pontossága. A hozzászólás módosítva: Dec 6, 2016
Akkor ez igaz az SMD méretű, 2x2mm tokozású kvarcokra is?
Nem inkább az lehet, hogy az óra kvarcok alacsonyabb frekvencián működnek és ezért másképpen metszik őket? A hozzászólás módosítva: Dec 6, 2016
Idézet: „külső órajelgenerátorral”
Ez sokkal pontosabb is lehet, mint az órakvarc ( csak pénz kérdése  !), ill. a működtető kvarc is lehet órakvarc, csak akkor másra nem jut annyi idő ( de az óra pontos lesz!) ! A hozzászólás módosítva: Dec 6, 2016
Látom, teljesen tévúton jársz, az millis() túlcsordulás probléma megoldásával!
Én ezt így csinálnám:
unsigned long currentMillis;
unsigned long lastReadTime; // utolsó olvasási idő
unsigned long intervallum = 1000; // intervallum
bool overflowing = 0; // Tulcsordulas jelzo
#define butonPin 3 // Most ezzel inditjuk az idözitest
void setup() {
Serial.begin(9600);
}
void loop()
{
if(digitalRead(butonPin) == 1) // idozites inditasa valamilyen feltételben
{
currentMillis = millis(); // Beolvassuk a jelenlegi idot
lastReadTime = currentMillis + intervallum; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime < currentMillis) // Ha törtent tulcsordulas
{
overflowing = 1; // Tulcsordulas jelzot beállitjuk
}
}
// ...
// idözites figyeles
if(lastReadTime > 0) // ha idözites elvan inditva
{
// Ha Tulcsordulas jelzo bevan állitva és millis() > lastReadTime?
if(overflowing == 1 && millis() > lastReadTime) // Varunk a tulcsordulasra
{
// nem csinálunk semmit
}else // Ha millis() tulcsordulasa megtörtént
{
overflowing = 0; // Tulcsordulas jelzot töröljuk
if(millis() > lastReadTime) // megvarjuk ,hogy leteljen az idö
{
// Itt csinálunk valamit az idözitesben...
// ...
lastReadTime = 0; // és töröljük az idözites kerestt
}
}
} // Itt az idözites figyeles vege
// ...
// delay(1000); // nem használunk delay-t!!! mert az mindent elront!
}
A hozzászólás módosítva: Dec 6, 2016
Ezt vettem most, 200Ft és már a kvarc is az IC be van integrálva:
DS3231
Szia!
Szerintem ez jobb megoldás:
if ((later_time - earlier_time ) >=duration ) {action}
Bővebben: Link
Meg kérdőjelezem!
A képleted lefordítva:
Ha minden idődet számításokat végeznek, mint:
if ((később_time - korábbi_time)> = időtartam) {tevékenység}
Majd a borulás nem általában nem jöhet számításba.
Próbálkozzunk, vegyünk csak 1 Byte szám ábrázolást! (0 - 255-ig. könnyebb megérteni)
hexa = decimális
xf0 = 240 induló érték
+ x14 = 20 ennyit akarunk várni, hozzáadjuk az induláshoz
= x104 = 260 mivel 1 Byte a határ a balszélső 1-es kicsordul marad
x04 = 4 260 - 256 = 4 Eddig kellene számolni
Ez a képlet:
if ((később_time - korábbi_time)> = időtartam) {tevékenység}
Helyettesítsük be számláló elérte a végét
if ((255 - 240)> = 20) {tevékenység} 255 - 240 = 15 eddig OK
if ((xff - xf0)> = x14) {tevékenység} eddig OK
Megtörténik az átfordulás 255 >> 0-ra:
if ((x0 - xf0)> = x14) {tevékenység} x0 - xf0 = xEC Az már nagyobb mint x14 Teljesül a feltétel!
Pedig még 4 ig kellett volna számolnia!
És mekkora lenne a tévedés nagyobb, 4 Byte-es számoknál?
KO! Az eredményünk nem pontos!
Mivel a 0 elérésénél teljesül a feltétel a túlcsordulás miatt! A hozzászólás módosítva: Dec 6, 2016
És amivel CrossRoads védekezik:
then the rollover does generally not come into play.
Szerinte + szerintem, hogy ez előforduljon nagyon kicsi az esélye!
De érdekes volt eljátszani a gondolattal A hozzászólás módosítva: Dec 6, 2016
Igazad van, tényleg nem jó, "benéztem"  !
| (#) |
pjg hozzászólása |
Dec 7, 2016 |
 |
/ |
 |
|
Van e valakinek tapasztalata a Si7021-es szenzorral. A kereső nem talál semmit róla itt a fórumon.
Nekem jó taasztalatom van vele, de Arduinos példát nem tudok adni. Mi a kérdés?
Még semmi. Most jött meg.
Akadt 1 klubtag, aki értékelte a ténykedésemet!
Részben az Ő kedvéért legyen itt 1 LED villogtató példa.
Ami nem használ delay-t és ráadásul 5.nap biztos.
// ledBlinkNoDelay.ino
unsigned long currentMillis = 0;
unsigned long lastReadTime = 0; // utolsó olvasási idő
unsigned long intervallum = 1000; // intervallum
bool overflowing = 0; // Tulcsordulas jelzo
unsigned long currentMillis1 = 0;
unsigned long lastReadTime1 = 0; // utolsó olvasási idő
unsigned long intervallum1 = 1500; // intervallum
bool overflowing1 = 0; // Tulcsordulas jelzo
unsigned long counter = 0;
#define BUTTONPIN 3
#define LEDPIN 13
void setup() {
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
// Start LED Blik
currentMillis = millis(); // Beolvassuk a jelenlegi idot
lastReadTime = currentMillis + intervallum; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime < currentMillis) // Ha törtent tulcsordulas
{
overflowing = 1; // Tulcsordulas jelzot beállitjuk
}
}
void loop()
{
// A programuk fut a LED-ek a hatterben Villognak...
Serial.print(counter); // A monitoron: A számok futása szemlélteti a program futasat a haterben!
Serial.print(", ");
//...
// LED Bekapcsolo idözites figyeles
if(lastReadTime > 0) // ha idözites elvan inditva
{
// Ha Tulcsordulas jelzo bevan állitva és millis() > lastReadTime?
if(overflowing == 1 && millis() > lastReadTime) // Varunk a tulcsordulasra
{
// nem csinálunk semmit
}else // Ha millis() tulcsordulasa megtörtént
{
overflowing = 0; // Tulcsordulas jelzot töröljuk
if(millis() > lastReadTime) // megvarjuk ,hogy leteljen az idö
{
// Itt csinálunk valamit az idözitesben...
// ...
counter++;
Serial.println(". ");
Serial.print("LED BE: ");
digitalWrite(LEDPIN, 0);
lastReadTime = 0; // és töröljük az idözites kerestt
// elinditjuk a kikapcolás idözitest
currentMillis1 = millis(); // Beolvassuk a jelenlegi idot
lastReadTime1 = currentMillis1 + intervallum1; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime1 < currentMillis1) // Ha törtent tulcsordulas
{
overflowing1 = 1; // Tulcsordulas jelzot beállitjuk
Serial.println("millis() Tulcsordulas jelzes!");
}
}
}
} // Itt az idözites figyeles vege
// LED Kikapcsolo idözites figyeles
if(lastReadTime1 > 0) // ha idözites elvan inditva
{
// Ha Tulcsordulas jelzo bevan állitva és millis() > lastReadTime?
if(overflowing1 == 1 && millis() > lastReadTime1) // Varunk a tulcsordulasra
{
// nem csinálunk semmit
}else // Ha millis() tulcsordulasa megtörtént
{
overflowing1 = 0; // Tulcsordulas jelzot töröljuk
if(millis() > lastReadTime1) // megvarjuk ,hogy leteljen az idö
{
// Itt csinálunk valamit az idözitesben...
// ...
counter++;
Serial.println(". ");
Serial.print("LED KI: ");
digitalWrite(LEDPIN, 1);
lastReadTime1 = 0; // és töröljük az idözites kerestt
// elinditjuk a Bekapcolás idözitest
currentMillis = millis(); // Beolvassuk a jelenlegi idot
lastReadTime = currentMillis + intervallum; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime < currentMillis) // Ha törtent tulcsordulas
{
overflowing = 1; // Tulcsordulas jelzot beállitjuk
Serial.println("millis() Tulcsordulas jelzes!");
}
}
}
} // Itt az idözites figyeles vege
// ...
// delay(1000); // nem használunk delay-t!!! mert az mindent elront!
}
A hozzászólás módosítva: Dec 7, 2016
Szia!
Szerintem a Tavír fejlesztette nem kapható máshol.
Üdv!
Ez nem ugy látszik mind ha meg álna a proci vagy kifagyna számlálást kezdi elöröl!?
Aktualis ido: 4294964313. Eltelt ido: 17018
Aktualis ido: 4294965314. Eltelt ido: 18019
Aktualis ido: 4294966315. Eltelt ido: 19020
Aktualis ido: 20. Eltelt ido: 20021
Aktualis ido: 1021. Eltelt ido: 21022
Aktualis ido: 2022. Eltelt ido: 22023
Aktualis ido: 3023. Eltelt ido: 23024
Aktualis ido: 4024. Eltelt ido: 24025
Aktualis ido: 5025. Eltelt ido: 25026
Aktualis ido: 6026. Eltelt ido: 26027
Mi a gond a kodal amit linkeltem?
A te kódod azt csinálja, hogy:
Beolvassa a millist(),
Majd kiírja az értékét.
Aztán álldogál itt: delay(1000); ennyi ideig nem csinál semmit!
És ezt kezdi elölről.
Ha neked jó?
Nekem semmi bajom a kódoddal!
Bár az egész millis() olvasásnak semmi értelme, ha az időzítést a delay(1000); sor végzi!
És ki mondta itt, hogy kifagy a program a millis() átfordulásakor?
Mi azt mondtuk, hogy olyankor téveszti az időzítést, ha nem figyel rá a program.
Ezzel szemben az én programom, minden kanyarban megnézi, hogy letelt e már a beállított idő?
H még nem? Megy, tovább csinálja a dolgát, nem bénul meg a delay(ban)!
Majd ha ideje van, elvégzi a dolgát. A hozzászólás módosítva: Dec 9, 2016
Sziasztok!
Wifivel kapcsolatos kérdésem lenne.
Hogyan lehet megoldani, egy Arduino-t használó atmega328-cal, hogy wifi routerre csatlakozva mérési adatokat küldjön a program? ESP8266 melyik verziója a bevált? Kb 30 méterre van a router és böngészőbe beírva a wifi modul ip címét láthatóvá váljanak a küldött adatok. Nem kész programot kérek, csak iránymutatást, vagy valaki találkozott-e hasonló projekttel és megosztaná velem.
Köszönöm!
Azért ha pontosabban megnézed, igyekszik lekezelni az átfordulást, és az átfordulástól függetlenül megy tovább a számlálója. A delay gondolom azért kell, hogy legyen mit mérni a millissel.
(bár lehet benéztem valamit). A hozzászólás módosítva: Dec 9, 2016
(Fel adtam! Reménytelen eset!)
Különben sem fogja észrevenni, ha 5 naponta 1 szer 1000 helyett csak mondjuk 100 lesz a késleltetése!

A hozzászólás módosítva: Dec 9, 2016
|
|