HobbyCNC fórum
FTP tárhely: http://cnctar.hobbycnc.hu v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

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


Segítség, béna vagyok!!!

Általános, gyors, sürgős kérdések.

 

Időrend:
Oldal 26 / 1047 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   22  23  24  25  26  27  28  29  30   Következő ►  Utolsó ►|

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

TBS-TEAM | 2856    2024-01-30 16:37:53 [51216]

A golyós anya is tud ilyet művelni.

Előzmény: noctiluxx, 2024-01-30 16:13:10 [51212]


TBS-TEAM | 2856    2024-01-30 16:27:53 [51215]

Ó csak 20mm
a=20

Előzmény: TBS-TEAM, 2024-01-30 16:24:22 [51214]


TBS-TEAM | 2856    2024-01-30 16:24:22 [51214]

Pitagorasz tétel.
a=200
b=800 vagy a 900
c= a kért érték

Előzmény: tekes, 2024-01-30 14:34:00 [51211]


Vetesi75 | 1663    2024-01-30 16:20:28 [51213]

Tengelykapcsoló vagy valami hasonló cucc nincs fellazulva?

Előzmény: noctiluxx, 2024-01-30 16:13:10 [51212]


noctiluxx | 132    2024-01-30 16:13:10 [51212]

Tisztelettel megőrültem.
Van egy kis Farkas Ádám féle kis váz, sonceboz 6600R045 motorokkal, UC400, mindennek külön táp, gyönyörűen megy, szel mindent amit elé rakok (kb 6 éve hibátlanul), de mostanában az Y random lépést veszít.Munka közben úgy csinál, mintha ütközne fél másodpercre és megy tovább. Sebességtől gyorsulástól függetlenül. Mechanika ép, könnyen jár, motor nem feszül.Rendszer tiszta, csak a mach3 megy rajta. Másik pcvel is ezt csinálja.Motoron kívül mindent cseréletem már. Az a kérdésem, hogy léptetőmotor tud így kimúlni??

tekes | 142    2024-01-30 14:34:00 [51211]

FreeCad

Rajzoljunk egy 800x900 mm alapterületű "szekrényt", aminek ajtaja nincs, csupán két oldala és egy hátulja, mindhárom test vastagsága 18 mm.
-Eddig nekem is egyszerű.
Ebbe a szekrénybe helyezzünk el egy polcot, szintén 18 mm anyagvastagsággal
-de-
a polc az egyik átlójának az irányában lejtsen 20 mm-t!

Segítséget kérnék, nem boldogulok vele.

Ps. A feladat tisztán elméleti. A "polc" testnek nyilván egyetlen derékszöge sincsen, az adott méretek mellett a torzulások igen kicsik, kimondottan megnehezítik a szemléletes áttekintést.

Köszönöm, ha foglalkozol vele!


TBS-TEAM | 2856    2024-01-29 23:01:25 [51210]

Elméletileg felügyelet nélkül nem hagyható CNC gép.
Hobbi gépedet léptető motorokkal szinte biztos, hogy nem
tudtad annyira túltervezni, hogy komolyabb mechanikai kárt
tudjon tenni önnmagában egy X-Y vagy Z végütküzésnél.
A gyári gépeken gumi végütküzőt használnak a gyártók meg szervo motorokat
melyek igen nagy sebességre és gyorsulásra képesek.
A végállásokat meg PLC kezeli ami nagyságrendekkel stabilabb
mint bármilyen OP rendszer és még így is sikerűl összetörni.

Előzmény: tekes, 2024-01-29 18:16:42 [51206]


Vetesi75 | 1663    2024-01-29 21:12:34 [51209]

A géphiba egy más kategória. Ekkor még a profik is ugrásra készen... (Aztán nyugodtan meg lehet kérdezni, hogy mitől stresszes egy echte CNC-forgácsoló munkakör...)

Előzmény: tekes, 2024-01-29 19:05:15 [51208]


tekes | 142    2024-01-29 19:05:15 [51208]

Köszi!

A szoftveres az a Mach3-ban is megvan, de az csak az elrontott G-kódtól véd meg. Az elektromos zavarokból esetleg adódó tömeges lépésvesztések miatti eltévedéstől nem. Ezért gondoltam ilyen "dinamikus" hardveres védelemre.

Előzmény: Vetesi75, 2024-01-29 18:29:42 [51207]


Vetesi75 | 1663    2024-01-29 18:29:42 [51207]

Nem hülye ötlet. Ez a profi gépeken "szoftveresen" realizálható - "munkaterület lehatárolás" néven fut. A felhasználó (kellő rutinnal) definiálhatja és ha szükséges (akár progamból is) felül írhatja vagy kiiktathatja (de ahhoz szándékosság kell). Ugyan nem véd meg minden hülyeségtől, de sok nagy bakit kiszűr (kicsiket kevésbé).

