Keresés

Részletes keresés

Tomiali Creative Commons License 2016.12.19 0 0 2607

Sziasztok.

 

Mitől lehet az, hogy mérek egy lm35-el 3-4 mérés jó az 5-ik mérés feljebb van 3 fokkal majd a következő megint  jó?

Kb 2 méter vezeték végén van az lm35. Próbáltam több kondival is de semmi nem változik. Percenként mérek.

Vargham Creative Commons License 2016.12.17 0 0 2606

> Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Arduino.h

135. sor:

int digitalRead(uint8_t);

Valamint ez a hivatalos ajánlás is:

https://www.arduino.cc/en/Reference/DigitalRead

Előzmény: Prof (2605)
Prof Creative Commons License 2016.12.17 0 0 2605

Hali!

 

Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

 

A debugnak ez a szintje a circuits.io-n nálam már kiakaszt mindent. A rendes szimulációnál is kihullik a hajam néha, de ha belehasítanék egy ilyenbe, akkor megállna, mint a bot.

 

Üdv!

Előzmény: Vargham (2603)
djz Creative Commons License 2016.12.17 0 0 2604

Hát pont ilyen ötletekre vadászok, mint ez a világítós.

Az a baj, hogy ezt egy közepesnél kevésbé szarabb rosszabb lépcsőházi automata tudja, ha van benne szervízüzemmód. És nem vagyok benne biztos, hogy drágább, mint az Arduinós megoldás bedobozolva, relével, stb.

A millis() overflow megoldást viszont tanulmányozom, köszi.

Vargham Creative Commons License 2016.12.17 0 0 2603

> U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Úgy szoktam. Most valamiért kimaradt.

 

> Ezt miért?

> int buttonState = LOW;

Mit miért? Miért van ez a változó, miért inicializálom LOW-ra, vagy miért pozitív logikájú a gomb?

 

> Szimulátor helyett inkább eszközt.

Mindkettőnek megvan a maga előnye.

 

> A szimulátornak három hatalmas baja van:

> egyrészt roppant rendszerigényes (szerver és kliens oldalon is),

Ez tény.

 

> másrészt nem real time, hanem lassúcska,

Ez is.

 

> harmadrészt nincs debug lehetőség egyáltalán.

Az általam linkeltben van. :-) Serial print is megy, lehet tenni breakpoint-ot, léptetni soronként, és nézni a változók értékét.

 

circuits debugger

Előzmény: Prof (2599)
Nooorbi91 Creative Commons License 2016.12.17 0 0 2602

Igen, igazatok van. Valóban rosszul tettem fel a kérdést. 
Mentségemre szolgáljon hogy hulla fáradt voltam és még csak nem is értek hozzá :D
Köszönöm mindenkinek a segítségeket. Próbálom memorizálni őket és ha legközelebb bármi bajom van akkor használni.
Vargham, a te verziódat raktam össze(bár egyenlőre még csak próbapanelen). Tökéletesen működik, köszönöm!

A lámpa időzítős funkció közbeni lekapcsolására nincs szükség.  Ez egy kinti lámpa lesz, ha valaki kimegy akkor megnyomja a gombot, a lámpa meg majd lekapcsol. Így működik a régi is. De ha valamit kell csinálni kint ami időigényesebb akkor bajos mindig nyomkodni a gombot, ezzel ez ki lesz küszöbölve.

Még egyszer köszönöm a segítséget mindenkinek! 

 

Prof Creative Commons License 2016.12.17 0 0 2601
Előzmény: Vargham (2597)
Prof Creative Commons License 2016.12.17 0 0 2600

Szimulátor helyett inkább eszközt.

A szimulátornak három hatalmas baja van: egyrészt roppant rendszerigényes (szerver és kliens oldalon is), másrészt nem real time, hanem lassúcska, harmadrészt nincs debug lehetőség egyáltalán.

Előzmény: Vargham (2596)
Prof Creative Commons License 2016.12.17 0 0 2599

