|
Post by petteriu on Apr 1, 2019 21:16:32 GMT 4
Ei hyvä.. Aloin vähä opettelemaan ohjelmointie ja selvishä se jo alkujaan et ei onnistu. Vilkku valolla aloin vähä testaa laajentamalla sitä 3 eri lähtöön. Toimiiha se mutta kun laitto viimesimpään ajaksi 10s niin sillo huomasin et sehä oottaa senki ennen ku aloittaa muita tekemään. Eli alkaa alusta. Jos tekee kouraan esim sen katkasuterän sisäänveon niin sillon ku se vetää sisään niin mitään muuta ei saa tapahtumaan.. Tiltti ku pitäs ainaki silloin toimia. Joutus laittaa kaksi arttuo ainaki ja siihen en rupea. Onko täälä kellään tietoa saako tuota ohjelmaa jotenki hajautettua että se tekee jokaisen toiminnon itsenäisesti? Erittäin vaikeasti selvennetty Sinun pitää käyttää hyväksi sisäistä ajastinta eikä tyhmää delay -komentoa, olettaen että näin taisit tuossa tehdä. Oli siihen temppuun muistaakseni ladattavissa ihan oma kirjastolaajennus, että teki tuon vähän niin kuin automaattisesti ( tai ainakin vähän enemmmän automaattisesti) mutta millis -komennolla pärjäät myös. Sopivan herätteen tapahtuessa kortin sisäinen aika muistiin muuttujaan ja sitten tutkit sitä arvoa suhteessa sisäiseen aikaan, jos jotain pitää liipaista viiveellä. Muu ohjelma kuitenkin pyörii koko ajan loopissa ja on valmis muille herätteille, mutta tutkii silti tuon tietyn viiveen täyttymistä. Mahtaako sinulla olla tuossa niin paljon ohjattavaa ja luettavaa, että olisi parempi mennä sillä Megalla? Ohjelmointi on ihan samanlaista, mutta tulojen ja lähtöjen pinninumerot eroavat. Olisi muistiakin enemmän koodille, eikä tarvitsisi kikkailla kahden Unon kanssa. Sehän ei kustannuskysymys ole tuohon alumiinilohkareeseen verrattuna
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 1, 2019 21:52:27 GMT 4
No tuon ohjelmointi on aika alullaa ja en tiijä juurikaan sen enempää mitä tänäpäevänä opin ja siitäki osan jo unohtanu.. Ei oo niinkään pudjetti kysymys jos tuon ohjauksen sillä esim saa tehtyö. Kiinasta nuo maksa niin paljoa et kannattaa oottaa jokunen päevä tai viikko. Tuossa mulla pitäs saaha myös tehtyö silleen et leuvat olis vain yhtiillä napeilla. Eli samasta auki ja kiinni. Miettiny et edellinen painallus pitäs konnekki tallentaa et onko leuvat laitettu kiinni vai auki.
|
|
|
Post by petteriu on Apr 2, 2019 0:06:07 GMT 4
Tuossa mulla pitäs saaha myös tehtyö silleen et leuvat olis vain yhtiillä napeilla. Eli samasta auki ja kiinni. Miettiny et edellinen painallus pitäs konnekki tallentaa et onko leuvat laitettu kiinni vai auki. Napin painallus -> tieto muuttujaan (boolean ON/TRUE), jos nappia painetaan uudelleen -> boolean muuttuja käännetään (OFF/FALSE) ja tuon mukaan sitten ajetaan sylinteriä. Tietysti tuota pyynnön toteutumista pitäisi myös tutkia rajakytkimillä (ääriasennot auki tai kiiinni) tai paineanturilla, josta voisi päätellä mikä tilanne leuoilla on. EDIT: Riittääkö muuten suoraan Arduinon lähdöissä virta ohjaamaan niitä solenoideja vai pitääkö väliin rakentaa jotain?
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 2, 2019 5:50:01 GMT 4
Oli tarkoitus silleen et tekee liikettä niin kauva ku nappia painetaan. Mutta tuola mite kerroit niin pitäs vissiinki onnistuo. Ei pysty ohjaa suoraan. Pitää olla rele yms välissä. Arduino antaa 5v lähöstä ja solenoidit on 24v ja virtaki menee yli.
|
|
|
Post by petteriu on Apr 2, 2019 9:35:42 GMT 4
Oli tarkoitus silleen et tekee liikettä niin kauva ku nappia painetaan. Mutta tuola mite kerroit niin pitäs vissiinki onnistuo. Ei pysty ohjaa suoraan. Pitää olla rele yms välissä. Arduino antaa 5v lähöstä ja solenoidit on 24v ja virtaki menee yli. Onko ajatus niin, että kun nappi vapautetaan liike kääntyy saman tien toiseen suuntaan? Vai napin vapautuessa liike pysähtyy ja lukittuu ja siitä edelleen uusi painallus käynnistää paluun? Leuat voisi tuossa palauttaa ihan auki asentoon, jossa rajakytkin katkaisisi ohjauksen, mutta uusi napin painallus voisi taas ensin pysäyttää liikkeen ettei tarvitse odotella turhaan leukojen aukeamista kokonaan. Niillä muuttujilla kannattaa joka tapauksessa eri vaiheet pitää Arduinon muistissa. Voisihan ne periaatteessa suoraan tuloiltakin lukea reaaliaikaisesti, mutta tuohon varmaan käytännössä on hyvä rakentaa jonkinlaisia viiveitä toimintojen väliin ettei rikota paikkoja hitausvoimien takia. Eli ettei ohjelma esim. sallisi äärettömän nopeita suunnanvaihtoja, jos sormi lipsahtaa napille/napilta. Ohjauksesta varmaan kannattaa rakentaa toimiva LED tai serial proto ihan rauhassa, ennen kuin laitat niitä solenoideja mukaan.
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 2, 2019 11:12:18 GMT 4
Tuo toinen vaihtoehto. Eli napin vapautuessa liike pysähtyy ja jää siihe. Sitte toisella painalluksella tekee toiseen suuntaan. Voisi hyvinki laittaa rajaanturit mutta loppuu johot kouralle. Meinasin sähkösydeemit laittaa kopin puolelle niin olis vähä paremmin suojassa. Kourassa ne on alttiita kaikelle iskuille ja veelle.. Joku ledi yms. systeemi onki eka tarkotus testipenkkinä laittaa. Viiveet on ehkä ihan hyvät varsinki hipasujen takia. Syötölle pitää saaha sitte tehtyö pwm lähtöillä ne kiihytys ja hiastusrampit. Ei ehkä iha niin helposti suttaisi tyhjääkää ku nyt syöttö oli aika hätänen Jotaki koodin pätkie ku näkis mite esim tuo nappien käyttö on tehty.. Netistä en oikein malliakaan löytäny mistään. Tai jos on niin sillo en älyö sitä
|
|
|
Post by petteriu on Apr 3, 2019 15:12:51 GMT 4
Tuo toinen vaihtoehto. Eli napin vapautuessa liike pysähtyy ja jää siihe. Sitte toisella painalluksella tekee toiseen suuntaan. Voisi hyvinki laittaa rajaanturit mutta loppuu johot kouralle. Meinasin sähkösydeemit laittaa kopin puolelle niin olis vähä paremmin suojassa. Kourassa ne on alttiita kaikelle iskuille ja veelle.. Joku ledi yms. systeemi onki eka tarkotus testipenkkinä laittaa. Viiveet on ehkä ihan hyvät varsinki hipasujen takia. Syötölle pitää saaha sitte tehtyö pwm lähtöillä ne kiihytys ja hiastusrampit. Ei ehkä iha niin helposti suttaisi tyhjääkää ku nyt syöttö oli aika hätänen Jotaki koodin pätkie ku näkis mite esim tuo nappien käyttö on tehty.. Netistä en oikein malliakaan löytäny mistään. Tai jos on niin sillo en älyö sitä Tuossa nyt jonkinlainen esimerkki suunnanohjausesta yhdellä napilla. Ei se nyt tuotantovalmis ole, mutta kertonee yhdenlaisen ratkaisun. Se käyttää PWM:ää lähtöjen aktivointiin, mutta pysäytys tapahtuu ON-OFF tyyppisesti. Käytin testatessa UnoArduSim v2.2 simulaattoria, enkä varsinaista Arduinoa. Tällä pitäisi liikkeiden _pysähtyä_ nopeasti, mutta uutta liikettä ei saa päälle, ellei edellisestä painalluksesta ole kulunut vähintään "Delay" määräämä aika (millisekunteina). Arduino IDE softassa on paljon erilaisia ohjelmointiesimerkkejä ja Googlella löytyy lisää. // Set variables int ControlButtonPin = 2; int CylinderOutPin = 10; int CylinderInPin = 11; int StopPin = 13; int Acceleration = 10; int Duration = 200; int Delay = 300; int Button = 0; boolean CylinderStop = true; boolean CylinderOut; unsigned long Timer; unsigned long ButtonPress;
void setup() { // put your setup code here, to run once: // Setup input and outputs pinMode(ControlButtonPin, INPUT); pinMode(CylinderOutPin, OUTPUT); pinMode(CylinderInPin, OUTPUT); pinMode(StopPin, OUTPUT); digitalWrite(ControlButtonPin, LOW); Serial.begin(115200); Stop_Cylinder(); Timer = millis(); }
void loop() { // put your main code here, to run repeatedly: //Read button status if ( millis() - Duration >= ButtonPress ) { Button = digitalRead(ControlButtonPin); } if ( Button == 1 ) { ButtonPress = millis(); if ( CylinderStop == false ) { CylinderStop = true; Stop_Cylinder(); Timer = millis(); } else { if ( millis() - Timer >= Delay && CylinderStop == true ) { CylinderStop = false; if ( CylinderOut == true ) { CylinderOut = false; } else { CylinderOut = true; } Move_Cylinder(); } else { Serial.print(" Blocked by timer! "); Serial.print(millis()); Serial.print(" , "); Serial.println(Timer); } } } Button = 0; //delay(100);
if ( CylinderStop == true ){ digitalWrite(StopPin, HIGH); } else { digitalWrite(StopPin, LOW); } }
void Stop_Cylinder(){ Serial.println("-STOP-"); digitalWrite(CylinderOutPin, LOW); digitalWrite(CylinderInPin, LOW); delay(Delay); }
void Move_Cylinder() { if ( CylinderOut == true ) { Serial.print("OUT "); //digitalWrite(CylinderOutPin, HIGH); digitalWrite(CylinderInPin, LOW); for ( int i=0; i <= 255; i+=Acceleration ){ analogWrite(CylinderOutPin, i); Serial.print(">"); delay(50); } } else { Serial.print("IN <"); digitalWrite(CylinderOutPin, LOW); //digitalWrite(CylinderInPin, HIGH); for ( int i=0; i <= 255; i+=Acceleration ){ analogWrite(CylinderInPin, i); Serial.print("<"); delay(50); } } Serial.println("X");
}
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 3, 2019 16:58:14 GMT 4
Kitos. Pitääpä kokeilla ku kerkee. Mite saa useamman napin toimintaan ku eile kokeilin ja alko herjaa ku tein kopioimalla lisää rivejä. Nimet vaihtelin yms. Liekkö uupunu jotaki merkkejä sitte..
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 3, 2019 19:00:35 GMT 4
Nonii.. Alku on lupaavaa.. Semmonen ominaisuus tuossa koodissa et nappia ku painaa niin lähtö jää päälle. Ei sammu ku löysää napista. Pitää painaa uudelleen et sammuu. Seuraavalla painalluksellatoinen lähtö aktivoituu ja toimii samoin ku toinenki.
|
|
|
Post by petteriu on Apr 3, 2019 22:28:25 GMT 4
Nonii.. Alku on lupaavaa.. Semmonen ominaisuus tuossa koodissa et nappia ku painaa niin lähtö jää päälle. Ei sammu ku löysää napista. Pitää painaa uudelleen et sammuu. Seuraavalla painalluksellatoinen lähtö aktivoituu ja toimii samoin ku toinenki. Siten tuon ajattelin, että lyhyt painallus toimii ohjauksena, eli aktivoi ja pysäyttää liikkeen. Pysäytyksen jälkeen käännetään suuntaa. Jatkuva painallus taitaa kirjoittaa serial monitoriin virheen/varoituksen liian nopeasta ohjauskomennosta. Eipä sen liikkeen aktivointi vain nappia painaessa mahdoton liene toteuttaa sekään.
|
|
HTL
Junior Member
Posts: 421
|
Post by HTL on Apr 4, 2019 14:23:11 GMT 4
Teetko koodin suoraan arduinolle ja arduinolla välkyttelet ledejä? jos näin niin suosittelen kokeilemaan Tinkercadia tuolla voi suoraan simuloida tomintoja kuten esim tuossa mun testissä lämpötila ja luxi anturia.
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 4, 2019 14:43:51 GMT 4
Joo. Iha testie livenä. Siinä oppii parhaite minun mielestä..
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 4, 2019 20:55:30 GMT 4
Mulle ei oo oikein avautunut vaikka yrittäny ehtie apuaki esim. näitte } { merkkien järjestys yms. Se arduinon ohjelmoinnin aloitus kirjaki on kaverilta lainassa (ollu jo vissii ainaki sen 2v) mutta eihä sitä löyvy
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 4, 2019 21:43:43 GMT 4
Lottovoitto meni.. Vähä aekaa ku yritti ja lisäili niin piru. Sehä anto sen kääntää ilman herjausta En oo kokeillu mitä tekee mutta eipähä herjannu. Pitäs siis iha aktivoida lähön ku nappia painaa ja jokaiselle napille omansa.. const int buttonPin1 = 7; // the number of the pushbutton pin const int buttonPin2 = 4; const int buttonPin3 = 2; const int ledPin1 = 13; // the number of the LED pin const int ledPin2 = 5; const int ledPin3 = 3; int buttonState1= 0; // variable for reading the pushbutton status int buttonState2= 0; int buttonState3= 0; void setup() { pinMode(ledPin1, OUTPUT); pinMode(buttonPin1, INPUT); pinMode(ledPin2, OUTPUT); pinMode(buttonPin2, INPUT); pinMode(ledPin3, OUTPUT); pinMode(buttonPin3, INPUT); } void loop() {{ buttonState1 = digitalRead(buttonPin1); if (buttonState1 == HIGH) { digitalWrite(ledPin1, HIGH); } else { digitalWrite(ledPin1, LOW); } } { buttonState2 = digitalRead(buttonPin2); if (buttonState2 == HIGH) { digitalWrite(ledPin2, HIGH); } else { digitalWrite(ledPin2, LOW); } } { buttonState3 = digitalRead(buttonPin3); if (buttonState3 == HIGH) { digitalWrite(ledPin3, HIGH); } else { digitalWrite(ledPin3, LOW); } } }
|
|
TS82
Junior Member
Posts: 997
|
Post by TS82 on Apr 5, 2019 9:44:45 GMT 4
On jo käyny mielessä et jos jostaki sais halavlla siemensin logon.. Logiikoita ku tuli kouluaikoina ohjelmoituo ku oli pakko. Tosin siitäki on jo 20v aikaa.. Tietäs vain et jos artulla saa tehtyö tuon niin samaha se sillä olis tehä. Uunossa ei ainakaa lähöt yms riitä. Pitäs vain saaha joku artun hyvin osaava käsiin ja kertoa sille mitä artun pitäs tehä. Niin osais kertoa onnistuuko vai ei. Jos vähä epäilyttää niin sillo vaihtas suoraan eri ohjaukseen. Ei tuo uus logon aloituspaketti maksa kumminkaa ku vähä reilu 200e.
|
|