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
    
   

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

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

 

Időrend:
Oldal 32 / 1053 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   28  29  30  31  32  33  34  35  36   Következő ►  Utolsó ►|

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

Vetesi75 | 1724    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 | 187    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 | 1724    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 | 187    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 | 187    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 | 1567    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 | 197    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 | 18696    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 | 187    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 | 6750    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 | 44    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 | 3241    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 | 12313    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 | 12313    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 | 737    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 | 12313    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 | 12313    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 | 12313    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 | 433    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 | 433    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 | 735    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 | 433    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 | 433    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 | 230    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 | 33156    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 | 33156    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 | 94    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 | 94    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 | 433    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?


tekes | 187    2024-01-16 19:15:11 [51166]

Sziasztok!

Koordináta forgatás

Ha egy olyan munkadarabon szeretnék dolgozni, amelyiknek már van egy síkbamart éle, aminek a munkadarab koordinátarendszerében az X tengellyel párhuzamosnak kell lenni, akkor muszály úgy leszorítani, hogy ténylegesen párhuzamos legyen a gépi iránnyal, vagy meg lehet fogni 3D tapintóval két helyen, és a Mach3-ban megadni, hogy ez az irány az X?


gaspa | 230    2024-01-14 15:55:45 [51165]

Valóban nem az örökkévalóságig szólt,de voltak opciók a megszüntetésre amik szerintem nem teljesültek.Ezzel ezt a témát elengedtem,mert már nem ide való.

Előzmény: remrendes, 2024-01-14 13:11:20 [51164]

remrendes | 4256    2024-01-14 13:11:20 [51164]

Nem egeszen, mert az a tulajdonod. Ez egy szolgaltatasra kotott szerzodes, hatarozatlan idore, nem az orokkevalosagig.

Előzmény: gaspa, 2024-01-14 11:09:28 [51163]


gaspa | 230    2024-01-14 11:09:28 [51163]

Sokan így gondolják,de ez nem munkaszerződés vagy lakásbérleti szerződés,amit ha felmondanak kiveszed a szomszéd lakást,ez milliós befektetés.Gondold el,vennél egy autót egy év múlva a gyártó kiszerelné a motort,mert más tervei vannak vele.Egyébként a frekiváltóra kaptam választ,előbb egy hasonló motorral kipróbálom,ezekben a mínuszokban nem piszkálom a kompresszort.

Előzmény: remrendes, 2024-01-13 21:16:49 [51156]


remrendes | 4256    2024-01-14 11:03:38 [51162]

A SolidWorksnel pl igy mukodik. En jobban szeretem a Fillet/Chamfer funkciokat a rajz vegen hasznalni.
Kevesebb eroforrast igenyel.

Előzmény: tekes, 2024-01-14 09:50:28 [51161]


tekes | 187    2024-01-14 09:50:28 [51161]

Köszönöm!

Ez lesz a jó, a furatot és a letörést külön kiosztani.

A működés nyilván logikus, olyasmire gondoltam, mint pl. a logikai műveletek, kiválasztani a felületet, de megadni kivételként néhány élet.

(Teljesen kezdőként nekem az is szempont, hogy ne legyen felhős, ezért nem a Fusion 360, ami amúgy jobbnak tűnik...)

Előzmény: vadember, 2024-01-14 06:33:50 [51160]


vadember | 1909    2024-01-14 06:33:50 [51160]

Szerintem minden rajzprogram ezzel a módszerrel fogja letörni az éleket.
Ha egy felszínt kijelölsz, az összes rajta található élen el fogja végezni a kívánt műveletet. Ha az egész testet akkor azon fogja végrehajtani. Hiszen ez a logikus. Ezzel segíti a munkát. Ha menet közben kellene egy nagyobb tömbön egyszerre végrehajtott változtatást egy-két részen semmissé tenni, akkor pedig a kényszerek törlésével kell megoldani.
A te esetedben vissza kell lépned a furatkiosztás elé. Az első furaton kell megcsinálni a letörést és ezt kell a kiosztással manipulálni.

Több éven át az Inventort használtam, azután abba hagytam mert a tört program miatt voltak gondok a licenckulcs újra aktiválással.
Akkor néztem ingyenes programok után. A Design Spark Mechanicalt gyűrtem vagy három napig, amikor rájöttem, hogy az ingyenes verzióban nem lehet alkatrszrajzot készíteni.
Ekkor jött a FreeCAD. Na ebből egy nap alatt elegem lett. Hozta a linuxos túlgondolt agyatlanságait.
Ezután találtam a Oneshapet. Na ez az igazi. Szinte ugyan az mint az Inventor. Még csak erős gép sem kell hozzá, mert minden a felhőben készül.
Egy kikötése van csak a program ingyenes használatának, hogy minden project nyilvános. Ez viszont nálam nem számít.

Előzmény: tekes, 2024-01-14 01:50:00 [51159]


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

Időrend:
Oldal 32 / 1053 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   28  29  30  31  32  33  34  35  36   Következő ►  Utolsó ►|


 ◊ 
[ 1.5084 ]