Random Tekenen

Arduino specifieke Software
Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Random Tekenen

Berichtdoor Sembot » 05 Mrt 2016, 10:44

Hai ,

Ik heb een mini CNC gebouwd " http://www.thingiverse.com/thing:1188744 " en nu wil ik die alles laten doen maar in random en autonoom
Zoals random X-as , Y-as en Z-as zoeken
X-as moet random links of rechts of niets doen
Y-as moet random voor of achter of niets doen
Z-as moet random op of neer
En dit alles nog eens random
Ik heb een programma dat al een deel doet maar de X as komt meestal eerst dan Y as en dan Z as , wat ze doen is oke maar de de assen moeten random gekozen worden

Wie kan helpen
cpp code
#include <Servo.h>

Servo xservo;
Servo yservo;
Servo Zservo;

int xpos;
int ypos;
int Zpos;

void setup()
{
xservo.attach(3);
yservo.attach(5);
Zservo.attach(6);
}

void loop()
{
{
ypos = random(180); // generate random value for y-servo
yservo.write(ypos); // y-servo moves to new position
delay(2000);
}
{
xpos = random(180); // generate random value for x-servo
xservo.write(xpos); // x-servo moves to new position
delay(2000);
}
{
Zpos = random(25); // generate random value for x-servo
Zservo.write(Zpos); // x-servo moves to new position
delay(200);
}
}

mvg

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Random Tekenen

Berichtdoor nicoverduin » 05 Mrt 2016, 11:10

Het klopt volledig wat je zeg. Je doe eerst de Y, dan de X en dan de Z. En dan doe je na elke as een delay(2000). Als het nu iets is wat je zo snel mogelijk moet afleren is de delay() functie. De processor doet dan niets.
Alternatief is timers gebruiken. Voor bijv. de x-as. De rest van de code ed. mag je zelf invullen. En als je toch bezig bent met met de IDE probeer de toetscombinatie CTRL-T eens. Maakt de code wat leesbaarder.

cpp code
#define DELAY_X 2000
uint32_t timerX = 0; // timer voor de x as

void setup(){
timerX = 1;
}