Előzmény: tekes, 2024-01-29 17:50:02 [51205]


tekes | 142    2024-01-29 18:16:42 [51206]

Hát hobby!

Kínai vezérlő, kínai léptetőmotor, etc.

A elmélet az, hogy szerszám nélkül anyag nélkül futtatni, majd bűanyaghabban futtatni, aztán mintadarabon futtatni, terméket mérni, sorozatgyártani.

De ez hobbi, egy termék készül összesen. Persze, az elsőket, meg a rövideket végignézem levegőben. Aztán később pedig, amikor már profinak képzelem magam, rommá töröm a gépemet...

Előzmény: kaqkk007, 2024-01-29 17:44:01 [51204]


tekes | 142    2024-01-29 17:50:02 [51205]

Erősen tudok hunyorítani, lesz az 15% is!

Láttam már fényképet "megbolondult a maró" felirattal, tökön-babon, satun-asztalon keresztülmarva...
És az ipari gép volt, nehezebb elrontani, meg jobban is értenek hozzá.

Hülye ötlet sínekre szerelni mozgatható végálláskapcsolókat, és mindíg az aktuális szerszámmal és felfogással beállítani, hogy csak a szerszámot és a munkadarabot tudjam tönkretenni, a gépet ne?

Előzmény: Zsiráf, 2024-01-29 17:36:05 [51203]


kaqkk007 | 1563    2024-01-29 17:44:01 [51204]

Kérdés hogy milyen cnc gépről van szó ? Én most éppen két napig ültem egy cnc plazmavágó mellett, óránként kopóelemcsere , és 10-15 percenként újraindítás.

Előzmény: tekes, 2024-01-29 16:13:21 [51201]


Zsiráf | 191    2024-01-29 17:36:05 [51203]

Ha nézed a gépet 13%-al gyorsabban dolgozik

Előzmény: tekes, 2024-01-29 16:13:21 [51201]


PSoft | 18613    2024-01-29 17:10:20 [51202]

Szerintem nem akarsz Te fültokkal a fejeden, órák hosszat ott ülni a gép mellett és nézni hogyan csinálja.
Teszi az a dolgát a Te óvó/vigyázó(-nak vélt) tekinteted nélkül is.
Azt az időt, sokkal hasznosabban is el tudod majd tölteni.

Előzmény: tekes, 2024-01-29 16:13:21 [51201]

tekes | 142    2024-01-29 16:13:21 [51201]

Egy cizellált feladattal órákon át is dolgozhat a cnc.
Kötelező szemmel tartani, vagy ott lehet hagyni?


Csuhás | 6729    2024-01-29 14:52:55 [51200]

Anélkül hogy ismerném, szinte bizonyos, hogy periódus csoport szabályozás van, hiszen a rendszernek nagy a hő tehetetlensége. A fázishasítás kellemetlen tranzienseket, és jókora zavar sugárzást okozna.

Előzmény: Szeles59, 2024-01-29 14:40:11 [51199]


Szeles59 | 41    2024-01-29 14:40:11 [51199]

Tudja e valaki hogy a kerámia főzőlap szabályzása fázis hasítással működik vagy nem?

  


Dysart | 32    2024-01-27 14:21:07 [51198]

Szia, pl: https://www.youtube.com/watch?app=desktop&v=ONfK0mDHa7E

Előzmény: guliver83, 2024-01-27 13:56:26 [51197]


guliver83 | 3239    2024-01-27 13:56:26 [51197]

Sziasztok

Tudna valaki segíteni , hogy egy zelio sr2 b201fu PLC gyári programozó kábelt lehet helyettesíteni valami egyszerű programozóval?


jani300 | 12260    2024-01-25 17:07:33 [51196]

Na képek .
Becsempésztem a két utolsó szerzeményen is
Az oszlop lapolt része csúszik össze karambolnál .
Elvileg két kb 3 milis műanyag stift tartja .
Ha ott nem húzza szét az ember akkor nem megy rá a műanyag persely .
Na most ,kitalálta az internet népe hogy két félből tesznek oda perselyt , nem állítom hogy ez lenne az igazi megoldás ,
De nem akarom bevállalni az összecsúszás erejének módosítását !

    

Előzmény: jani300, 2024-01-25 16:40:56 [51195]


jani300 | 12260    2024-01-25 16:40:56 [51195]

Anyagom sincsen hozzá ...
De azon már elgondolkodtam hajtok köré lemezt
Igazából a kiinduló anyagot félbevágják , és abból készül méretre a persely .
De ez sem atomkilövő ...
Úgy vállaltam hogy hoznak anyagot ...
Ez olyan egybecsúszós oszlop , baleset esetére .
Nem lehet rátolni a perselyt egyben .
De már húztam azért szét olyan oszlopot , csak nem szívesen vinném most a balhét .
Ehh ,nem csinálom már , most néztem aminek kiszakadt a múltkor a trapéz gömbfeje , alaposan lötyög a hátsó kereke is ...
Végül is már 5 fok felett van lassan , ,de még anyagra sincsen pénze , a múltkor is én intéztem kedvezményt is , elég jót .
Azért nem én vagyok a szeretetszolgálat , ha segítek is , néha . Lehet lefényképezem miről is van szó .

