HobbyCNC fórum
v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

Új regisztráció / Átregisztráció a régi fórumról
    
   

 
Arduino



 

Időrend:
Oldal 12 / 42 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   8  9  10  11  12  13  14  15  16   Következő ►  Utolsó ►|

  Fórum főoldal  |  A lap aljára

B.Zoltán | 1722    2019-08-04 17:56:10 [1516]

Előzmény: Törölt felhasználó, 2019-08-04 17:40:29 [1515]


Törölt felhasználó    2019-08-04 17:40:29 [1515]

Műhelyes verzió erősáramú szekrénybe foglal majd helyet...



Csuhás | 6750    2019-08-02 07:53:36 [1514]

Találtam egy nagyon jónak tűnő oldalt arduinó témában. Kezdőknek nagy segítség lehet.

https://www.ob121.com/doku.php?id=:hu:start


Törölt felhasználó    2019-07-27 12:21:27 [1513]

köszönöm!

Előzmény: frob, 2019-07-27 09:03:24 [1512]


frob | 2339    2019-07-27 09:03:24 [1512]

millis-t rakd ki egy külön függvénybe ami a loopban meghívódik
benne pedig csak a szükségesnél nem több bool változó ami a ketyegést mutatja

a loop-ban lévő if-nek
és ott már ha pl a millis 1 sec ütemet ad akkor értelemszerűen az if en belül számolod pl ha 1 perc kell és nullázod majd megvárod a következőt

valahogy így

if(millisbool==1){
masodperc++;
millisbool=0;
}

if(masodperc==60){
valamitortenik();
}



a millis függvényében meg csak annyi van hogy a bool változót 1 re állítod amikor megmérted az 1 sec et..

ami a lopban pöröghet mint állat...

és amikor már megvan a perces if, ott számolhatsz órát is...
vagy is pontosabban utána, mert vagy ott nullázod ki a masodpercet , vagy a az előtte lévö ifben...

és akkor nem fog megakadni...

Előzmény: Törölt felhasználó, 2019-07-26 16:37:11 [1509]

Törölt felhasználó    2019-07-26 22:56:41 [1511]

Ha nincs net a közelbe...


Törölt felhasználó    2019-07-26 16:42:49 [1510]

50 nap probléma megoldva ezel...

int period = 1000;

unsigned long time_now =0 ; //4294967295 max

void setup() {
Serial.begin(115200);
}

void loop() {


if(millis() - time_now > period){ //good no overf...

time_now = millis();


Serial.println(millis());
Serial.println("Hello");

}
----------------------
periudikus lenne de ez nem müködik?
if(millis() - time_now >= period){ //good no overf...
time_now = millis();
Serial.println("1");
time_now += period;
}
else
{

Serial.println("0");
}


----------------------


Törölt felhasználó    2019-07-26 16:37:11 [1509]

millisel vakarozom.. a fö kodbol pár helyröl ki akarom venni a delay megoldást sajnos multi loop ez nem olyan egyszerü megoldani pl loop 2 ha nem fut épen (nincs meghivás) millis áll benne (nem ketyeg) de eben meg van olyan rész aminek csak loop2 meghiváskor kéne csak futni...

Előzmény: juhasz, 2019-07-26 16:27:13 [1508]


juhasz | 244    2019-07-26 16:27:13 [1508]

Akkor már csak azt kell kitalálni, mivel lehet a delay-es várakozást kiváltani.

Előzmény: Törölt felhasználó, 2019-07-26 10:00:04 [1507]


Törölt felhasználó    2019-07-26 10:00:04 [1507]

várakozást percre irtam ott megtörténik e a fügvény (ne keljen orát várni)
delay 1000 megoldja a problémát up nem pörög és cak 1 ugrik...

köszi a kitartásért!

Előzmény: juhasz, 2019-07-26 06:09:04 [1506]


juhasz | 244    2019-07-26 06:09:04 [1506]

if ( now.minute() <= 0 && now.second() < 1){ up = up + 1;}

Ez a videón:

if ( now.second() <= 0 && now.second() < 1){ up = up + 1;}

Ezt javítsd előbb. Aztán ha még mindig nem működik, tegyél már a { up = up + 1;} után próbából egy delay(1000)-et.

Előzmény: Törölt felhasználó, 2019-07-25 22:04:41 [1505]


Törölt felhasználó    2019-07-25 22:04:41 [1505]

ora kodjába....

Előzmény: juhasz, 2019-07-25 21:29:00 [1504]


juhasz | 244    2019-07-25 21:29:00 [1504]

Küld már el. Nem lehet hogy ötször is lefut a loop egy másodpercen belül?

Előzmény: Törölt felhasználó, 2019-07-25 21:22:45 [1503]


Törölt felhasználó    2019-07-25 21:22:45 [1503]

Korai volt az öröm az ora kodjába beraktam fö loop részbe ott az up változó ha if ugrik nem + egyet ad hozá percenként hanem egymás után gyorsan 5 ad hozzá ez mi a franc csinálhatja tulfut az up változó?

Előzmény: juhasz, 2019-07-25 20:57:05 [1502]


juhasz | 244    2019-07-25 20:57:05 [1502]

Előzmény: Törölt felhasználó, 2019-07-25 17:04:39 [1501]

Törölt felhasználó    2019-07-25 17:04:39 [1501]





Előzmény: juhasz, 2019-07-25 16:16:04 [1499]


Törölt felhasználó    2019-07-25 16:23:26 [1500]

Akkor még egy probát teszek...

Előzmény: juhasz, 2019-07-25 16:16:04 [1499]


juhasz | 244    2019-07-25 16:16:04 [1499]

if ( now.minute() = 0 && now.second() < 1){ valtozo = valtozo + 1 ;}
if valtozo = 5 { (ide amit szeretnél csináltatni) valtozo = 0 ; }
Úgy is küldtem át neked, ne rakd bele a now.hour()-t.

Előzmény: juhasz, 2019-07-25 16:13:49 [1498]


juhasz | 244    2019-07-25 16:13:49 [1498]

Ez elrontja szerintem: now.hour() <= 1
Nem kell figyelni az órákat, csak a perceket, ha 0 perc akkor egész az óra
Így most csak 0 és 1 órakor ad hozzá a változóhoz.

Előzmény: Törölt felhasználó, 2019-07-25 15:43:57 [1496]


Törölt felhasználó    2019-07-25 15:45:21 [1497]

5 oránkét 1s igaz feltétel...


Törölt felhasználó    2019-07-25 15:43:57 [1496]

Probáltam!
ha ora perc másodpercet van egyben ora változot nem veszi sosem figyelembe akárhogy rako kissebb nagyobb vagy egyenlő jelet az ora fügvényhez...
pedig a 3 változó int jelegű (rtc lib)


if (now.hour() <= 1 && now.minute() <= 1 && now.second() < 1){ up = up + 1;}
//if ( now.minute() < 1){ up++;}

if (up == 5) {digitalWrite(led,HIGH); up = 0; }
else
{
digitalWrite(led,LOW);

}

Előzmény: juhasz, 2019-07-25 15:13:46 [1495]


juhasz | 244    2019-07-25 15:13:46 [1495]

Amit javasoltam privátban, az sem működik?

Előzmény: Törölt felhasználó, 2019-07-25 11:11:34 [1494]


Törölt felhasználó    2019-07-25 11:11:34 [1494]

Szépen leírják a feltételeket csak a lényeg sosem teljesül célirányosan 24h többször kell futnia nem csak egyszer csak az igaz feltételnek csak 1 secre!
Ekkora feladat lenne ez 5 orénkét 1s igaz feltétel?
Egyenlőre nem sikerült a kívánt megoldás 2 forumon sem!
Sajnos a lenti ora projektem 3..4 hét munkám volt valaki egy köszönöm sem méltatót (cserébe a forrásért) vissza meg ilyen kiss kérdésre meg semmi válasz sem méltatóak akik ez kisujjak kiráznánk....

Előzmény: frob, 2019-07-25 07:55:39 [1493]


frob | 2339    2019-07-25 07:55:39 [1493]

elegánsabb és memóriatakarékosabb ha bool változót használ
ha megtörtént 1, ha újra meg kell hogy történjen ott 0 és majd amikor megtörtént megint 1
egyszer ellenőrizni kell hogy az 5 óra letelt e, ha igen akkor 1 ekkor lefuthat a másodperces cucc

egyébként meg óránként mérnék és ahogy mondod is egy változó értékét növelném és ott amikor az 5 re vált kinulláz a másodpercet engedélyezném, amikor lefutott akkor meg tiltanám, így biztos csak egyszer fut le 5 óránként...

de persze biztos más meg másképp csinálná

Előzmény: juhasz, 2019-07-23 21:20:11 [1491]


ebalint | 1774    2019-07-24 07:12:09 [1492]

Nézd meg.

Több helyen is található

Előzmény: Törölt felhasználó, 2019-07-23 21:12:14 [1490]

juhasz | 244    2019-07-23 21:20:11 [1491]

Vagy lehet még jobb lenne, ha egy változóhoz minden óra 0 perc 0 másodperckor hozzáadnál +1-et.
Amikor a változó értéke 5, lefutna aminek le kell, és nullázódna a változó.
Bár biztos van erre elegánsabb megoldás is.

Előzmény: Törölt felhasználó, 2019-07-23 21:12:14 [1490]


Törölt felhasználó    2019-07-23 21:12:14 [1490]

Hogy kell?
50nap van trükk ujra induljon?

Előzmény: juhasz, 2019-07-23 21:10:24 [1489]


juhasz | 244    2019-07-23 21:10:24 [1489]

Miért nem teszel egy millis-t be ami 5 óránként nullázódik?

Előzmény: Törölt felhasználó, 2019-07-23 21:06:01 [1488]


Törölt felhasználó    2019-07-23 21:06:01 [1488]

Látod senki sem...
Ezt kérdezem"Minden 5 oránban 1sec igaz feltételt szeretnék!"

Előzmény: juhasz, 2019-07-23 20:53:33 [1487]


juhasz | 244    2019-07-23 20:53:33 [1487]

Ez 5 óra után minden percben kapcsolja szerintem. Mert 6 óra is nagyobb mint 5.

Előzmény: Törölt felhasználó, 2019-07-23 17:15:32 [1485]


Törölt felhasználó    2019-07-23 17:17:35 [1486]

Még tejársz a legjobban fejlesztet változat...
csatolom privátba...

Előzmény: VighLajos, 2019-07-23 14:10:13 [1483]


Törölt felhasználó    2019-07-23 17:15:32 [1485]

Minden 1 min bekapcsol 1 secre ez a fügvény!

if ( now.minute() >= 1 && now.second() < 1)


itt nem veszi figyelembe az ora váltózót?

if (now.hour() >= 5 && now.minute() >= 1 && now.second() < 1)


Minden 5 oránban 1sec igaz feltételt szeretnék!


frob | 2339    2019-07-23 15:21:13 [1484]

válaszoltam

Előzmény: juhasz, 2019-07-23 13:06:34 [1482]


VighLajos | 2358    2019-07-23 14:10:13 [1483]

...lemaradtam?

Előzmény: Törölt felhasználó, 2019-07-12 16:36:22 [1461]


juhasz | 244    2019-07-23 13:06:34 [1482]

Írtam privátban.

Előzmény: frob, 2019-07-23 07:41:30 [1481]

frob | 2339    2019-07-23 07:41:30 [1481]

hogy mi változik a két feltöltés között azt nem tudom,
de ha az lcd megy egyébként, ( kontakt hiba nincs) akkor annak mindig mennie kell

de azért érdekelne hogy a láb birizgálást hogy oldottad meg, milyen időzítéssel, timerrel?
közvetlenül elérhetően az arduinoban 2 fajta van, egyik amelyik megfogja szintén a procit, a másik fajtával meg számolni kell úgy adja a pontos időzítést

utána meg jönnek a timer libek...

ügye a delay egyértelműen felfüggeszti a program futását

a micros és a millis -pedig bekapcsolástól kezdve számol az egyik hamarabb a másik később de körbefordul
a micros 70 perc
a millis 50 nap
viszont ezekkel számolni kell mert az aktuális bekapcsolástól eltelt időt adják vissza...

de mivel a kódot még nem láttuk, kb bármi lehet

Előzmény: juhasz, 2019-07-21 21:31:16 [1478]


Törölt felhasználó    2019-07-22 09:40:30 [1480]

lcdnek van késés ideje/válasz(kijelzés) 4bit üzemodba még lassabb ha jol tudom ez 100..200ms... ha ez alá mész idöben áll a kijelzés ez ez igaz a törlési idöre is... valamit osztást használ a program részben és azt jelenisd meg!

Előzmény: juhasz, 2019-07-21 21:31:16 [1478]


juhasz | 244    2019-07-21 21:32:08 [1479]

Igen, régen ezt használtam én is, köszi. Ki fogom próbálni.

Előzmény: Törölt felhasználó, 2019-07-21 11:58:17 [1476]


juhasz | 244    2019-07-21 21:31:16 [1478]

De ha beállítom, hogy ha a fordulat 100 vagy nagyobb, a 13pin legyen magas, egyébként legyen alacsony, akkor azt szépen váltogatja. A kijelzőn viszont nem látszik csak hogy 0 a fordulat. Ebből gondolom, hogy a program fut csak a kijelző nem megy valamiért. Amikor viszont jól működik, akkor a kijelzőn is szépen látszik, ahogy változik a fordulat.
A működő és nem működő program ugyanaz, csak újra feltöltöm.

Előzmény: frob, 2019-07-21 18:00:55 [1477]


frob | 2339    2019-07-21 18:00:55 [1477]

kijelzőnek időzítések lényegesek, az hogy neked látszik hogy a program fut, mikor veszel te észre 1-2-10ms -ot?
sztem kb kizárt

egyébként meg kezd szépen elölről, eső körben az lcd-n egy külön fájlban jeleníts meg mondjuk egy sima változót hogy másodpercenként növeled. Ha a tápot nem veszed le a kijelzőn az utolsó állapot van, az meg hogy restnél nem törlődik minden bizonnyal azért van mert nem nyomsz neki egy törlést
és még a kontakt hibáról nem is beszéltünk

Előzmény: juhasz, 2019-07-21 11:29:23 [1475]


Törölt felhasználó    2019-07-21 11:58:17 [1476]

Szintén én is de könyvtár / meghajtó átalakitó tud szivatni rendesen hiába jó a szoftveres részed!
csatolom a gyüjteményemet...LINK

Előzmény: juhasz, 2019-07-21 11:29:23 [1475]


juhasz | 244    2019-07-21 11:29:23 [1475]

De a program fut, mert ha kapcsoltatok Pint és teszek rá ledet, annak szépen változik az állapota. Az is a loop-ban van.
A kijelző pedig le van fagyva. Ha ismét feltöltöm a vázlatot, akkor pedig minden jó. Resetre sem szokott helyre állni az lcd. Illetve feltöltéskor is van, hogy nem jó, de akkor le sem törli az lcd-t. Nem tudom érthető-e :D.
Szóval van, hogy már az elejétől nem működik a kijelző, nem változik rajta semmi, csak azt irja ami volt rajta, van amikor semmi baja. Amikor nem működik, akkor sem feltöltéskor sem resetre nem törlődik a kijelző.

Cree, csak műkedvelő vagyok, fogalmam nincs mennyi a lekérdezési idő. LiquidCrystal_I2C könyvtárat használom.

Előzmény: frob, 2019-07-21 08:33:25 [1474]


frob | 2339    2019-07-21 08:33:25 [1474]

az interupt, az az megszakítás megjön, majd mindaddig míg innen ki nem esik a program, tehát valami bazi hosszú időigényes feladat fut végig, minden ÁLL!!!
ezért érdemes azt csinálni. hogy interuptban pl egy bool váltózó értéke lesz 1,
és a főprogiban pedig meghívod a függvényedet úgy hogy

if ( valtozo ==1){
a te függvényed;
valtozo=0;

}
a megszakítás így csak egy változót állít be, ami egy bool ráadásul, ami miután lefut a függvényed vissza is áll alapértékre várva a következőt
annyira rövid időre megakasztva a program futását amennyire csak lehet

tehát lényeg, interuptban nincs csak max 1 program sor, ami nem egy függvény hívás!! hanem csak egy jelzőbit állítása

Előzmény: juhasz, 2019-07-19 19:59:55 [1472]


Törölt felhasználó    2019-07-19 21:34:45 [1473]

i2c 4bit modba használja lekérdezési idö mennyi?

Előzmény: juhasz, 2019-07-19 19:59:55 [1472]


juhasz | 244    2019-07-19 19:59:55 [1472]

Ezt nem értem ám.
attachInterrupt(0, rpm, RISING), ne hívjam meg az rpm függvényt?
Bár kicsit gyomláltam, sei és cli kikerült, most jól működik.

Előzmény: frob, 2019-07-19 06:51:25 [1471]

frob | 2339    2019-07-19 06:51:25 [1471]

megszakítások érdekes dolgokat tudnak produkálni, talán úgy tudod csökkenteni a hibát, hogy ha a megszakításban csak jelző bitet állítasz, nem pedig benne futtatod le a mit le akarsz, hanem így átadod a fő proginak, így nem csúsznak el az időzítések...

Előzmény: juhasz, 2019-07-18 15:03:02 [1470]


juhasz | 244    2019-07-18 15:03:02 [1470]

Üdv. Az a problémám, hogy ha külső megszakításkezelést csinálok, nem működik az I2C 1602-es LCD.
Ez normális? Összeveszik valami valamivel?


Törölt felhasználó    2019-07-17 21:53:01 [1469]

köszi probálom!

Előzmény: dezsoe, 2019-07-17 21:43:15 [1468]


dezsoe | 2934    2019-07-17 21:43:15 [1468]

A gugli szerint a ReadPressure-nek nincs paramétere csak visszatérési értéke:

float Adafruit_BME280::readPressure(void)

Forrás itt.

Előzmény: Törölt felhasználó, 2019-07-17 21:09:06 [1467]


Törölt felhasználó    2019-07-17 21:09:06 [1467]

böviteném a lenti orát de néha elég keserü tud leni ha elakad matek!

Mi a hiba: no matching function for call to 'Adafruit_BME280::readPressure(float&)'

void printValues() {
//String pre [bme.readPressure[SLpressure_mB]);
String pre (bme.readPressure(SLpressure_mB));
String temp (bme.readTemperature());

float SLpressure_mB = (((pressure * 100.0)/pow((1-((float)(ELEVATION))/44330), 5.255))/100.0);

P.setIntensity(1);
char time_string[100];

sprintf(time_string, "%d/*C %d/mPa ",temp.toInt(),pre.c_str());
P.displayText(time_string, PA_CENTER, SCROLL_SPEED2, PAUSE_TIME3, PA_SCROLL_RIGHT ? PA_SCROLL_LEFT : PA_SCROLL_RIGHT);


while (!P.displayAnimate()) {
P.displayAnimate();
ESP.wdtFeed();

}


  Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 12 / 42 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   8  9  10  11  12  13  14  15  16   Következő ►  Utolsó ►|


 ◊ 
[ 1.0816 ]