void loop() {
//
// kijk of timer x loopt
//
if (timerX != 0) {
//
// hij loopt dus nu kijken of deze is verlopen
//
if ((millis() - timerX) > DELAY_X){
//
// timer is verlopen dus verplaats x
//
xpos = random(180);
xservo.write(xpos);
//
// en start de timer voor de volgende keer
//
timerX = millis();
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Random Tekenen

Berichtdoor shooter » 05 Mrt 2016, 12:07

de timer kun je ook random maken.
en wat nico voor de X doet gewoon 3 keer onder elkaar zetten.
dan worden de bewegingen al een behoorlijk ingewikkeld ding.
verder kijk eens wat varspeedservo nog meer kan zoals snelheden,
ik zou de Z overigens maar 2 standen maken dus random(1)*180
paul deelen
shooter@home.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Random Tekenen

Berichtdoor Sembot » 05 Mrt 2016, 14:58

Hai,

Bedankt voor de snelle reactie

Met het voorbeeld van Nicoverduin gaat de assen X Y Z nu ook random bewegen ???
Ik denk dat het volgens de opstelling is die je schrijft dat eerst bvb X dan Y en Z zal bewegen ,dat wil ik nu net niet de verschillende assen zouden random moeten bewegen als dit kan natuurlijk
En het voorstel van shooter lijkt mij ook wel wat , de Z maar 2 standen geven zodat ofwel de pen omhoog is ofwel de pen omlaag

Ik wil mijn Mini CNC autonoom laten tekenen , ben benieuwt wat hij er van maakt

Zoiets als " http://www.mokafolio.de/works/Mechanical-Parts " vind ik iets hebben

mvg

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Random Tekenen

Berichtdoor Sembot » 05 Mrt 2016, 15:46

Hai,

Ik doe iets verkeert compileren is oke , maar ik krijg geen beweging in mijn mini cnc ?????????????????????

Tussen () ik heb control T gebruikt ???? maar bij copy gaat er ook iets mis denk ik
cpp code
#include <Servo.h>

#define DELAY_X 2000
uint32_t timerX = 0;

#define DELAY_Y 2000
uint32_t timerY = 0;

#define DELAY_Z 2000
uint32_t timerZ = 0;

Servo Xservo;
Servo Yservo;
Servo Zservo;

int Xpos;
int Ypos;
int Zpos;

void setup()
{
// {
timerX = 1;
timerY = 1;
timerZ = 1;
// }
// {
Xservo.attach(3);
Yservo.attach(5);
Zservo.attach(6);
// }
}

void loop() {

if (timerX != 0) { // kijk of timer X loopt

if ((millis() - timerX) > DELAY_X) { //hij loopt dus nu kijken of deze is verlopen

Xpos = random(180); // timer is verlopen dus verplaats X
Xservo.write(Xpos);
timerX = millis(); // en start de timer voor de volgende keer
}
}


if (timerY != 0) { // kijk of timer Y loopt

if ((millis() - timerY) > DELAY_Y) { //hij loopt dus nu kijken of deze is verlopen

Ypos = random(180); // timer is verlopen dus verplaats Y
Yservo.write(Ypos);
timerY = millis(); // en start de timer voor de volgende keer
}
}

{
if (timerZ != 0) { // kijk of timer Z loopt

if ((millis() - timerZ) > DELAY_Z) { //hij loopt dus nu kijken of deze is verlopen

Zpos = random(180); // timer is verlopen dus verplaats Z
Zservo.write(Zpos);
timerZ = millis(); // en start de timer voor de volgende keer
}
}
}
}


@edit: Ik heb wat accolades in commentaar gezet omdat ze overbodig zijn. Vwb. de copy:
Jij gebruikt nu code en /code aan het begin en einde. Als je daarvan code2=cpp en /code2 (eveneens tussen vierkante haken, dan krijg je een mooiere formattering.
Vwb. de code zelf, kun je evt Serial gebruiken om te zien wat er daadwerkelijk naar die servo's gestuurd wordt. De code ziet er wat mij betreft goed uit.
Laatst gewijzigd door Sembot op 05 Mrt 2016, 15:50, in totaal 1 keer gewijzigd.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Random Tekenen

Berichtdoor nicoverduin » 05 Mrt 2016, 15:49

Sembot schreef:Hai,

Bedankt voor de snelle reactie

Met het voorbeeld van Nicoverduin gaat de assen X Y Z nu ook random bewegen ???
Ik denk dat het volgens de opstelling is die je schrijft dat eerst bvb X dan Y en Z zal bewegen ,dat wil ik nu net niet de verschillende assen zouden random moeten bewegen als dit kan natuurlijk
En het voorstel van shooter lijkt mij ook wel wat , de Z maar 2 standen geven zodat ofwel de pen omhoog is ofwel de pen omlaag

Ik wil mijn Mini CNC autonoom laten tekenen , ben benieuwt wat hij er van maakt

Zoiets als " http://www.mokafolio.de/works/Mechanical-Parts " vind ik iets hebben

mvg

Ik heb je een voorbeeld gegeven van alleen de X as. Als je het zelfde verhaal doet voor de Y-as en evt . de z-as van shooter (wel het timer gedeelte gebruiken) dan gat ze alle 3 vrijwel gelijk draaien (enkele microseconden verschil). De random factor wordt door de random functie uitgevoerd. Heeft dus niets te maken met de timer. En mocht je de code niet begrijpen dan moet je eens heel hard gaan kijken naar Blink-without-delay..... Want dan begrijp je het concept niet van "alleen iets doen als er echt iets moet gebeuren"
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Random Tekenen

Berichtdoor Sembot » 05 Mrt 2016, 17:31

Hai,

Ik krijg geen beweging in mijn programma wat is er loos ??????? een rechte lijn van 3cm staat op mijn blad

Bedankt voor de info over " Blink-without-delay " ik heb het begrepen met die pizza

mvg

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Random Tekenen

Berichtdoor nicoverduin » 05 Mrt 2016, 18:34

Gewoon je oude programma eerst laden om uit te sluiten dat er hardware problemen zijn.
Daarnaast kun je nog een laatste regel in setup() toevoegen met delay(5);
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 79
Geregistreerd: 08 Apr 2013, 20:16
Woonplaats: Lokeren

Re: Random Tekenen

Berichtdoor Sembot » 05 Mrt 2016, 21:53

Hai

Bedankt voor de support, en ja er moest een delay(5) bijkomen , nu werk het
Heb de define delay op 1000 gezet , en dit is een mooie beweging snelheid

Het verschil met mijn vorige programma is nu dat er meer gebogen lijnen in een trek worden getekend
In mijn vorige programma waren dat meestal rechte lijnen die getekend werden

Nu nog effe uitzoeken hoe we het best de Z as in het programma verwerken

mvg

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 89 gasten