Előzmény: sarktibsi, 2024-01-25 16:05:59 [51194]


sarktibsi | 690    2024-01-25 16:05:59 [51194]

Na akkor jobb ha gyorsan nekiugrasz pik-pak gyorsan kiesztergálod és kész, estére már szerelheted befele.

Előzmény: jani300, 2024-01-25 15:04:16 [51193]


jani300 | 12260    2024-01-25 15:04:16 [51193]

Na , megjött a valami ...
A furatba illeszkedő persely külmérete lötyög , a furat is legalább 5 tizeddel nagyobb . csodás .
Itt van apróra szedve a kormányoszlop ...
Hát majd holnap megbeszélem hátha tudok csináltatni bele valamit , ha kibontva odaviszem meg lesz oldva ,jól .
Ez legalább nem sürgős .
Tanulság , hozzá se kellett volna nyúlnom ,,,
Ja ilyet se láttam még ...
Az imobili úgy van megoldva ,hogy a burkolaton belül ott van gyorskötözővel egy kulcs , a kormányzáron .

Előzmény: jani300, 2024-01-23 11:15:06 [51191]


jani300 | 12260    2024-01-23 20:10:57 [51192]

Már tárgytalan ,rendeltek valamit ,valahonnét ...

Előzmény: jani300, 2024-01-23 11:15:06 [51191]

jani300 | 12260    2024-01-23 11:15:06 [51191]

Daewoo matiz

Van egy műanyag perselye a kormányoszlopban , és az szét szokott esni ,gyári hibája ez annak a kis autónak .
Kérdés : gyárt ehhez pótalkatrésznek valaki perselyt ?
Árulták valami fórumon de állítólag nem elérhető most .
Hoztak , cseréltem régebben , de még csak nem is volt pontos nagyobb volt , valahogyan azért megoldottam .
Fel kellett volna vennem a méreteit , de a fene aki akart még egyel bohóckodni ,de most megint megkeresett egy másik ismerős ,segítenék e ebben .


dezsoe | 2934    2024-01-18 18:18:43 [51190]

Kicsit átszerveztem a programot, de azt csinálja, amit írtál. A bemenetek INPUT_PULLUP-ra vannak állítva, ha vannak felhúzóid, akkor sima INPUT is lehet.

#include <Arduino.h>

#define redLED 12
#define greenLED 13

uint8_t LEDstate = 0;

int BtnState[8];
unsigned long BtnTimer[8];
uint8_t Button[] = { A1, A2, A3, A4, A5, 10, 9, A0 };

uint8_t RelayPin[] = { 8, 7, 6, 5, 4, 3, 2 };
bool RelayState[7];

bool DisableOutputs = false;
bool LastDisableOutputs = false;

void LEDmachine()
{
static unsigned long lastmillis;
unsigned long currmillis = millis();

switch (LEDstate)
{
case 1:
digitalWrite(redLED, LOW);
LEDstate = 2;
break;
case 2:
lastmillis = currmillis;
digitalWrite(greenLED, HIGH);
LEDstate = 3;
break;
case 3:
if (currmillis - lastmillis > 100)
{
lastmillis = currmillis;
digitalWrite(greenLED, LOW);
LEDstate = 4;
}
break;
case 4:
if (currmillis - lastmillis > 2300)
LEDstate = 2;
break;
case 5:
digitalWrite(greenLED, LOW);
LEDstate = 6;
break;
case 6:
lastmillis = currmillis;
digitalWrite(redLED, HIGH);
LEDstate = 7;
break;
case 7:
if (currmillis - lastmillis > 1000)
{
lastmillis = currmillis;
digitalWrite(redLED, LOW);
LEDstate = 8;
}
break;
case 8:
if (currmillis - lastmillis > 1000)
LEDstate = 5;
break;
}
}

bool Btnmachine(int btn)
{
unsigned long currmillis = millis();
bool buttonpressed = !digitalRead(Button[btn]);

switch (BtnState[btn])
{
case 0:
BtnState[btn] = 1;
break;
case 1:
if (buttonpressed)
{
BtnTimer[btn] = currmillis;
BtnState[btn] = 2;
}
break;
case 2:
if (!buttonpressed)
BtnState[btn] = 1;
else if (currmillis - BtnTimer[btn] > 100)
BtnState[btn] = 3;
break;
case 3:
BtnState[btn] = 4;
return true;
case 4:
if (!buttonpressed)
BtnState[btn] = 0;
break;
}
return false;
}

