//program for controling 2 step motors(2coils/motor) with a 1achses analog gamepadjoystick for 1000mWlaz0r graving machine //receiving images from pc later.. //MEOW itf free use it or parts if usefull #define mesy PA1 #define mesx PA2 #define t1 PA3 #define rot PC13 #define grun PC14 #define blau PC15 #define laz0r PA5 #define laz0r2 PA6 #define t2 PA4 #define t3 PA0 #define m1_a PB12 #define m1_b PB13 #define m1_c PB14 #define m1_d PB15 //module two #define m2_a PA8 #define m2_b PA9 #define m2_c PB1 #define m2_d PB0 long allfcount = micros(); long maintime = millis(); int onpress[17]; int zeit1 =0; long zeita =10; //untervallspeed int zeitb =0; //anzeitverlängerung int zeitc =30; //auszeitverlängerung int teiler =1; //emfpindlichkeit int fcount1 =0; int soundi =0; int soundminimum =2; int setled=10; int colorindex2 =0; int setled2 =10; int zeit2=0; int volcount =0; int onof=0; void setup() { pinMode(rot, OUTPUT); pinMode(grun, OUTPUT); pinMode(blau, OUTPUT); pinMode(laz0r, OUTPUT); pinMode(laz0r2, OUTPUT); pinMode(m1_a, OUTPUT); pinMode(m1_b, OUTPUT); pinMode(m1_c, OUTPUT); pinMode(m1_d, OUTPUT); pinMode(m2_a, OUTPUT); pinMode(m2_b, OUTPUT); pinMode(m2_c, OUTPUT); pinMode(m2_d, OUTPUT); pinMode(t1, INPUT); pinMode(t2, INPUT); pinMode(t3, INPUT); digitalWrite(m1_a,HIGH); digitalWrite(m1_b,HIGH); digitalWrite(m1_c,HIGH); digitalWrite(m1_d,HIGH); digitalWrite(m2_a,HIGH); digitalWrite(m2_b,HIGH); digitalWrite(m2_c,HIGH); digitalWrite(m2_d,HIGH); // delay( 3000 ); // power-up safety delay } int motor1w=0; int motor2w=0; int powerz=0; int32_t xer=1000; int32_t yer=1000; void loop() { zeitreise(); istinput(); if (digitalRead(t1) == HIGH ) {onof=1;} if (digitalRead(t1) == LOW && powerz==0) {onof=0;} if (onof==1 ||powerz==1) {digitalWrite(laz0r,HIGH);digitalWrite(laz0r2,HIGH); } if (onof ==0 ) {digitalWrite(laz0r,LOW);digitalWrite(laz0r2,LOW); } if (xer >1060) {motor2(0,1061-(xer-1060),true,true);}//unten if (xer <1000) {motor2(0,xer,false,true);} if (xer <1060 && xer > 1000) {motor2(0,xer,true,false);} if (yer >1010) {motor1(0,1011-(yer-1010),false,true);}//oben if (yer <960) {motor1(0,yer,true,true);} if (yer <1010 && yer > 960) {motor1(0,yer,true,false);} } long motor1time = micros(); int motor1zeit=2; void motor1(int posi,int32_t speedr,boolean links,boolean go) {//oben while ((micros()- motor1time) >= (((speedr+50)*150)+100)) { if (go==true && links==true) { motor1zeit--;} if (go==true && links==false) { motor1zeit++;} motor1time = micros(); } if (motor1zeit ==4) {digitalWrite(m1_d,HIGH); digitalWrite(m1_c,HIGH); digitalWrite(m1_b,HIGH); digitalWrite(m1_a,LOW);} if (motor1zeit ==2) {digitalWrite(m1_a,HIGH); digitalWrite(m1_d,HIGH); digitalWrite(m1_c,HIGH); digitalWrite(m1_b,LOW);} if (motor1zeit ==3) {digitalWrite(m1_b,HIGH); digitalWrite(m1_a,HIGH); digitalWrite(m1_d,HIGH); digitalWrite(m1_c,LOW);} if (motor1zeit ==5) {digitalWrite(m1_c,HIGH); digitalWrite(m1_b,HIGH); digitalWrite(m1_a,HIGH); digitalWrite(m1_d,LOW);} if (motor1zeit <=1) {motor1zeit=5;} if (motor1zeit >=6) {motor1zeit=2;}} long motor2time = micros(); int motor2zeit=2; void motor2(int posi2,int32_t speedr2,boolean links2,boolean go2) {//unten while ((micros()- motor2time) >= (((speedr2+50)*150)+100)) { if (go2==true && links2==true) { motor2zeit--;} if (go2==true && links2==false) { motor2zeit++;} motor2time = micros(); } if (motor2zeit <=1) {motor2zeit=5;} if (motor2zeit ==4) {digitalWrite(m2_d,HIGH); digitalWrite(m2_c,HIGH); digitalWrite(m2_b,HIGH); digitalWrite(m2_a,LOW); digitalWrite(grun, HIGH );}//1 if (motor2zeit ==2) {digitalWrite(m2_a,HIGH); digitalWrite(m2_d,HIGH); digitalWrite(m2_c,HIGH); digitalWrite(m2_b,LOW);digitalWrite(rot, LOW );}//3 if (motor2zeit ==3) {digitalWrite(m2_b,HIGH); digitalWrite(m2_a,HIGH); digitalWrite(m2_d,HIGH); digitalWrite(m2_c,LOW);digitalWrite(rot, HIGH );digitalWrite(grun, LOW );}//2 if (motor2zeit ==5) {digitalWrite(m2_c,HIGH); digitalWrite(m2_b,HIGH); digitalWrite(m2_a,HIGH); digitalWrite(m2_d,LOW);digitalWrite(blau, HIGH ); }//4 // if (motor2zeit ==8) {digitalWrite(m2_d,HIGH); digitalWrite(m2_c,HIGH); digitalWrite(m2_b,HIGH); digitalWrite(m2_a,LOW); digitalWrite(blau, LOW );}//1 // if (motor2zeit ==6) {digitalWrite(m2_a,HIGH); digitalWrite(m2_d,HIGH); digitalWrite(m2_c,HIGH); digitalWrite(m2_b,LOW);}//3 // if (motor2zeit ==9) {digitalWrite(m2_b,HIGH); digitalWrite(m2_a,HIGH); digitalWrite(m2_d,HIGH); digitalWrite(m2_c,LOW);}//2 // if (motor2zeit ==7) {digitalWrite(m2_c,HIGH); digitalWrite(m2_b,HIGH); digitalWrite(m2_a,HIGH); digitalWrite(m2_d,LOW);}//4 if (motor2zeit >=6) {motor2zeit=2;}} void istinput(void){ if (zeit1 >=2) { if (digitalRead(t1) == HIGH && onpress[0] ==0) { onpress[0] =1; }//motor2(0,100,false,true);} //minisound if (onpress[0] == 1) { onpress[1]++; digitalWrite(blau,HIGH); } if (onpress[1] >= 15) { onpress[1] =0; onpress[0]=0; } if (digitalRead(t2) == HIGH && onpress[2] ==0) { onpress[2] =1; powerz++; if (powerz>=2) {powerz=0;}}// motor2(0,100,true,true); } if (onpress[2] == 1) { onpress[3]++; digitalWrite(rot,HIGH); } if (onpress[3] >= 30) { onpress[3] =0; onpress[2]=0; } /* if (digitalRead(t3) == HIGH && onpress[4] ==0) { onpress[4] =1; speed1-=1; } if (onpress[4] == 1) { onpress[5]++;} if (onpress[5] == 2) { teiler--; digitalWrite(pruf, HIGH );} //tudinge if (onpress[5] >= 3) { onpress[5] =0; onpress[4]=0; digitalWrite(pruf, LOW ); }*/ zeit1=0; } } long shorttime=micros(); void zeitreise(void){ while ((millis()- maintime) >= 10) { zeit1++; zeit2++; digitalWrite(rot,LOW);digitalWrite(grun,LOW);digitalWrite(blau,LOW); maintime = millis(); } while ((micros()- shorttime) >= 100) { if ((analogRead(mesx)/2) > xer && xer<=2020) {xer++;} if ((analogRead(mesx)/2) < xer && xer>=1) {xer--;} if ((analogRead(mesy)/2) > yer && yer<=2020) {yer++;} if ((analogRead(mesy)/2) < yer && yer>=1) {yer--;} shorttime = micros(); } } // //programm by marderchen =^.^= /* MMMMMMMM MMMMMMMMEEEEEEEEEEEEEEEEEEEEEE OOOOOOOOO WWWWWWWW WWWWWWWW M:::::::M M:::::::ME::::::::::::::::::::E OO:::::::::OO W::::::W W::::::W M::::::::M M::::::::ME::::::::::::::::::::E OO:::::::::::::OO W::::::W W::::::W M:::::::::M M:::::::::MEE::::::EEEEEEEEE::::EO:::::::OOO:::::::OW::::::W W::::::W M::::::::::M M::::::::::M E:::::E EEEEEEO::::::O O::::::O W:::::W WWWWW W:::::W M:::::::::::M M:::::::::::M E:::::E O:::::O O:::::O W:::::W W:::::W W:::::W M:::::::M::::M M::::M:::::::M E::::::EEEEEEEEEE O:::::O O:::::O W:::::W W:::::::W W:::::W M::::::M M::::M M::::M M::::::M E:::::::::::::::E O:::::O O:::::O W:::::W W:::::::::W W:::::W M::::::M M::::M::::M M::::::M E:::::::::::::::E O:::::O O:::::O W:::::W W:::::W:::::W W:::::W M::::::M M:::::::M M::::::M E::::::EEEEEEEEEE O:::::O O:::::O W:::::W W:::::W W:::::W W:::::W M::::::M M:::::M M::::::M E:::::E O:::::O O:::::O W:::::W:::::W W:::::W:::::W M::::::M MMMMM M::::::M E:::::E EEEEEEO::::::O O::::::O W:::::::::W W:::::::::W M::::::M M::::::MEE::::::EEEEEEEE:::::EO:::::::OOO:::::::O W:::::::W W:::::::W M::::::M M::::::ME::::::::::::::::::::E OO:::::::::::::OO W:::::W W:::::W M::::::M M::::::ME::::::::::::::::::::E OO:::::::::OO W:::W W:::W MMMMMMMM MMMMMMMMEEEEEEEEEEEEEEEEEEEEEE OOOOOOOOO WWW WWW `..`... `...... `.. .. `........`....... `........`........ `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `...... `. `.. `...... `...... `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. `.. .. `.. `.. `..`........`........ */