Elegáns, teljesen más koncepció.

 

Ezt miért?

int buttonState = LOW;

 

U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Előzmény: Vargham (2597)
Prof Creative Commons License 2016.12.17 0 0 2598

Feltöltve találtam benne több hibát is, ezek egy része elég amatőr (hozzárendelés == sima = helyett). A maradékot még jó 20 percig debugoltam Serial Monitorral. Az if-ek egymásután és a bool-ok állítgatása kihozott olyan korrelációkat, amelyekből a bool-ok olyan kombinációja jött ki, amit nem vizsgáltam, emiatt végtelen ciklusba került. Az ok az egyszerűsítés: "ha B feltételt vizsgálom, tudom, hogy A feltétel mindenképp igaz, tehát akár ki is hagyhatom a vizsgálatból". No, ez marhára nem lett igaz, mert lett olyan eset, hogy B feltétel igaz volt ugyan, de az A feltétel egy korábbi vizsgálat eredménye képpen már nem teljesült. Már majdnem beleírtam egy újabb bool-t, de rájöttem. :-D
Egyébként tényleg jó feladat.

 

Előzmény: Prof (2595)
Vargham Creative Commons License 2016.12.17 0 0 2597

Közben én is megírtam. :-) A millis overflow figyelést kihagytam. És minden pozitív logikájú, hogy ne kavarjam meg a kérdezőt.

 

Itt van a kód:

https://gist.github.com/vargham/772c6b116f4aec4f0792dd573ee00137

 

És a szimuláció:

https://circuits.io/circuits/3546758-auto-off-lamp

Előzmény: Prof (2595)
Vargham Creative Commons License 2016.12.17 0 0 2596

Tanácsok és észrevételek:

 

  • Legyen a változók neve angolul. Ez a mix (Lampa, val) nem szerencsés.
  • val és val2 nem beszédes név. Kis idő múlva te magad sem fogod tudni, hogy mire vannak.
  • delay-t felejtsd el! Maga az ördög. :-)
  • Használj kód megosztót, mert így olvashatatlan.
  • Használj szimulátort, hamar kiderülnek a problémák.
Előzmény: Nooorbi91 (2590)
Prof Creative Commons License 2016.12.17 0 0 2595

Igen.

Én időközben megírtam, most ellenőrzöm. millis() overflow figyeléssel. Egyedül watchdog nincs benne. Meg delay() egy szál se. Dezájnolva 99 sor és csak két mágikus szám van benne. 3 define (pinek), 5 boolean, 5 unsigned long, mind globális, bár csak egy függvény (void loop() ) van.

És asszem életemben először az ellenőrzött 'kész' program compile error nélkül futott le.
#jonapomvan

Előzmény: Vargham (2594)
Vargham Creative Commons License 2016.12.17 0 0 2594

> Szerintem nagyjából az, hogy miért nem működik.

Szerintem is.

:-)

De én kíváncsi lettem volna, hogy az eredeti kérdező hogyan fogalmazza meg a kérdést. Már csak azért is, mert rengeteget segít, ahogyan precízen megkonstruálja a kérdést.

Szóval a nem működik, mi a baja az nem kérdés.

Az a tapasztalatom, hogy egy precízen feltett kérdésre sokkal többen és sokkal pontosabban válaszolnak. Az szintén tapasztalat, hogy egy kérdés precíz megfogalmazása közben 10-ből 9 alkalommal meg is válaszolom magamnak, és nem kell fórumokon kérdezősködni. Egyszerűen a probléma logikus végig gondolása segít.

Előzmény: Prof (2592)
Prof Creative Commons License 2016.12.17 0 0 2593

Szia!

Tényleg jó feladat. A mellékelt kód viszont nagyon nem egészen ezt csinálja.

Sorban a gondok:
1. LED nincs kimenetként deklarálva.
2. A nyomógombot érdemes aktív LOW-két használni: pinMode(kapcsolo, INPUT); aztán digitalWrite(kapcsolo, HIGH); Ez a belső pull-up ellenállást bekapcsolja, így a bemenet folyamatosan (kis áramon) magas jelszinten lesz. Ha lemegy 0-ra (ilyenkor a kapcsoló másik felét a földre kell kötni), akkor van gombnyomás. Üzembiztosabb és kevésbé zajérzékeny.
3. Változók. Ez így nem jó. Forrás olvasásra. Itt: data types. A lényeg, hogy bár most még annyira nagy galibát nem okoz, komplexebb programok simán elhasalhatnak rajta, hogy nem következetesen vannak használva a különböző változótípusok. Az int numerikus változó, ennek nincs TRUE és FALSE vagy HIGH és LOW értéke, bár az igaz, hogy az IDE vizsgálatoknál értékelheti úgy, mintha lenne, de a hozzárendelés ebben a formában gondokat okozhat.
4. 20 mp-es delay nagyon nem szerencsés. Mi van, ha ez idő alatt le akarod kapcsolni a lámpát? (Megoldás a blink without delay példában az Arduino tudástárban [lásd fent].)
5. Az első vizsgálatban látható 1 és 4 mp-es kivárások közül az 1 mp-esnek van értelme (bár te 2 mp-et írtál), a 4 mp-nek viszont semmi.
6. Semmi nem vizsgálja a második (bekapcsolt állapotban lévő lámpa kikapcsolására adott utasítást).

Kb. ennyi így első blikkre.

Előzmény: Nooorbi91 (2590)
Prof Creative Commons License 2016.12.17 0 0 2592

Szerintem nagyjából az, hogy miért nem működik.

Előzmény: Vargham (2591)
Vargham Creative Commons License 2016.12.17 0 0 2591

Tök jó feladat. Mi a kérdés?

Előzmény: Nooorbi91 (2590)
Nooorbi91 Creative Commons License 2016.12.17 0 0 2590

Sziasztok!

Szeretnék csinálni egy nyomógombbal vezérelhető lámpát ami adott idő után lekapcsol. Ez eddig nem is gond, viszont úgy kellene megcsinálni hogy ha a nyomógombot nyomva tartom mondjuk 2 másodpercig akkor a felkapcsolva maradjon a lámpa, és mellette egy visszajelző LED, ami jelzi hogy nem időzítős módban van. A lámpa a nyomógomb újbóli megnyomására kapcsolna le.

 


int Lampa = 9; // LED Pin9-re kotve
int LED = 8; // LED Pin8-re kotve
int kapcsolo = 7; // nyomogomb Pin7-re kotve

int val = 0; // Nyomogomb
int val2 = 0; //gomb hosszan nyomva
void setup()

{

pinMode(Lampa, OUTPUT); //  Lampa-hez tartozo lab kimenet

pinMode(kapcsolo, INPUT); // a nyomogombhoz tartozo lab bemenet

digitalWrite(Lampa, LOW); //Lampa kikapcsolasa

}

void loop()

{

val = digitalRead(kapcsolo); // nyomogomb allapotanak lekerdezese


if (val == HIGH)  // ha a nyomogomb nincs lenyomva

{

digitalWrite(Lampa,   HIGH);  //Lampa bekapcsolasa
delay(1000);               // varakozas 1 masodpercig
val2 = digitalRead(kapcsolo); // nyomogomb allapotanak lekerdezese
delay(4000);               // varakozas 4 masodpercig

digitalWrite(Lampa, LOW);    //Lampa kikapcsolasa

}

else  // kulonben

{

digitalWrite(Lampa,   LOW); //Lampa kikapcsolasa

}




if (val2 == HIGH)  // ha a nyomogomb nincs lenyomva

{

digitalWrite(Lampa,   HIGH);  // Lampa bekapcsolasa
digitalWrite(LED,   HIGH);  //LED bekapcsolasa

delay(20000);               // varakozas 20 masodpercig

digitalWrite(Lampa, LOW);    //Lampa kikapcsolasa
digitalWrite(LED,   LOW);  //LED bekapcsolasa

}

else  // kulonben

{

digitalWrite(Lampa,   LOW); //Lampa kikapcsolasa
digitalWrite(LED,   LOW);  //LED bekapcsolasa
}

}