void setup()
{
for (int i = 0; i < 8; ++i)
{
BtnState[i] = 0;
pinMode(Button[i], INPUT_PULLUP);
}

for (int i = 0; i < 7; ++i)
{
RelayState[i] = false;
pinMode(RelayPin[i], OUTPUT);
digitalWrite(RelayPin[i], RelayState[i]);
}

pinMode(redLED, OUTPUT);
digitalWrite(redLED, LOW);
pinMode(greenLED, OUTPUT);
digitalWrite(greenLED, LOW);

LEDstate = 1;
}

void loop()
{
LEDmachine();

if (Btnmachine(7))
{
DisableOutputs = true;
LEDstate = 5;
}

if (DisableOutputs)
{
if (digitalRead(Button[7]))
{
DisableOutputs = false;
LEDstate = 1;
}
}
else
for (int i = 0; i < 7; ++i)
if (Btnmachine(i))
{
RelayState[i] = !RelayState[i];
digitalWrite(RelayPin[i], RelayState[i]);
}

if (DisableOutputs != LastDisableOutputs)
{
if (DisableOutputs)
for (int i = 0; i < 7; ++i)
digitalWrite(RelayPin[i], LOW);
else
for (int i = 0; i < 7; ++i)
digitalWrite(RelayPin[i], RelayState[i]);
LastDisableOutputs = DisableOutputs;
}
}

Előzmény: kuner, 2024-01-18 17:49:45 [51188]


dezsoe | 2934    2024-01-18 17:54:18 [51189]

Oké, így tisztább a kép.

Előzmény: kuner, 2024-01-18 17:49:45 [51188]


kuner | 427    2024-01-18 17:49:45 [51188]

Gomb megnyom, akkor a hozzá tartozó relé behúz. ismételt gombnyomásra relé elenged. Adott gomb a hozzá tartozó relét vezérli.
Minden bemeneten van felhúzó ellenállás. Ha A0 földre húz, akkor minden relé inaktiv lesz, ha A0 alap állapotban van, fut tovább a program, és visszaállnak a relék, tehát pörög tovább a program.

A0 bemenetre majd a riasztó adta jel érkezne, ha be van riasztva.
Ekkor minden relé inaktivvá válna, ha esetleg valahol felkapcsolva maradt volna a villany.

Az nem lenne baj, ha minden megállna, csak a ledet villogtassa.

Lakásautomatizálási kisérlet a magam módján

Előzmény: dezsoe, 2024-01-18 17:37:29 [51187]


dezsoe | 2934    2024-01-18 17:37:29 [51187]

Igen. Ha az A0 aktív és tiltod a kimeneteket, mi történik, amikor inaktívvá válik? Visszaállnak az előző állapotba vagy maradnak kikapcsolva? Ja, és a relék addig aktívak, amíg a gombjukat nyomod vagy ki-bekapcsolhatóak? Kicsit írj már arról, hogy mit is kéne a programnak csinálni.

Előzmény: kuner, 2024-01-18 17:10:37 [51186]


kuner | 427    2024-01-18 17:10:37 [51186]

Csengőkapcsolók lesznek a nyomógombok helyén, egyelőre kicsit nagyra hagytam a késleltetést, teszt és programozás idejére. Csökkenteni fogom, ha már minden összeállt.


Akkor a while hasonlóan működik, mint a delay?

Előzmény: dezsoe, 2024-01-18 16:40:59 [51185]


dezsoe | 2934    2024-01-18 16:40:59 [51185]

A while. Teljesen megfogod vele a főciklust. Azok a delay(300)-ak mi célt szolgálnak?

Előzmény: kuner, 2024-01-18 15:04:27 [51183]


Sásdi Zoltán | 728    2024-01-18 15:18:17 [51184]

Tanácsot kérek. Van egy Ender3-as nyomtatóm, kissebb távtartókat, Nyomtatott kártyák tartóit nyomtattam vele. Ezek kicsik voltak, jók lettek, bár a méret nem mindíg passzolt, de a max. 0.5 mm nem számított. Most egy 60x80x8mm-es darabot, benne D50-es üreg a kondenzátor számára. A rögzítés számára egyik oldalon 5x10 mm-es fülekkel a rögzítés számára. A bajom: valószínü a hőtágolás miatt a 4 sarka kissé felgörbült, így az a rész vékonyabb lett. Még éppen használható lett. Amikor kettőt akartam egymás mellett, nagyon felgörbült, leállítottam. Amikor csak egy darabot, türhető lett. Mit tegyek, ne engedje el, ha nagyobb darabot akarok??? A tranácsokat köszönöm.


kuner | 427    2024-01-18 15:04:27 [51183]

Ezzel szenvedek hajnal óta ...

7 csatornás impulzus kapcsoló, tiltó bemenettel, led visszajelzéssel.

