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   741 / 839
(#) kapu48 válasza gordonfreemN hozzászólására (») Júl 2, 2022 /
 
Idézet:
„Arra a kérdésre, hogy miért nem működik a millis() sem kaptam világos választ”

  1. A te változatod:
  2.  timer = millis(); // igy sosem teljesül neked a feltételed
  3.   if ((millis() - timer) > 5000) {
  4.   EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
  5.   }
  6.  
  7.  A jó módszer:
  8. //    timer = millis(); // itt rossz helyen van
  9.   if ((millis() - timer) > 5000) {
  10.   EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
  11.    timer = millis(); // a feltétel teljesülésekor kel az if törzs végén módosítani az újabb időpontra
  12.   }
(#) Massawa válasza gordonfreemN hozzászólására (») Júl 2, 2022 /
 
Én egy kicsit másképp állnék a kérdéshez.
A reléket meg a hozzájuk tartozo LEDeket egy byteba gyüjteném.
Ahol
Byte 1
b0. Rele IN 1
b1. Relé IN 2
b2. Relé IN 3
b3. LED 1
b4. LED 2
b5. LED 3

Stb (lehet, hogy a felsorolás pontatlan, de ez most nem lényeges).
A lényeg az, higy a bytenak van egy bizonyos értéke, és az EEPROMot csak akkor kell átirni, ha változik az érték.
Azaz programba definiálod a kiindulási értéket, majd ezt átirod, olyankor ha ezen valami változik.
Ehhez nem kell delay vagy millis, és tényleg csak akkor nyulsz az EEPROMhoz amikor változtatod a tartalmat, (ha bármelyik bit változik - azaz változik a byte is). Ez meg nem olyan gyakori, hogy ez gondot okozzon.
Lehet mondjuk a Byte 1 a bemenetek állapota a Byte 2 meg a kimeneteké ( 16 port). Azaz a mode nyomogombbal bármikor bármelyik Bytetot beolvashatod és kijelezheted.
Kikapcsoláskor meg az utolso àllapot marad az EEPROMban.
Persze jobb lenne ha látnám a rajzot. Egy kép többet mond mint egy oldalnyi szöveg.
(#) Kera_Will válasza Jonni hozzászólására (») Júl 2, 2022 /
 
Igen sejtettem ezért pontosítottam
(#) gordonfreemN válasza Massawa hozzászólására (») Júl 3, 2022 /
 
Köszi mindenkinek,készítem a rajzot, holnap feltöltöm ha kész. Ma segítenem kellett egy barátomnak,nem sok időm volt itt lenni.
(#) Josi777 válasza gordonfreemN hozzászólására (») Júl 3, 2022 /
 
Megpróbálom megfogalmazni, hogy mit értettem meg belőle. Tehát van egy erősítőd, 3 bemeneted és 2 kimeneted. Azt szeretnéd, hogy ki lehessen választani, hogy melyik bemenet és kimenet kapcsolódjon az erősítőre és és ezt LED-ek jelezzék. Mindezt úgy, hogy van 2 nyomógombod hozzá. Az áramkörben bistabil reléket használsz (miért? analóg multiplexer is jó lehet?), amiket bekapcsolsz, de visszaállítani őket csak egyszerre tudod. Mi a cb_output relé?
Néhány kérdés: Ragaszkodsz ehhez az áramkörhöz, esetleg szóba jöhet más megoldás is ugyanerre a feladatra? A LED-ek helyett esetleg jó lehet egy egyszerű LCD kijelző? Az drágább, de a bipoláris relék se olcsók és ha ott a drágábbik megoldást választottad, akkor lehet a kijelzésnél is szóba jöhet. Így felszabadulna néhány kivezetés.
A millis() függvény megértéséhez megpróbálok egy példán keresztül segíteni. Úgy képzeld el, hogy van egy olyan változó, melynek az értéke az idő múlásával folyamatosan nő. A millis() függvény ennek a változónak a pillanatnyi értékét adja. Hogy ezt időmérésre lehessen használni, ahhoz a mérés kezdetekor el kell tárolni az értékét, majd folyamatosan figyelni, hogy mikorra lesz az aktuális érték és a korábban tárolt érték közötti különbség akkora, ami megfelelő neked. Ezt úgy is el lehet képzelni, hogy egy olyan stoppered van, ami nem nulláról indul, hanem egy valamilyen értékről és az eltelt időt az induláskori érték és a pillanatnyi érték különbsége adja.
A változók típusával kapcsolatban pedig az lenne az észrevételem, hogy nem következetes. Két állapotú változót int-ben tárolni pazarlás, azon kívül van amelyik konstans, van amelyik nem az. Hiába működik így is, szerintem érdemes ezekhez bool típust használni. Az EEPROM használatánál lehet egyedül értelme, de az az utasítás, amit használsz, 1 byte-ot ír, a változó meg 2 byte-os. A fordító kezeli ezeket, de talán a következetesség miatt célszerűbb lenne megfelelő típust használni.
(#) Massawa válasza gordonfreemN hozzászólására (») Júl 3, 2022 /
 
Szerkessz hozzá egy állapot táblázatot is minden lehetséges állapot legyen ott.
( melyik bemeneti relé és melyik kimeneti relé milyen állapotban van az adott helyzetben.)
(#) gordonfreemN válasza Massawa hozzászólására (») Júl 4, 2022 /
 
Folyamatban. Lehet kézzel hamarabb végeztem volna, eagle-ben nincs 1 of 2 decoder, importálhatót se találtam és elment a délutánom arra hogy próbáltam alkatrészt rajzolni.

_BIG_: igen, jól érted, csak egy bemenet, egy kimenet és egy cb (ami a két panelból választja ki, hogy melyik) lehet kiválasztva egy időben. A cb váltásakor is jegyezze meg a be és ki állapotokat. Még nem tartalmazza a progi, csak lemásoltam a be vezérlés sorait a ki és cb-hez is, hogy majd legyen miből kiindulni.

kapu48: köszi szépen, már világos, hol gondolkodtam rosszul. Javítom, ha megvagyok a kapcsolási rajzzal és az állapot táblázattal.

Massawa: az eeprom jelenleg is csak akkor van átírva, ha változik az érték. Egyébként tetszik az ötlet,át fogom gondolni, hogy nyernék-e és mit, ha így átírnàm az egészet. Ugyanis lehet rövidebb, átláthatóbb kód vagy csak egy másik út ami ugyanolyan hosszú,bonyolult, stb. A programba definiált kiindulási értéket arra érted, hogy mikor szűz mcu-t felprogramozunk, nincs benne még semmilyen informácio? És a felprogramozás után már erre nem is lesz szükség ugye? A kép készül.

Josi777: igen, jól érted. A cb az circuit board, ez válassza ki a kívánt pcb-t, áramkört. 2 panel lesz benne, melyek közt szeretnék majd váltani. Nem kötöm az ebet a karóhoz, de ha megoldható,megcsinálom. Azért használok bistabil relét, mert a projekt abból indult, hogy cimbora adott nagyon pöpec reléket jelhez. Ha elvetném a reléket, oda a kihívás és mintha a gulyásleves készülne hús nélkül.
Nem baj az egyszerre visszaállitás, mert minden léptetéskor resetel és csinál egy set beállitást az aktuális relén. De a be-hez a ki-hez és a cb-hez is külön reset kell, ez csak 3 kimenet.
Ha elfogynának az io pinek, akkor van expander ic-m is, de elméletileg pont elég lesz. LCD jó ötlet, de a doboz már elkészült (tudom fura helyzet, de a körülmények olyanok voltak, hogy azt kellett hamarabb megterveznem így ingyen volt) és a doboz ledre lett tervezve. Nekem személy szerint egyszerű dolgokra a LED jobban tetszik. A millis() függveny már világos,köszönöm a plusz infókat!
A változók észrevételeit is nagyon köszi, átgondolom újra, mert teljesen igazad lehet. A bool típust nem ismerem, utánna olvasok.
(#) Massawa válasza gordonfreemN hozzászólására (») Júl 4, 2022 / 2
 
Elég lett volna ha kézzel felrajzolod mit is akarsz. Nekünk nem a dekoderekkel van gondunk, hanem az összefüggésekkel.
Az EEPROM ilyenfajta használatának van egy trükkje.
Az EEPROMnak nem sok köze van a chip felprogramozásához.
A programot lehet ugy megirni, hogy az EEPROMban az elsö bekapcsolásakor már lehet valamilyen alapinformacio ( az alap jelút az esetedben) de lehet ugy is, hogy nincs benne semmi, és az elsö bekapcsolás alatt kell kézileg bevinni ( a gombokkal) az alapinformaciot. Azt te döntheted el, hqogy neked melyik jobb. Azután a használat folytán már mindig az utolso beállitás marad.
(#) jocoka hozzászólása Júl 12, 2022 /
 
Sziasztok Mesterek!

Kis segítség kellene.
Készítek egy barátomnak az apukája szervizébe egy sorszám nyomtatót de sajna a programozás az nem megy.
Amire szükségem volna hogy valaki a programba beleírja hogy a sorszám kezdő értéke vagyis a 000
minden éjfél után visszaálljon erre az értékre,továbbá hogy az rtc által kiírt idő ne 0.Óra 0 legyen hanem 00:00,persze ha ez lehetséges.
Előre is köszönöm a segítséget.
Üdv.Józsi
(#) gordonfreemN válasza Massawa hozzászólására (») Júl 12, 2022 /
 
üdv újra. Elnézést a késlekedésért, elég húzós volt az elmúlt két hét munka.
Készítettem valami Jackson ábra félét, remélem megteszi.
A kapcsi rajzot is megalkotom a hétvégéig és feltöltöm.
A hozzászólás módosítva: Júl 12, 2022
(#) Josi777 válasza jocoka hozzászólására (») Júl 12, 2022 /
 
Szia.
Kicsit kiegészítettem a programodat, de mivel kipróbálni nem tudtam, így csak remélem, hogy jól működik.
Kiegészítettem még 2 nyomógombbal, amivel az RTC idejét lehet korrigálni +/-.
Nem gondoltál arra, hogy egy egyszerű kijelzőn lehessen látni az aktuális időt és/vagy a token számláló aktuális állását?
(#) Kovidivi válasza gordonfreemN hozzászólására (») Júl 13, 2022 / 1
 
Annyit tegyél meg, hogy kiolvasod az eeprom tartalmát (ami legelőször 255 lesz, ez az alap értéke), és csinálsz egy if feltételt, miszerint: ha változó kisebb mint nulla, vagy nagyobb mint 3, akkor a változó legyen 0. Ha esetleg signed char-t vagy valami mást használsz, akkor a negatív értékre is reagálni fog, mondjuk eepromból unsigned char-t olvasol ki. Mindegy.
Ezzel megoldottad, hogy akármit olvas ki az eepromból, ami hibás érték lenne, azonnal visszarakja a változót 0-ra, ami már megfelelő neked.
(#) jocoka válasza Josi777 hozzászólására (») Júl 13, 2022 /
 
Szia Josi777

Nagyon szuper lett köszönöm szépen.
Hát igen az se lenne rossz ha lehetne látni az időt és számláló állását.
Megmondom őszintén a programozáshoz nem értek pár dolgot át tudok írni,de kb ennyi a tudásom.
Ennek is örülők és köszönöm még egyszer hogy megoldottad a gondom,ha van ötleted a kijelzőre is és időd is hogy velem foglalkozz akkor az is szívesen fogadom.
Üdv.Józsi

Teszt.jpg
    
(#) gordonfreemN válasza Kovidivi hozzászólására (») Júl 13, 2022 /
 
Szuper, köszönöm. Azt hiszem hasonló feltételt valamelyik verzióba bele is tettem, de aztán valamiért törölve lett.
Az ábra egyébként szódával elmegy?
A hozzászólás módosítva: Júl 13, 2022
(#) Josi777 válasza jocoka hozzászólására (») Júl 13, 2022 /
 
Te tudod, hogy milyen kijelzőt szeretnél használni. A nagysága, szerelhetősége, láthatósága alapján. Talán egy általánosan használt 16*2 karakteres kijelző, I2C buszon lehetne a középút. Arra kényelmesen ráfér minden és a zöld változat elég olcsó is.
(#) jocoka válasza Josi777 hozzászólására (») Júl 13, 2022 /
 
Szia
Igen én is arra gondoltam hogy valahogy így kéne neki állni.
Szétnézek mi van itthon.
(#) jocoka hozzászólása Júl 13, 2022 /
 
Szia Josi777

Na elkezdtem kalapálni a kódot hát nem tudok programozni,de az óra megy csak valamiért úgyan az van mint a nyomtatásnál pl: 12:01:01 helyet 12:1:1 ír ki a kijelző.
Szerintem valamit nem jól csinálok de lehet hogy rossz a kódom is.
Ha átnéznéd köszönném szépen.
Üdv. Józsi
(#) Josi777 válasza jocoka hozzászólására (») Júl 13, 2022 /
 
Továbbra sem tudtam kipróbálni, ismét csak remélni tudom, hogy jól működik
Remélem, érthető a működése. Nem látom, hogy milyen, ha váltogatja a kijelző a tartalmát, remélem, jó lesz. A váltogatás ideje állítható.
(#) jocoka válasza Josi777 hozzászólására (») Júl 13, 2022 /
 
Szia

Minden szuper lett köszönöm szépen,most nézegetem a kódokat és átírogatom a feliratokat hogy lássam mi változik.
További szép estét kívánok!

Üdv.Józsi
(#) gordonfreemN válasza Kovidivi hozzászólására (») Júl 17, 2022 /
 
Szia.

elkészítettem valamiféle kapcsorajzot is, a polaritásforgató IC-ket megrajzoltam diszkrét elemekből és sárga keretbe tettem őket.
Ezzel és a hét elején feltöltött "Jackson" ábrával már lehet érthetőbb lesz mit szeretnék.
Megcsináltam amiket javasoltál (eepromtartalomvizsgálat a setupban) és a korábban beszélt millis()-el késleltetem a programfutás közben az eeprom írást, így nem írja minden léptetésnél (mert ugye van amikor csak két léptetéssel érem el a kívánt bemenetet, pl 1-3).
A millis egyébként nem úgy lett jó, ahogy itt javasoltátok, de most működik rendesen az is. Bekapcsoláskor frankón beállítja a reléket is.

Mivel még mindig vannak delay "hegyek" a kódban, nem tudom ez hátrányos-e (a program mindig megakad itt) vagy érdemes inkább a millis()-el készítenem késleltetéseket monjuk a debouncer-nek? Vagy alapvetően nem gond a delay?

  1. #include <EEPROM.h>
  2. const int mode_led1 = A2;
  3. const int mode_led2 = A3;
  4. const int mode_led3 = A4;
  5. const int set_led1 = 11;
  6. const int set_led2 = 12;
  7. const int set_led3 = 13;
  8.  
  9. const int in_relay1 = 4;
  10. const int in_relay2 = 5;
  11. const int in_relay3 = 6;
  12. const int out_relay1 = 7;
  13. const int out_relay2 = 8;
  14. const int cb_relay1 = 9;
  15. const int cb_relay2 = 10;
  16.  
  17. const int reset_relay_cb = 1;
  18. const int reset_relay_out = 2;
  19. const int reset_relay_in = 3;
  20.  
  21. const int button_m = A0; //mode gomb
  22. const int button_s = A1; //set gomb
  23. bool buttonstate_m;
  24. bool buttonstate_s;
  25. bool lastbuttonstate_m;
  26. bool lastbuttonstate_s;
  27.  
  28. byte vmod;
  29. byte vset;
  30. byte vset_in;
  31. byte vset_out;
  32. byte vset_cb;
  33. unsigned long timer;
  34. //unsigned long bouncetime;
  35.  
  36. void setup()
  37. {
  38.   //Serial.begin(9600);
  39.   pinMode(mode_led1, OUTPUT);
  40.   pinMode(mode_led2, OUTPUT);
  41.   pinMode(mode_led3, OUTPUT);
  42.   pinMode(set_led1, OUTPUT);
  43.   pinMode(set_led2, OUTPUT);
  44.   pinMode(set_led3, OUTPUT);
  45.   pinMode(in_relay1, OUTPUT);
  46.   pinMode(in_relay2, OUTPUT);
  47.   pinMode(in_relay3, OUTPUT);
  48.   pinMode(out_relay1, OUTPUT);
  49.   pinMode(out_relay2, OUTPUT);
  50.   pinMode(cb_relay1, OUTPUT);
  51.   pinMode(cb_relay2, OUTPUT);
  52.   pinMode(reset_relay_in, OUTPUT);
  53.   pinMode(reset_relay_out, OUTPUT);
  54.   pinMode(reset_relay_cb, OUTPUT);
  55.   pinMode(button_m, INPUT);
  56.   pinMode(button_s, INPUT);
  57.   buttonstate_m = 1;
  58.   buttonstate_s = 1;
  59.   lastbuttonstate_m = 1;
  60.   lastbuttonstate_s = 1;
  61.   digitalWrite(set_led1, 1);
  62.   digitalWrite(set_led2, 1);
  63.   digitalWrite(set_led3, 1);
  64.   digitalWrite(mode_led1, 1);
  65.   digitalWrite(mode_led2, 1);
  66.   digitalWrite(mode_led3, 1);
  67.   delay(500);
  68.   vmod = EEPROM.read(0); //"mode" tárolt értéket a vmod változóba ír
  69.   vset_in = EEPROM.read(1); //"set_in" tárolt értéket a vset változóba ír
  70.   vset_out = EEPROM.read(2); //"set_out" tárolt értéket a vset változóba ír
  71.   vset_cb = EEPROM.read(3); //"set_out" tárolt értéket a vset változóba ír
  72.  
  73. //az eeprom vmod, vset_in stb tartalom legelőször 255 lesz, ha e változók eepromtartalma nem 0,1 vagy 2, akkor legyen 0
  74.   if ((vmod < 0) || (vmod > 2)) {vmod = 0;}
  75.   if ((vset_in < 0) || (vset_in > 2)) {vset_in = 0;}
  76.   if ((vset_out < 0) || (vset_out > 1)) {vset_out = 0;}
  77.   if ((vset_cb < 0) || (vset_cb > 1)) {vset_cb = 0;}
  78. //bekapcsoláskor a ki-be és schematik választók (relék) beállítása az eltárolt értékre-----------------------------------------------
  79.   if (vset_in == 0) {
  80.       digitalWrite(in_relay1, 1);
  81.       digitalWrite(reset_relay_in, 0);
  82.       delay(20);
  83.       digitalWrite(reset_relay_in, 1);
  84.       digitalWrite(in_relay2, 0);
  85.       digitalWrite(in_relay3, 0);
  86.   }
  87.   if (vset_in == 1) {
  88.       digitalWrite(in_relay2, 1);
  89.       digitalWrite(reset_relay_in, 0);
  90.       delay(20);
  91.       digitalWrite(reset_relay_in, 1);
  92.       digitalWrite(in_relay1, 0);
  93.       digitalWrite(in_relay3, 0);
  94.   }
  95.   if (vset_in == 2) {
  96.       digitalWrite(in_relay3, 1);
  97.       digitalWrite(reset_relay_in, 0);
  98.       delay(20);
  99.       digitalWrite(reset_relay_in, 1);
  100.       digitalWrite(in_relay1, 0);
  101.       digitalWrite(in_relay2, 0);
  102.   }
  103.   if (vset_out == 0) {
  104.       digitalWrite(out_relay1, 1);
  105.       digitalWrite(reset_relay_in, 0);
  106.       delay(20);
  107.       digitalWrite(reset_relay_in, 1);
  108.       digitalWrite(out_relay2, 0);
  109.   }
  110.   if (vset_out == 1) {
  111.       digitalWrite(out_relay2, 1);
  112.       digitalWrite(reset_relay_in, 0);
  113.       delay(20);
  114.       digitalWrite(reset_relay_in, 1);
  115.       digitalWrite(out_relay1, 0);
  116.   }
  117.   if (vset_cb == 0) {
  118.       digitalWrite(cb_relay1, 1);
  119.       digitalWrite(reset_relay_in, 0);
  120.       delay(20);
  121.       digitalWrite(reset_relay_in, 1);
  122.       digitalWrite(cb_relay2, 0);
  123.   }
  124.   if (vset_cb == 1) {
  125.       digitalWrite(cb_relay2, 1);
  126.       digitalWrite(reset_relay_in, 0);
  127.       delay(20);
  128.       digitalWrite(reset_relay_in, 1);
  129.       digitalWrite(cb_relay1, 0);
  130.   }
  131.   timer = 0;
  132.   //bouncetime = 0;
  133. }
  134. void loop()
  135. {
  136. //vmod beállítása----------------------------------------------------------------------------------------
  137.   buttonstate_m = digitalRead(button_m); //gomb állapot kiolvasása
  138.   if (buttonstate_m != lastbuttonstate_m) //gombnyomás történt? Gomb állapota változott az előzőhöz képest?
  139.   {
  140.     delay(50); //ha történt változás az előző állapothot képest, várj 50ms-ot
  141.     if (buttonstate_m == 0) //ha a gomb nyomva, azaz bemenet értéke alacsony akkor
  142.     {
  143.       vmod++; //növelje vmod változó értékét eggyel
  144.       timer = millis(); //timer változó legyen millis aktuális értékével feltöltve
  145.     }
  146.   }
  147.   switch (vmod) {
  148.     case 0: //ha értéke null
  149.       digitalWrite(mode_led1, 1);
  150.       digitalWrite(mode_led2, 0);
  151.       digitalWrite(mode_led3, 0);
  152.       break;
  153.     case 1: //ha értéke egy
  154.       digitalWrite(mode_led1, 0);
  155.       digitalWrite(mode_led2, 1);
  156.       digitalWrite(mode_led3, 0);
  157.       break;
  158.     case 2: //ha értéke kettő
  159.       digitalWrite(mode_led1, 0);
  160.       digitalWrite(mode_led2, 0);
  161.       digitalWrite(mode_led3, 1);
  162.       break;
  163.     default: //ha értéke bármi más mint az előzőek
  164.       vmod = 0; //akkor vmod értéke legyen null
  165.       break;
  166.   }
  167.   lastbuttonstate_m = buttonstate_m; //gomb előző állapotát írja be a gomb aktuális állapotának
  168.   if ((millis() - timer) > 10000) { //ha millis értéke mínusz timer értéke nagyobb mint 10sec
  169.   EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
  170.   }
  171. //vset beállítása------------------------------------------------------------------------------------------
  172.   if (vmod == 0) {if (vset_in != vset) {vset = vset_in;}}
  173.   if (vmod == 1) {if (vset_out != vset) {vset = vset_out;}}
  174.   if (vmod == 2) {if (vset_cb != vset) {vset = vset_cb;}}
  175.   buttonstate_s = digitalRead(button_s);
  176.   if (buttonstate_s != lastbuttonstate_s)
  177.   {
  178.     delay(50);
  179.     if (buttonstate_s == 0)
  180.     {
  181.       vset++;
  182.       timer = millis();
  183.     }
  184.   }
  185.   if (vmod == 0) {
  186.   switch (vset) {
  187.       case 0:
  188.         digitalWrite(set_led1, 1);
  189.         digitalWrite(set_led2, 0);
  190.         digitalWrite(set_led3, 0);
  191.         break;
  192.       case 1:
  193.         digitalWrite(set_led1, 0);
  194.         digitalWrite(set_led2, 1);
  195.         digitalWrite(set_led3, 0);
  196.         break;
  197.       case 2:
  198.         digitalWrite(set_led1, 0);
  199.         digitalWrite(set_led2, 0);
  200.         digitalWrite(set_led3, 1);
  201.         break;
  202.       default:
  203.         vset = 0;
  204.         break;
  205.   }
  206.   }
  207.   if ((vmod == 1) || (vmod == 2)) {
  208.   switch (vset) {
  209.       case 0:
  210.         digitalWrite(set_led1, 1);
  211.         digitalWrite(set_led2, 0);
  212.         digitalWrite(set_led3, 0);
  213.         break;
  214.       case 1:
  215.         digitalWrite(set_led1, 0);
  216.         digitalWrite(set_led2, 1);
  217.         digitalWrite(set_led3, 0);
  218.         break;
  219.       default:
  220.         vset = 0;
  221.         break;
  222.   }
  223.   }
  224.   lastbuttonstate_s = buttonstate_s; //gomb előző állapotát írja be a gomb aktuális állapotának
  225. //bemenet kiválasztása----------------------------------------------------------------------------------------
  226.     if (vmod == 0 && vset == 0) { //ha vmod nulla, akkor a bemenet beállítása történik és vset_in felveszi az aktuális vset értéket
  227.       vset_in = 0; //bemeneti változó beállítása
  228.       digitalWrite(in_relay1, 1); //bemeneti 1-es relé kiemenet HIGH
  229.       if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);} //csak ha set gombnyomás történik akkor az 1-es relé resetje LOW
  230.       delay(20);
  231.       digitalWrite(reset_relay_in, 1); //csak ha set gombnyomás befejeződött akkor az 1-es relé resetje HIGH
  232.       digitalWrite(in_relay2, 0); //bemeneti 2-es relé kiemenet LOW
  233.       digitalWrite(in_relay3, 0); //bemeneti 3-mas relé kiemenet LOW
  234.     }
  235.     if (vmod == 0 && vset == 1) {
  236.       vset_in = 1;
  237.       digitalWrite(in_relay2, 1);
  238.       if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
  239.       delay(20);
  240.       digitalWrite(reset_relay_in, 1);
  241.       digitalWrite(in_relay1, 0);
  242.       digitalWrite(in_relay3, 0);
  243.     }
  244.     if (vmod == 0 && vset == 2) {
  245.       vset_in = 2;
  246.       digitalWrite(in_relay3, 1);
  247.       if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
  248.       delay(20);
  249.       digitalWrite(reset_relay_in, 1);
  250.       digitalWrite(in_relay1, 0);
  251.       digitalWrite(in_relay2, 0);
  252.     }
  253. //kimenet kiválasztása---------------------------------------------------------------------------------------
  254.   if (vmod == 1 && vset == 0) {
  255.     vset_out = 0;
  256.     digitalWrite(out_relay1, 1);
  257.     if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
  258.     delay(20);
  259.     if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
  260.     digitalWrite(out_relay2, 0);
  261.   }
  262.   if (vmod == 1 && vset == 1) {
  263.     vset_out = 1;
  264.     digitalWrite(out_relay2, 1);
  265.     if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
  266.     delay(20);
  267.     if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
  268.     digitalWrite(out_relay1, 0);
  269.   }
  270. //áramköri lap kiválasztása-----------------------------------------------------------------------------------
  271.   if (vmod == 2 && vset == 0) {
  272.     vset_cb = 0;
  273.     digitalWrite(cb_relay1, 1);
  274.     if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
  275.     delay(20);
  276.     if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
  277.     digitalWrite(cb_relay2, 0);
  278.   }
  279.   if (vmod == 2 && vset == 1) {
  280.     vset_cb = 1;
  281.     digitalWrite(cb_relay2, 1);
  282.     if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
  283.     delay(20);
  284.     if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
  285.     digitalWrite(cb_relay1, 0);
  286.   }
  287. //EEPROM írása------------------------------------------------
  288.   if ((millis() - timer) > 10000) {
  289.   EEPROM.update(1, vset_in); //tegye EEPROM-ba a vset_in változó értékét, ha az változott
  290.   EEPROM.update(2, vset_out); //tegye EEPROM-ba a vset_out változó értékét, ha az változott
  291.   EEPROM.update(3, vset_cb); //tegye EEPROM-ba a vset_cb változó értékét, ha az változott
  292.   }
  293. //--------------------------------------------------------------------------------------------------------
  294. //Serial.println(vset_out);
  295. }

preamp.pdf
    
(#) Josi777 válasza gordonfreemN hozzászólására (») Júl 18, 2022 /
 
Az IC2A 1-es kivezetés hova csatlakozik? A kimenetekre hogyan jut jel? A bemenetekre csatlakozó jel csak akkor jut az IC2A bemenetére, ha mind a 3 relé át van billentve, mivel a kikapcsolt állapotú relé a GND-re kapcsolja a bemenetet. Nekem még most sem derült ki, hogy mi a szerepe a cb_relay-nek, ami nincs is bekötve. A kimenetekre hogyan jut jel, ha a relék az IC-k bemeneteire kapcsolják a kimeneti csatlakozót? Továbbra sem értem, hogy mi szükség a bistabil relékre (jó, azt hiszem azt mondtad, hogy az van, cserébe sikerült vele remekül megbonyolítani egy amúgy roppant egyszerű feladatot ), valamint elég lenne 3 darab relé is az 5 helyett (sima vagy bistabil).
szerk.:
A relék működtetésének az értelmét sem látom, elég lenne 1-1 buffer mindegyik tekercskivezetéshez. 4 helyett 2 IC lenne csak.
A hozzászólás módosítva: Júl 18, 2022
(#) gordonfreemN válasza Josi777 hozzászólására (») Júl 18, 2022 /
 
Bocsesz, a rajz valóban rossz, javítottam.
7db relé van.
Azért szedtem szét a bemeneti reléket, mert mértem rajtuk némi áthallást, biztos ami tuti alapon inkább külön viszem a jelet.
A kimeneten és a cb esetében valóban elég lehetne 1 relé is, ezen még gondolkozom, de már póbálgattam ma és működik. Az lenne talán ekkor fura, hogy mondjuk ha a relé set állapotban van, a kikapcs bekapcs reseteli, de aztán visszaáll mondjuk. Még ha reset állapotban van, akkor meg nem történik semmi, nincs kattanás. De ez végül is jelentéktelen.
Az utolsó mondatodat nem teljesen értem, mit értesz buffer alatt és hogyan gondoltad, hogy elég lenne kevesebb IC?
A hozzászólás módosítva: Júl 18, 2022

preamp.pdf
    
(#) Josi777 válasza gordonfreemN hozzászólására (») Júl 18, 2022 /
 
A nem használt bemenetek reléje még mindig GND-re kötik a jelet és most már a kimenetet is, ha csak az egyik kimenet van bekapcsolva.
A relé meghajtás továbbra is célszerűtlen, kevesebb alkatrésszel is megoldható, valamint 4 relé is elég az egészhez.
(#) gordonfreemN válasza Josi777 hozzászólására (») Júl 18, 2022 /
 
A relé meghajtáshoz tudnál segítséget nyújtani azzal, hogy elárulod mire gondolsz? Egy gyors skicc is elég.
A GND-re kötést is javítom holnap, már figyelmetlen vagyok.
(#) Josi777 válasza gordonfreemN hozzászólására (») Júl 18, 2022 /
 
Van 3 bemenet, azaz 3 féle állapot, az 2 bittel leírható, azaz 2 relé elég hozzá. 00-nincs használva, 01-1-es bemenet, 10-2. bemenet, 11-3. bemenet. És ugyanez a kimenetek is, csakhogy ott 4 állapot van, 1. IC1-Ki1, 2. IC1-Ki2, 3. IC2-Ki1, 4. IC2-Ki2, és ezek is leírhatóak 2 bittel, azaz ide is elég 2 relé. Szerencsére a relék dupla morzés érintkezősök, így meg lehet velük valósítani a kapcsolást.
Ha így nem eléggé érthető, akkor holnap lerajzolom neked.
(#) Josi777 válasza gordonfreemN hozzászólására (») Júl 18, 2022 /
 
Bistabil relék helyett elég lenne 4 port kimenet és a meghajtásuk is sokkal egyszerűbb lenne. De ha maradnak a bistabil relék, azt is lehet egyszerűsíteni, hogy nem 3 reset jel van, hanem csak 1 az összes reléhez.

hobbi1.png
    
(#) gordonfreemN válasza Josi777 hozzászólására (») Júl 18, 2022 /
 
Azt az egy reset jelet akkor ráküldöm az összes relére, ez jó ötlet, köszi!
A bemeneten megtartom a 3 relét, a többi meg így lesz végül, én is arra jutottam.
(#) Kovács Tibor hozzászólása Júl 23, 2022 /
 
Sziasztok!
Legalább 6 de méginkább 8csatornás öntözés vezérlőt szeretnék építeni Arduinoval.

Nem találtam olyat ami simán után lehetne építeni.
Az nekem nem megy hogy programot tudjak írni rá, tudtok segíteni?
(#) Jonni válasza Kovács Tibor hozzászólására (») Júl 23, 2022 /
 
Nézz szét itt. hátha valamelyik megtetszik
(#) HA5AWS hozzászólása Júl 26, 2022 /
 
Sziasztok!
Segítséget szeretnék kérni egy Arduino Nanoval kapcsolatban. Egy áramkörhöz kiegészítőként vettem de még a felprogramozás nem történt meg illetve nem tudom hogy álljak neki. Az USB csatlakozón összekötve számítógéppel életjelet ad a panel. A PON LED világít gondolom ez a tápfeszültséget jelzi, az L jelű LED a reset után kettőt villan aztán kis szünet és folyametosan villog.
Megvan a HEX fájl (kb 37Kb) amit rá kell tölteni, csak ebben kérek segítséget, hogy hogyan milyen programmal. Teljes fejlesztőrendszert nem szeretnék telepíteni nem akarom se átírni se módosítani a programot. Remélem van rá egyszerű megoldás. A program mellékeli a mega az uno és a nanohoz való fájlokat gondolom ehhez a panelhez a nano file kell.
Nem tudtam melyik topiba írjak mert ez a kiegészítő egy SDR vevőhöz van de talán ide jobban illik a téma. Két témába nem írunk itt problémás mert nem biztos, hogy mindenki olvassa mindkét témát.
Köszönöm a segítséget.
Üdv: Gábor
Következő: »»   741 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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