Prof Creative Commons License 2016.12.15 0 0 2589

A gondolkodást mindenképp köszönöm!

Előzmény: Törölt nick (2585)
Prof Creative Commons License 2016.12.15 0 0 2588

Szia,

Ezzel több nehézség van: 1. 3 fázis 400 V a gép alap tápellátása, a belső mechanikus részek 230 V (egyik fázis). 2. Még a 230 V-os részen is van 4 ehhez hasonló elem, plusz egy motor, ami az összfogyasztásba beleszólhat, és pont az a pláne, hogy ennek az egy (pontosabban kettő) elemnek az állapotát kellene figyelni.
Most már ott tartunk, hogy ha máshogy nem megy, minimálinvazív is lehet (kapcsolóra kötött saru lehúz, betold, mér.

Előzmény: Törölt nick (2585)
Törölt nick Creative Commons License 2016.12.15 0 0 2587

Nem összekeverendő a feszültségfigyelő relével, remélem itt se keverték össze a lírásnál :-).

Előzmény: Törölt nick (2586)
Törölt nick Creative Commons License 2016.12.15 0 0 2586
Előzmény: Prof (2584)
Törölt nick Creative Commons License 2016.12.15 0 0 2585

Esetleg egy áramfigyelő relé a 230 aljzatra kötve ahová be van dugva? Vannak ilyen érzékenységű típusok. És egy relé kontaktot ad, van amelyiknél állítható is, milyen áramerősségre jelezzen be.

 

Előzmény: Prof (2584)
Prof Creative Commons License 2016.12.15 0 0 2584

230 V AC

Előzmény: Törölt nick (2583)
Törölt nick Creative Commons License 2016.12.15 0 0 2583

DC vagy AC amit mérni akarsz?

Előzmény: Prof (2582)
Prof Creative Commons License 2016.12.15 0 0 2582

Szervusztok,
Nyüglődök tovább. Korábban érdeklődtem non-invazív árammérés tárgykörében, és rendeltem is eszközöket, amelyek most jöttek meg.
EZT és EZT.

Oké, a második minimálinvazív, alapvetően más célra vásároltam, ahol működhet (és fog is). Az érintésmentes fáziskeresőceruzás történetbe nem mentem bele, mert a berendezés belső felépítése nem teszi lehetővé a használatát (egyébként az is azonos elven működik, tehát sokkal nem lettem volna beljebb).

Namost. A mai mérések alapján az a nehézség támadt, hogy a mérendő eszköz áramfelvétele nem az (egész) apmeres, hanem a néhány tíz milliamperes tartományba esik: nem megy 100 mA fölé, legalábbis a gépen kívüli mérések alapján (az, hogy gépen belül mi történik, már egy más kérdés, ezt jövő héten tudom majd tesztelni).

Ötletek?
Köszönöm előre is,

Prof

spiler0078 Creative Commons License 2016.12.12 0 0 2581

Hali!

Megoldható lenne, hogy küldesz nekem egy emailt (profilomban elérhető) és én arra válaszban küldöm?

 

Köszi! :)

 

Spiler

 

 

Előzmény: Sploc (2580)
Sploc Creative Commons License 2016.12.12 0 0 2580

Hmm. Sima gmail-es cím. Akkor tedd fel, ide, és add meg a linkjét. http://indabox.hu/

(vagy bárhova máshová)

Előzmény: spiler0078 (2579)
spiler0078 Creative Commons License 2016.12.12 0 0 2579

Szia!

 

Küldtem emailt, de most nézem, hogy valamiért nem kézbesíthető erre a címre.

Előzmény: Sploc (2577)
Brandyman Creative Commons License 2016.12.10 0 0 2578

A belső EEPROM érdekelne. 

Előzmény: Prof (2576)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!