Ha az A0 bemenetet testre húzom, minden kimenetnek LOW szinten kell lennie, amig A0 testen van (tiltás). Normál állapotban zöld led villog, tiltás alatt pedig a piros. Ez lenne az elképzelés. De ha A0 testre kerül, kimenetek LOW állapotba kerülnek - ami jó is- de a ledek nem villognak addig.
Sorrend nem jó, vagy a while parancs ?


#include <Arduino.h>

#define redLED 12
#define greenLED 13

uint8_t LEDstate = 0;
uint8_t Btnstate = 0;


#define BUTTON1 A1 // nyomógomb #1
#define BUTTON2 A2 // nyomógomb #2
#define BUTTON3 A3 // nyomógomb #3
#define BUTTON4 A4 // nyomógomb #4
#define BUTTON5 A5 // nyomógomb #5
#define BUTTON6 10 // nyomógomb #6
#define BUTTON7 9 // nyomógomb #7
#define BUTTON8 A0 // nyomógomb #8

#define RELAY1 8 // Relé #1 vezérlés
#define RELAY2 7 // Relé #2 vezérlés
#define RELAY3 6 // Relé #3 vezérlés
#define RELAY4 5 // Relé #4 vezérlés
#define RELAY5 4 // Relé #5 vezérlés
#define RELAY6 3 // Relé #6 vezérlés
#define RELAY7 2 // Relé #7 vezérlés


int val1=0;
int old_val1=0;

int val2=0;
int old_val2=0;

int val3=0;
int old_val3=0;

int val4=0;
int old_val4=0;

int val5=0;
int old_val5=0;

int val6=0;
int old_val6=0;

int val7=0;
int old_val7=0;

int val8=0;
int old_val8=0;


int state1=1;
int state2=1;
int state3=1;
int state4=1;
int state5=1;
int state6=1;
int state7=1;

void LEDmachine()
{
static unsigned long lastmillis;
unsigned long currmillis = millis();

switch (LEDstate)
{
case 1:
digitalWrite(redLED, LOW);
LEDstate = 2;
break;
case 2:
lastmillis = currmillis;
digitalWrite(greenLED, HIGH);
LEDstate = 3;
break;
case 3:
if (currmillis - lastmillis > 100)
{
lastmillis = currmillis;
digitalWrite(greenLED, LOW);
LEDstate = 4;
}
break;
case 4:
if (currmillis - lastmillis > 2300)
LEDstate = 2;
break;
case 5:
digitalWrite(greenLED, LOW);
LEDstate = 6;
break;
case 6:
lastmillis = currmillis;
digitalWrite(redLED, HIGH);
LEDstate = 7;
break;
case 7:
if (currmillis - lastmillis > 1000)
{
lastmillis = currmillis;
digitalWrite(redLED, LOW);
LEDstate = 8;
}
break;
case 8:
if (currmillis - lastmillis > 1000)
LEDstate = 5;
break;
}
}

void Btnmachine()
{
static unsigned long lastmillis;
unsigned long currmillis = millis();
bool buttonpressed = !digitalRead(BUTTON8);

switch (Btnstate)
{
case 0:
LEDstate = 1;
Btnstate = 1;
break;
case 1:
if (buttonpressed)
{
lastmillis = currmillis;
Btnstate = 2;
}
break;
case 2:
if (!buttonpressed)
Btnstate = 1;
else if (currmillis - lastmillis > 10)
Btnstate = 3;
break;
case 3:
LEDstate = 5;
Btnstate = 4;
break;
case 4:
if (!buttonpressed)
Btnstate = 0;
break;
}
}


void setup(){

pinMode(redLED, OUTPUT);
digitalWrite(redLED, LOW);
pinMode(greenLED, OUTPUT);
digitalWrite(greenLED, LOW);
pinMode(BUTTON8, INPUT);


pinMode(BUTTON1, INPUT);
pinMode(RELAY1, OUTPUT);

pinMode(BUTTON2, INPUT);
pinMode(RELAY2, OUTPUT);

pinMode(BUTTON3, INPUT);
pinMode(RELAY3, OUTPUT);

pinMode(BUTTON4, INPUT);
pinMode(RELAY4, OUTPUT);

pinMode(BUTTON5, INPUT);
pinMode(RELAY5, OUTPUT);

pinMode(BUTTON6, INPUT);
pinMode(RELAY6, OUTPUT);

pinMode(BUTTON7, INPUT);
pinMode(RELAY7, OUTPUT);
}

void loop(){

LEDmachine();
Btnmachine();

val1=digitalRead(BUTTON1);
val2=digitalRead(BUTTON2);
val3=digitalRead(BUTTON3);
val4=digitalRead(BUTTON4);
val5=digitalRead(BUTTON5);
val6=digitalRead(BUTTON6);
val7=digitalRead(BUTTON7);
val8=digitalRead(BUTTON8);


if ((val1==HIGH) && (old_val1==LOW))
{
state1 = 1 - state1;
delay(300);
}

old_val1=val1;

if ((val2==HIGH) && (old_val2==LOW))
{
state2 = 1 - state2;
delay(300);
}
old_val2=val2;

if ((val3==HIGH) && (old_val3==LOW))
{
state3 = 1 - state3;
delay(300);
}
old_val3=val3;

if ((val4==HIGH) && (old_val4==LOW))
{
state4 = 1 - state4;
delay(300);
}
old_val4=val4;

if ((val5==HIGH) && (old_val5==LOW))
{
state5 = 1 - state5;
delay(300);
}
old_val5=val5;

if ((val6==HIGH) && (old_val6==LOW))
{
state6 = 1 - state6;
delay(300);
}
old_val6=val6;

if ((val7==HIGH) && (old_val7==LOW))
{
state7 = 1 - state7;
delay(300);
}
old_val7=val7;


if (state1 == 1){
digitalWrite(RELAY1,HIGH);
}else{
digitalWrite(RELAY1,LOW);
}

if (state2 == 1){
digitalWrite(RELAY2,HIGH);
}else{
digitalWrite(RELAY2,LOW);
}

if (state3 == 1){
digitalWrite(RELAY3,HIGH);
}else{
digitalWrite(RELAY3,LOW);
}

if (state4 == 1){
digitalWrite(RELAY4,HIGH);
}else{
digitalWrite(RELAY4,LOW);
}

if (state5 == 1){
digitalWrite(RELAY5,HIGH);
}else{
digitalWrite(RELAY5,LOW);
}

if (state6 == 1){
digitalWrite(RELAY6,HIGH);
}else{
digitalWrite(RELAY6,LOW);
}

if (state7 == 1){
digitalWrite(RELAY7,HIGH);
}else{
digitalWrite(RELAY7,LOW);
}

while (digitalRead(BUTTON8) == 0)
{
digitalWrite(RELAY1,LOW);
digitalWrite(RELAY2,LOW);
digitalWrite(RELAY3,LOW);
digitalWrite(RELAY4,LOW);
digitalWrite(RELAY5,LOW);
digitalWrite(RELAY6,LOW);
digitalWrite(RELAY7,LOW);
}
}

Előzmény: kuner, 2024-01-18 11:18:24 [51182]


kuner | 427    2024-01-18 11:18:24 [51182]

Köszönöm!
Ezen még át kell rágnom magam, mit, miért, hogyan... mi mit csinál,melyik programrészlet hogyan kapcsolódik mihez ...

Ez még új nekem, de sosem keső elkezdeni

Előzmény: dezsoe, 2024-01-17 21:12:12 [51180]

gaspa | 228    2024-01-18 10:13:19 [51181]

Túlléptem a kesergésen,próbálom átalakítani a betáplálást hibridre(most a napenergia töredéke hasznosul).A hibridnél a bejövő hálózat szét van választva a kimenettől(kép),a két nulla alapesetben nincs összekötve és a kimenet nullája sincs a földdel.Régebbről van egy vészhelyzeti rendszerem,ami csak hálózat kimaradáskor kapcsolódott egy fázisra,ezen csináltam pár mérést.Ha van hálózat összeköti a nullákat és szépen elosztja a terhelést a napelem-akku-hálózat sorrendben folyamatos átmenettel.Ha hálózat nincs nem köti össze a nullákat és az inverter nulláját a földdel.Azt még nem néztem mi van,ha csak napelem és hálózat van,de elegendő a napelem.Ez bonyolódik azzal,hogy 3 fázisra külön inverterrel és egy akkuval szeretném.Az akku töltésnél is akadhat probléma,de talán diódákkal szét lehet választani.

  


dezsoe | 2934    2024-01-17 21:12:12 [51180]

No, akkor mégegyszer a gomb állapotai, mert az (5)-ös felesleges:

gomb:
(0) LED állapotba (1), -> (1)
(1) gomb megnyomva? ha igen, gomb idő tárolása, -> (2)
(2) gomb megnyomva? nem -> (1), egyébként eltelt-e 10ms? ha igen -> (3)
(3) LED állapotba (5), -> (4)
(4) gomb megnyomva? nem -> (0)

Így néz ki a forrása:

#include <Arduino.h>

#define redLED 13
#define greenLED 12
#define button 11

uint8_t LEDstate = 0;
uint8_t Btnstate = 0;

void LEDmachine()
{
static unsigned long lastmillis;
unsigned long currmillis = millis();

switch (LEDstate)
{
case 1:
digitalWrite(redLED, LOW);
LEDstate = 2;
break;
case 2:
lastmillis = currmillis;
digitalWrite(greenLED, HIGH);
LEDstate = 3;
break;
case 3:
if (currmillis - lastmillis > 2300)
{
lastmillis = currmillis;
digitalWrite(greenLED, LOW);
LEDstate = 4;
}
break;
case 4:
if (currmillis - lastmillis > 100)
LEDstate = 2;
break;
case 5:
digitalWrite(greenLED, LOW);
LEDstate = 6;
break;
case 6:
lastmillis = currmillis;
digitalWrite(redLED, HIGH);
LEDstate = 7;
break;
case 7:
if (currmillis - lastmillis > 2300)
{
lastmillis = currmillis;
digitalWrite(redLED, LOW);
LEDstate = 8;
}
break;
case 8:
if (currmillis - lastmillis > 100)
LEDstate = 5;
break;
}
}

void Btnmachine()
{
static unsigned long lastmillis;
unsigned long currmillis = millis();
bool buttonpressed = !digitalRead(button); // negaltam, mert pull-up-os a gomb

switch (Btnstate)
{
case 0:
LEDstate = 1;
Btnstate = 1;
break;
case 1:
if (buttonpressed)
{
lastmillis = currmillis;
Btnstate = 2;
}
break;
case 2:
if (!buttonpressed)
Btnstate = 1;
else if (currmillis - lastmillis > 10)
Btnstate = 3;
break;
case 3:
LEDstate = 5;
Btnstate = 4;
break;
case 4:
if (!buttonpressed)
Btnstate = 0;
break;
}
}

void setup()
{
pinMode(redLED, OUTPUT);
digitalWrite(redLED, LOW);
pinMode(greenLED, OUTPUT);
digitalWrite(greenLED, LOW);
pinMode(button, INPUT_PULLUP);
}

void loop()
{
LEDmachine();
Btnmachine();
//
// ... minden mas, ami kell
//
}

Előzmény: dezsoe, 2024-01-17 20:14:57 [51176]


dezsoe | 2934    2024-01-17 21:00:04 [51179]

Hopp, csak sikerült elrontani. Javítás:

gomb:
(0) LED állapotba (1), -> (1)

Előzmény: dezsoe, 2024-01-17 20:14:57 [51176]


dezsoe | 2934    2024-01-17 20:41:45 [51178]

Igen.

Előzmény: svejk, 2024-01-17 20:30:51 [51177]


svejk | 33073    2024-01-17 20:30:51 [51177]

Köszi.

Végül is nagy vonalakban akkor ez egy sorrendi hálüózat.

Előzmény: dezsoe, 2024-01-17 20:14:57 [51176]


dezsoe | 2934    2024-01-17 20:14:57 [51176]

Az állapotgép lényege, hogy úgy lehet vele egy vagy több folyamatot vezérelni, hogy a vezérlést végző szerkezetet nem fogjuk meg. Magyarul: egy műveletsor végrehajtása nem köti le a vezérlő eszközt. Azért írok vezérlő eszközt, mert nem csak processzor lehet az áldozat, láttam már teljesen mechanikus állapotgépet is. Mivel az állapotgép nem sajátítja ki a vezérlőt, akár több állapotgép is futhat működése szempontjából párhuzamosan. Ténylegesen azért ezek egymás után fognak lefutni, de kívülről nézve párhuzamosnak tűnik a működésük. Vegyük példának az eredeti kérdést: "ha egy gomb high állapotú, akkor pl egy piros ledet villogtat, ha low, akkor egy zöldet. A villogás a lednél: 2300ms high, 100ms low állapotú." Ehhez be kell olvasni a gombot és tudnunk kell, hogy a LED-eknek mi az állapota. Lehet egyszerűbben is csinálni, de szemléltetésképpen legyen két állapotgépünk, egy a LED-eknek, egy a gombnak, ajándék 10ms-os prellmentesítéssel:

LED:
(0) nem történik semmi

(1) piros kikapcsolása, -> (2)
(2) zöld villogás indítása, zöld idő tárolása, zöld bekapcsolása, -> (3)
(3) eltelt-e 2300ms? ha igen, zöld idő tárolása, zöld kikapcsolása, -> (4)
(4) eltelt-e 100ms? ha igen -> (2)

(5) zöld kikapcsolása, -> (6)
(6) piros villogás indítása, piros idő tárolása, piros bekapcsolása, -> (7)
(7) eltelt-e 2300ms? ha igen, piros idő tárolása, piros kikapcsolása, -> (8)
(8) eltelt-e 100ms? ha igen -> (6)

gomb:
(0) LED állapotba (1)
(1) gomb megnyomva? ha igen, gomb idő tárolása, -> (2)
(2) gomb megnyomva? nem -> (1), egyébként eltelt-e 10ms? ha igen -> (3)
(3) LED állapotba (5), -> (4)
(4) gomb megnyomva? nem -> (5)
(5) LED állapotba (1),-> (1)

A program főciklusában ezt a két állapotgépet hívogatjuk egymás után. (Meg amit még amúgy is csinálni kell, de az most itt nem lényeges.) Az állapotgépek állapotváltozását -> (állapot)-tal jelöltem. Ha nincs ilyen vagy nem teljesül a feltétele, akkor az adott állapot marad, ahogy volt. Mindkét állapotgép (0)-ból indul. A LED 1-4 állapota a zöld villogtatását végzi, az 5-8 a pirosét. A gomb (0)-ban bekapcsolja a zöld villogást, majd elkezdi figyelni a gomb állapotát az (1)-ben. Ha a gombot megnyomjuk, akkor a megnyomás idejét eltárolva (2)-be lép, ahol a prellmentesítés történik. Ha elengedtük a gombot (vagy prellez), akkor visszalép (1)-be. Ha még mindig meg van nyomva és eltelt 10ms, akkor megnyomottnak tekinti a gombot és átlép (3)-ba. Itt a LED állapotát pirosra váltja, de csak egyszer, mert már megy is tovább a (4)-esre, ahol addig marad, amíg a gombot nyomva tartjuk. Ha már nincs megnyomva, akkor továbbugrik (5)-re, ahol a LED állapotot visszaváltjuk zöldre, majd irány az (1) és várjuk az újabb gombnyomást.

Előzmény: svejk, 2024-01-17 17:22:59 [51175]


svejk | 33073    2024-01-17 17:22:59 [51175]

Írjál csak, figyelünk!

Előzmény: dezsoe, 2024-01-17 15:39:26 [51173]


dezsoe | 2934    2024-01-17 15:40:41 [51174]

Egész pontosan: millis() - elozoido > 2400 a helyes, bocs.

Előzmény: dezsoe, 2024-01-17 15:39:26 [51173]


dezsoe | 2934    2024-01-17 15:39:26 [51173]

Így van, a millis() - elozoido <= 2400 a helyes. Állapotgépről írhatok pár mondatot este, ha érdekel, csak most szaladós vagyok.

Előzmény: freewind, 2024-01-17 15:04:21 [51172]


freewind | 92    2024-01-17 15:04:21 [51172]

"Állapotgép" névről nem hallota még.
Igen, ez ki is ment a fejemből (túlcsordulás)
Akkor millis() - elozoido <= 2400
Azt hiszem akkor túlcsordulás után időtől függetlenül mindeképp lefut.
De ezt végig kéne újra gondolnom, ezt már kuner-ra bízom, csak egyszerű példa alapján akartam bemutatni, hogy én miképp csináltam annó.

Előzmény: dezsoe, 2024-01-17 12:01:42 [51170]

dezsoe | 2934    2024-01-17 12:14:42 [51171]

Illetve, állapotgép akkor lesz belőle, ha feldolgozod a LED állapotát is és aszerint hajtasz végre ágakat. De az egésznek ez az alapja, nem ragad be semmilyen várakozásba, hanem mindig továbbmegy, legfeljebb egy másik ágon.

Előzmény: dezsoe, 2024-01-17 12:01:42 [51170]


dezsoe | 2934    2024-01-17 12:01:42 [51170]

Ezt hívják állapotgépnek. Viszont nézz bele a videókba: ha így ellenőrzöd az idő elteltét, akkor 49 nap múlva, amikor a millis() átfordul, akkor többé nem fog kapcsolni.

Előzmény: freewind, 2024-01-17 11:26:54 [51169]


freewind | 92    2024-01-17 11:26:54 [51169]

Én ilyen feladatott igy szoktam megoldani egyszerűen:

unsigned long kovetkezoido=millis(); //globalis valtozo


void loop()
{
if ((millis()>=kovetkezoido))
{
kovetkezoido=millis()+2300;
//led kapcsolgatás
}
//egyeb feladat

}

Előzmény: kuner, 2024-01-16 19:39:29 [51167]


dezsoe | 2934    2024-01-16 19:45:15 [51168]

Állapotgépet kell programozni. Találsz róla videót bőven a youtube-on.

Előzmény: kuner, 2024-01-16 19:39:29 [51167]


kuner | 427    2024-01-16 19:39:29 [51167]

Arduino programzásban jártas illetőket kérdeznék, hogy miként lehetne megírni egy led villogtató ciklust, ami nem delay() rendszerű.
Az lenne a lényeg, ha egy gomb high állapotú, akkor pl egy piros ledet villogtat, ha low, akkor egy zöldet. A villogás a lednél: 2300ms high, 100ms low állapotú.
Programba lenne ágyazva ez a részlet, azért nem jó a megszakításos villogtatás.

Tudnátok ebben segíteni?


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

Időrend:
Oldal 26 / 1047 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   22  23  24  25  26  27  28  29  30   Következő ►  Utolsó ►|


 ◊ 
[ 1.1834 ]