Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   222 / 853
(#) kapu48 válasza Tetye hozzászólására (») Máj 2, 2016 /
 
  1. if(1)// 1 = igaz
  2. {
  3.   végrehajtódik
  4. }
  5.  
  6. if(0)// 0 = hamis
  7. {
  8.   nem hajtódikvégre
  9. }
(#) Tetye válasza kapu48 hozzászólására (») Máj 2, 2016 /
 
Nyugi, én értem miről beszélsz, csak azt nem értem hogy ő miért nem érti.
Amúgy mondtam hogy ha mást szeretne közben választani akkor csinálja így, ha csak ennyi a cél akkor egyszerűbb egy while al addig rohadni az if ben amíg meg nem járatja a motort oda vissza.
(#) kapu48 válasza Tetye hozzászólására (») Máj 2, 2016 /
 
Már 1 hete kinlódok vele!

De nem hajlandó tanulni 1 sortse!
(Végül kénytelen voltam leírni a bool értelmét ís! pedig elötte már belinkeltem!)

A fene se emlékszik már az elejére, de mintha multitaskingot akart volna csinálni?
(#) Tetye válasza kapu48 hozzászólására (») Máj 2, 2016 /
 
szú-szá.... először mindenkinek a google-t kell megtanulni használni amúgy nekem is volt az elején olyan dolog amit hiába mondták hogy "hülye vagy fiam az bíz piros" én elhittem hogy piros csak azt nem értettem hogy miért nem kék és ezáltal a nem is tudtam megindokolni.
Az tény hogy ez egy inkább egy egyszerűbb logikai feladat lenne ha a kolléga értené miről van szó, de lehet hogy nem a szorgalmával tanulásával van a baj hanem csak mert nem látja át hogy mi miért van. Annak ellenére hogy most már tényleg még a megoldás is előtte van és nem egy nagy mutatvány.....
(#) eadx válasza kapu48 hozzászólására (») Máj 2, 2016 /
 
Az még az elején volt amikor azt hittem , hogy egyszerre kell a motoroknak mennie, de nem kell, mert felesleges csak max 5 mp spórolás.
(#) sejtek hozzászólása Máj 2, 2016 /
 
Sziasztok

Csináltam egy rendszert ahol három nano, és egy mega dolgozik együtt. i2c csatornán próbálom létrehozni a kommunikációt, de nem jön össze. Az első próbálkozásoknál még működött, de olyan dolgokon változtattam aminek semmi köze a kommunikációhoz, azóta nem működik. Visszaállítottam az első verziót, de úgysem jó. Az is elég furcsa, hogy ha bekapcsolom a soros monitort, akkor másképpen vezérli a kimeneteket. Láttatok már ilyet?
(#) kapu48 válasza sejtek hozzászólására (») Máj 2, 2016 /
 
Az i2c és a soros monitor is ídőzítés érzékenyek.

Ha közbejön valami megszakítás? Szétcsúszik az ídőzítésük.

A programod ismerete nélkül ez csak találgatás!
(#) kapu48 válasza eadx hozzászólására (») Máj 2, 2016 /
 
Akkor átengedlek Tetye-nek!

Nekem már nincs erőmm ezt még egyszer végig csinálni, a While magyarázásával!
(#) _BiG_ válasza eadx hozzászólására (») Máj 2, 2016 / 1
 
Szerintem neked annyi a problémád, hogy először algoritmizálni, programot szervezni kellene megtanulnod, hogy miként működjön a hardvered a kívánságod szerint.

Az a kétmotoros móka egyszerű, mint a faék.

Az egész egy körfolyamat, várakozásokkal, és események bekövetkezései lökik tovább a folyamatot, szigorú sorrendben. Ehhez bemenő jeleket kap a végálláskapcsolóktól és vezérlést is - gondolom - egy-egy kimeneten ad (Motor1Előre, Motor1Hátra, stb).

Tehát az egész egy nagy loop, amin belül:
- elindulunk abból a helyzetből, hogy mindkét motor áll (vezérlőkimeneteket reprezentáló változók értéke 0), és a végálláskapcsolók közül az 1-esnek indexelt (Motor1Vég1, Motor2Vég1), kezdeti helyzetet jelölők adnak zárt szintet, mondjuk 1-et. (lehetne 0 is a zárt állás eredménye, ez csak értelmezési kérdés, ami a működésből adódik: tápot ad-e a kapcsoló a bemenetnek, ha zárt, vagy földet).

- mivel a Motor1Vég1 = 1, indítjuk az 1-es motort, a Motor1Előre változó legyen 1 (kimenetet vezérlő változó), ezzel elindítjuk előre az 1-es motort. (Amúgy nem kell if ide, mivel abból indultunk ki, hogy elöl van a motor. Tehát akár értékadás is lehet itt: Motor1Előre = Motor1Vég1; vagy figyelhetünk oda arra is, hogy a második motor is elöl legyen: Motor1Vég1 ÉS Motor2Vég1 = 1? Nem muszáj if ide sem, ha megfelelő értékadást használsz...)

- most jön egy várakozás, ami egy kis loop, addig, míg a Motor1Vég2 == 0. Fontos ez a logikai figyelés, hogy ennek a logikai eredménye 1 legyen (0-e? igen!), hogy benne maradjunk a ciklusban, amíg oda nem ér a motor és 1-et nem ad a végálláskapcsoló.

- mivel a várakozásból csak akkor lépünk ki, ha a második végálláskapcsoló 1-et ad (0-e? nem!), leállíthatjuk a motort: Motor1Előre változó legyen 0. Az 1-es motor megáll.

- indulhatunk vissza, Motor1Hátra változó legyen 1. Vagy így is lehet: Motor1Hátra = Motor1Vég2. Értékadással, persze figyelve, hogy megfelelő értéket kapjon. De ami fontos, hogy előbb állítsd le a motort, mielőtt visszafele elindítanád!!

- megint várakozunk egy kis loop-ban, amíg a Motor1Vég1 == 0. Mással nem foglalkozunk, ha nem muszáj...

- amint 1-re váltott, azaz visszament az elejére, kiléptünk a kis loop-ból, ekkor a Motor1Hátra változó legyen 0, leállítva az 1-es motort.

- most a Motor2Előre legyen 1 (Nem szükséges vizsgálni a Motor2Vég1-et, mert abból indultunk ki, hogy a 2-es motor az elején van. De ha akarod, akkor a programod elején, még a fő loop előtt megvizsgálhatod a kezdő végálláskapcsolókat és ha valahol útközben vannak a motorok és emiatt nem adnak 1-et a kezdő végálláskapcsolók, akkor visszaviheted őket az elejére - hibakezelés.) De ugyanúgy lehet sima értékadás: Motor2Előre = Motor2Vég1. Előnye ennek, hogy csak a végálláskapcsoló biztos bekapcsolása indíthat, menet közben valahol álló motor nem! Ugyanez az 1-es motor esetében is igaz fentebb, tessék, implicit hibakezelés

- megint várunk egy kis loop-ban, amíg a Motor2Vég kettő == 0-val. Ha 1-re vált, kilépünk (0-e? nem!)

- Motor2Előre legyen 0, leállítva a 2-es motort.

- Motor2Hátra legyen 1, indul vissza. (Vagy szintén a megfelelő végálláskapcsoló adhat értéket a kimenetet vezérlő változónak.)

- megint egy kis loop, amíg a Motor2Vég1 == 0, addig, amíg 0. Ha 1, kilépünk a loop-ból.

- és hoppá, elértünk a kiinduló állapothoz, mehetünk vissza a nagy loop elejére és kezdhetjük elölről. De akár a Motor2Vég1 is indíthatja az 1-es motort az elején, megint egy implicit hibafigyelés...

Ezt programozd le. Persze ilyen későn én is tévedhetek, nézzétek át, köszi
A hozzászólás módosítva: Máj 2, 2016
(#) _BiG_ válasza _BiG_ hozzászólására (») Máj 2, 2016 /
 
Ahogy kicsit még filóztam a dolgon, arra jutottam, hogy elkelhet némi hibakezelés esetleg, mert elég "figyelmetlen" a program néhány helyen, de első körben azért működőképes lehet. Néhány kölcsönös állapotkizárást még bele lehet tenni, ha kell - hogy csak az egyik vagy a másik esemény legyen, de tutira. Ez a hibatűrést növeli.

Viszont amit nem hangsúlyoztam, hogy a végálláskapcsolóknak határozott értéket kell visszaadniuk, prellmentesen, különben ez a programváz nem fog jól működni. Persze megoldható a dolog, kis plusz hozzáadásával, de a nagy egészet nem változtatja meg.
(#) kapu48 válasza _BiG_ hozzászólására (») Máj 3, 2016 /
 


Benned 1 regény író vesszet el!


Mondjuk az én megoldásommal, amig járnak a motorok.
Közben bekapcsolhatja a kávéfőzőt, és megnézhezi, hogy hány fokos a motor... stb?

Mert nem várakozik 1 hosszú folyamat végére!
A hozzászólás módosítva: Máj 3, 2016
(#) _BiG_ válasza kapu48 hozzászólására (») Máj 3, 2016 /
 
Köszi
Bár inkább úgy mondanám, hogy bennem egy regényíró veszett meg ennyi tipródást látva

Igazából tényleg ott a gond, hogy sokan fordítva fogják meg a dolgot. Írják-ollózzák a kódot halomba, de a nagy egészet, hogy tulajdonképpen mit is akarnak és mivel, azt nem látják. Fától az erdőt. Először legyen egy keret, amit ki lehet tölteni, de amin látszik, hogy mit is kell csinálni. Meg kell tervezni, pl. úgy, ahogy tettem. Így megmarad az átlátás, a logika.

Én egy olyan megoldást mutattam, amit a nagy beszélgetések közepette leszűrtem, hogy a kollega mit is akarhat. Ahogy megjegyeztem, lehet még bővíteni, ha kell. De lehet megszakításos megoldással is megírni és akkor a program, amíg mást nem kell tennie a motorok körül, addig lemehet sörért a boltba akár De az a fontos, hogy azt megtegye, amit kell, akkor, amikor kell. De szegény hobbistánknak egyelőre még van mit megértenie és algoritmizálást tanulnia. Előbb az egyszerűt értse meg, hogy aztán kibővíthesse.
Meg ne csak példaprogikat drótozzon össze, hanem megoldásra jusson, de abban, amit ő akar, úgy, ahogy neki jó.

Persze, lehet sokkal bővebb hibakezelést is beletenni, hőfokfigyelést, stb. de ez nem volt feltétel. Jöjjön rá, mi kell neki, aztán már, ha érti kicsit ezt, akkor már bele tudja építeni.
(#) zosza18 válasza eadx hozzászólására (») Máj 3, 2016 /
 
Szia!
Olvasgatom az itt írtakat, inkább tanulás céljából. Azt nézem a programodban, hogy a motor függvények ugyan azok oldalanként, szerintem elég lenne akkor a fele, mivel végülis ugyanazt csinálod oda vissza is. Konkrétan arra gondolok, hogy void m1 (void) és void m2 (void) függvények lennének csak, így spórolnál jópár sort. A másik amiért elkezdtem itt gépelni most... hogy a végállás kapcsoló állapotát kellene beolvasni és annak alapján már tudnád, hogy voltkint az m1-es motor és mehet az m2-es. Az if-es sorokba még beteszel egy és logikát a végálláskapcsolóval, így már akkor lenne sorrended. Most leírni nem tudom, de ha estig nem lesz rá megoldás akkor leírom és elküldöm.
(#) eadx válasza _BiG_ hozzászólására (») Máj 3, 2016 / 1
 
Nagyon találó és részletbemenően ki vagyok elemezve, már már az idióta határát is súrolom. Azért pár szó eshetne arról is, hogy eljutottam a led villogtatástól a függvény írásig.
Mert mint mondják" a lovat nem csak hajtani, abrakolni is kell".
(#) kapu48 válasza eadx hozzászólására (») Máj 3, 2016 /
 
Nem! Nem jutottál el sehova!

Eddig mindent más csinált helyeted.
Még az alapok is hiányoznak!

Rengeteget kel még tanulnod, mint a jó Papnak!
(#) vargaf válasza jeges hozzászólására (») Máj 3, 2016 / 1
 
Nem ebben a témában, de valaki privát üzenetben kért segítséget. Azonnal válaszoltam, megadtam a megoldást. Azóta 3 hét telt el, be sem lépett a Hobbielektronikára, nem jelzett vissza, hogy megoldódott a problémája. Megint más témában teljes dokumentációt küldtem, amiben minden adat benne van amire szüksége lehet. Köszönet helyett azt várja, hogy én oldjam meg a feladatot, mert Ő arra vállalkozott amihez nem ért. Ezek után elmegy az ember kedve a segítségadástól.
(#) kapu48 válasza vargaf hozzászólására (») Máj 3, 2016 /
 
Teljes mértékben igazat adok neked!

(#) Kera_Will válasza atus1981 hozzászólására (») Máj 3, 2016 / 1
 
Alkatrész család adatlapokat kell olvasgatni.Pl az ULN20xx elemek között nézelődni vagy más tranzisztor tömböket pl.: ha HEstoreban rákeresel az ULN20 kifejezésre akkor kapsz egyéb találatokat:pl.: ezt a listát
Akkor feltűnhet az ULN2068 ami 1,5 A kollektor árammal rendelkezik.
Persze emiatt csak 4db darlington fokozat van benne.
Tehát 2 db kell belőle. A nyák kialakításánál ügyelni kell a GND lábak szigetei minél nagyobbak legyenek mert (akár egybe függőek is 4,5,12,13 lábak) mert a disszipáció azokon is történik.
ULN IC elhagyása és olyan NPN tranzisztorok választása amik kényelmesen elkapcsolnak 50-60 mA-t 12V-on 1-5 mA meghajtásra.pl.: BC301 kb.: 2 - 5 k ohm bázis előtét ellenállással és mindegyik tranzisztorhoz a kollektor és a + táp közé pl.: 1N4148 dióda záróirányban bekötve. Lehet válogatni
A hozzászólás módosítva: Máj 3, 2016
(#) vargaf válasza kapu48 hozzászólására (») Máj 3, 2016 /
 
A másik bosszantó dolog amikor a böngészőben való keresés helyett ide ír, azzal kezdve írását, hogy "nem találtam" semmit. Az én böngészőm pedig több ezer találatot ad. Talán meg kellene tanulni a böngésző használatát. Sokszor tesznek fel olyan kérdést is amit már többször is megválaszoltunk itt a Hobbielektronikán is. A kérdés feltevés tartalmáról és stílusáról ne is beszéljünk.
(#) Kera_Will válasza atus1981 hozzászólására (») Máj 3, 2016 /
 
Vagy 2db ULN2803 használsz 4 - 4 relét kötve rájuk külön külön.
Akkor csak 12V / (300 ohm / 4) = 0,16 A fog folyni rajtuk át ekkor 1.92W teljesítmény már alatta van a Ptot max = 2.2 W-nak. Plusz kb.: 15% rátartásod is van
A hozzászólás módosítva: Máj 3, 2016
(#) mrobi válasza Kera_Will hozzászólására (») Máj 3, 2016 /
 
Vagy programból garantálni kell, hogy a teljesítmény nem megy 2,2W fölé. Tegyük fel maximum csak 5 relé lehet meghúzatva.
(#) Kera_Will válasza mrobi hozzászólására (») Máj 3, 2016 /
 
Igen erre utaltam már előzőekben is ...
A hozzászólás módosítva: Máj 3, 2016
(#) mrobi válasza Kera_Will hozzászólására (») Máj 3, 2016 /
 
Akkor bocsánat. Elsiklottam felette.
(#) Kera_Will válasza atus1981 hozzászólására (») Máj 3, 2016 /
 
Idézet:
„kell. Viszont ebből az ULN szériából nincs "combosabb"? Vagy válasszak másik relétipust?”
Igen vagy nagyobb ellenállású relé keresése
A hozzászólás módosítva: Máj 3, 2016
(#) Kovidivi válasza kapu48 hozzászólására (») Máj 3, 2016 /
 
Majd ha eljutnak odáig a felhasználók, rájönnek, hogy mindkét kommunikáció magától végbe megy, és interrupttal kellene őket lekezelni, akkor nem lesz gond, ha közben a program mást csinálna, vagyis akár párhuzamosan is dolgozhatnak. Arduino alatt nem tudom, hogy a sorosport interruptos-e, de annak kellene lennie, úgy mint az I2C-nek is.
sejtek: Az ilyen problémafeltevések teljesen hibásak. Ha az első verziós programod futott, a 2. verziós nem, majd ismét felraktad az 1. verziót, és már nem megy, akkor vagy változott a hardver, vagy valami teljesen más hibát vétettél. Egyébként pedig nem lehetséges, amit írsz. Az Arduino egy próbálkozás, ahogy tapasztalom...
jeges: Azt hiszem, neked kellene az 5mp-kénti eeprom írás. Kezdj egy új projektet, legyen teljesen üres. Először delay-jel villogtass egy LED-et, be-ki-be-ki, és így tovább. Utána próbáld megírni ezt a LED villogást az ajánlott módon, hogy nincs benne 5mp-os delay, hanem mondjuk csak 20mS, vagy figyeled a millis() függvény visszatérési értékét, és így villogtasd a LED-et. Ha ez meg van, be tudod illeszteni az eredeti programodba. És azért sem kap senki komplett megoldást, mert akkor holnap is fog jönni, hogy srácok ugyanaz a hiba, csak most 3mp-et kellene várni, nem 5-öt, és nem megy. Persze hogy nem megy, ha nem érted az egészet. Ha ezzel akarsz foglalkozni, el kell kezdeni tanulni. Máshogy nem megy. Vagy találsz egy "balekot", aki mindent elmagyaráz neked ingyen, a saját idejéből. Esetleg fizetsz egy tanárnak pár ezrest...
(#) atus1981 válasza Kera_Will hozzászólására (») Máj 3, 2016 /
 
Ezek az ULN IC-k azért tetszettek meg, mert helytakarékosak a panelen. Igazad van a kereséssel kapcsolatban, csak annyi felé kell(ene) összpontosítanom, hogy kifogyok a figyelemből Köszönöm, hogy gondolkozol helyettem
(#) kapu48 válasza Kovidivi hozzászólására (») Máj 3, 2016 /
 
Ezt, hogyan értsem, erre vágyól?:
" Arduino alatt nem tudom, hogy a sorosport interruptos-e, de annak kellene lennie, úgy mint az I2C-nek is"

Mert a valóság ez!:
  1. // send data only when you receive data:
  2.         if (Serial.available() > 0) {  // Gondolod, hogy itt megszakításra vár?
  3.                 // read the incoming byte:
  4.                 incomingByte = Serial.read();
  5.  
  6.                 // say what you got:
  7.                 Serial.print("I received: ");
  8.                 Serial.println(incomingByte, DEC);
  9.         }
  10.  
  11.       // ha ide beraksz 1 ilyen rondaságot:
  12.       delay(1000); // Biztos, hogy lemaradsz az adat fogadásáról!
A hozzászólás módosítva: Máj 3, 2016
(#) _BiG_ válasza eadx hozzászólására (») Máj 3, 2016 /
 
De mit csináljak azzal a "lóval", amelyik csak fintorog az "abrak" láttán, hogy nem olyan ízűt szeretne? Legalább vedd észre, hogy ott van neked egy szájbarágós programterv, megírtam neked. Csak nézd át, értsd meg, vesd össze azzal, amit valóban szeretnél és kódold le, ha jó.

Okés, hogy eljutottál a függvényírásig, de mire is tudod ezt használni? Mert azt a függvényt be is kell illeszteni valahova - egy algoritmusba... Önmagában nem ér semmit.

És innentől nincs mit tenni, el kell kezdeni nem csak a programírást, hanem a program megtervezését is megtanulni. Mert különben a büdös életben nem fogsz a LED-villogtatásnál tovább jutni, legalábbis nem sokkal... Lehet megsértődni, én nem annak szántam. Sok oldalon keresztül ment a vakarózás. Legyen vége annak és végre legyen sikerélményed, hogy már tudod, honnan kell elindulni.
(#) eadx válasza _BiG_ hozzászólására (») Máj 3, 2016 /
 
Jó volt a szájbarágós verzió és igazat kell adjak kapu48 fórumtársnak is, hogy nem ennek indult az egész. Végül is megszületett a verzió, legalább ennyit elértem.
  1. int LM1 = 2, LM2 = 3, LM3 = 4, LM4 = 5;
  2. int CW = 8, CCW = 9, CW2 = 10, CCW2 = 11;
  3.  
  4. enum State {
  5.   oda1, vissza1, oda2, vissza2
  6. } state;
  7.  
  8. void setup()
  9. {
  10.   pinMode(LM1, INPUT);
  11.   pinMode(LM2, INPUT);
  12.   pinMode(LM3, INPUT);
  13.   pinMode(LM4, INPUT);
  14.   pinMode(CW, OUTPUT);
  15.   pinMode(CCW, OUTPUT);
  16.   pinMode(CW2, OUTPUT);
  17.   pinMode(CCW2, OUTPUT);
  18.  
  19.   m1_oda();
  20.   m2_stop();
  21.   state = oda1;
  22. }
  23. void loop()
  24. {
  25.   switch (state) {
  26.     case oda1:
  27.       if (digitalRead(LM2) == LOW)
  28.       {
  29.         m1_vissza();
  30.         state = vissza1;
  31.       }
  32.       break;
  33.      
  34.     case vissza1:
  35.       if (digitalRead(LM1) == LOW) {
  36.         m1_stop();
  37.         m2_oda();
  38.         state = oda2;
  39.       }
  40.       break;
  41.      
  42.     case oda2:
  43.       if (digitalRead(LM4) == LOW)
  44.       {
  45.         m2_vissza();
  46.         state = vissza2;
  47.       }
  48.       break;
  49.      
  50.     case vissza2:
  51.       if (digitalRead(LM3) == LOW)
  52.       {
  53.         m2_stop();
  54.         m1_oda();
  55.         state = oda1;
  56.       }
  57.       break;
  58.   }
  59. }


Lehet nem valami bonyolúlt és nem túl elegáns, de megy. Már csak az lcd-re kiírása van hátra.
Köszi mindenkinek!
A hozzászólás módosítva: Máj 3, 2016
(#) _BiG_ válasza eadx hozzászólására (») Máj 3, 2016 /
 
Halleluja

Ha megy, akkor én is örvendek veled

Az eleganciázás csak akkor jó és sikeres, ha érted is, mit módosítasz. A bitfaragás haladó szint. De kívánom, hogy érd el!

Idézet:
„Lehet nem valami bonyolúlt”

Jut eszembe: nem hiba egyszerű feladathoz egyszerű programot írni. Sőt, kihívás
A hozzászólás módosítva: Máj 3, 2016
Következő: »»   222 / 853
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem