Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- #define NBR_SERVOS 1
- int RotEn = 2;
- int RotClk = 4;
- int RotDir = 3;
- int RotEn2 = 11;
- int RotClk2 = 10;
- int RotDir2 = 9;
- int enabled = 0;
- int MinAuslenk = 0;
- int MaxAuslenk = 105;
- int DefAuslenk = 90;
- int Auslenk = 0;
- int AuslenkDir=0;
- int dir = 0;
- int windings = 0;
- int winding = 0;
- int Speed = 1;
- int debug = 0;
- int start = 0;
- int WireTh = 10;
- String content = "";
- String tcontent = "";
- char character;
- void setup(){
- Serial.begin(9600);
- pinMode(RotEn,OUTPUT);
- pinMode(RotClk,OUTPUT);
- pinMode(RotDir,OUTPUT);
- pinMode(RotClk2,OUTPUT);
- pinMode(RotDir2,OUTPUT);
- pinMode(RotEn2,OUTPUT);
- Auslenk = DefAuslenk;
- digitalWrite(RotEn,1);
- digitalWrite(RotEn2,1);
- }
- void doturn(int ldir){
- digitalWrite(RotDir,ldir);
- for(int i = 1;i<200;i++){
- digitalWrite(RotClk,1);
- delayMicroseconds(100);
- digitalWrite(RotClk,0);
- delay(11-Speed);
- }
- }
- void dosteps(int ldir2,int steps){
- digitalWrite(RotDir2,ldir2);
- for(int i = 1;i<steps;i++){
- digitalWrite(RotClk2,1);
- delayMicroseconds(100);
- digitalWrite(RotClk2,0);
- delay(1);
- }
- }
- void loop(){
- while(Serial.available()>0) {
- character = Serial.read();
- if(character==0x7C){
- content = tcontent;
- tcontent = "";
- content.replace("|","");
- if(debug){
- Serial.println("got "+ content + " with length "+content.length()); // debug
- }
- if(content=="help"){
- Serial.println("winderenable enables the winder----------------------------------");
- Serial.println("winderdisable disables the winder--------------------------------");
- Serial.println("start starts the winder------------------------------------------");
- Serial.println("reset resets the winder------------------------------------------");
- Serial.println("windings<number> sets the num of windings------------------------");
- Serial.println("minsturn sets servos min rotation pos----------------------------");
- Serial.println("maxsturn sets servos max rotation pos----------------------------");
- Serial.println("servturn turns the servo to the entered pos----------------------");
- Serial.println("debug insults you and then it toggles the command debugger-------");
- Serial.println("speed set the speed from 1 to 10---------------------------------");
- Serial.println("printvars prints all variables like speed, windings and isStarted");
- }
- if(content=="winderenable"){
- enabled = 1;
- Serial.println("Winder enabled");
- }
- if(content=="winderdisable"){
- enabled = 0;
- Serial.println("Winder disabled");
- }
- if(content=="start"){
- start = 1;
- Serial.print("Starting wind with ");
- Serial.print(windings);
- Serial.println(" windings");
- }
- if(content=="pause"){
- start = 0;
- Serial.print("Paused wind at ");
- Serial.print(winding);
- Serial.println(" winding");
- }
- if(content=="turnr"){
- digitalWrite(RotEn,0);
- digitalWrite(RotDir,0);
- for(int i = 1;i<20;i++){
- digitalWrite(RotClk,1);
- delayMicroseconds(100);
- digitalWrite(RotClk,0);
- delay(11-Speed);
- }
- digitalWrite(RotEn,1);
- }
- if(content=="turnl"){
- digitalWrite(RotEn,0);
- digitalWrite(RotDir,1);
- for(int i = 1;i<20;i++){
- digitalWrite(RotClk,1);
- delayMicroseconds(100);
- digitalWrite(RotClk,0);
- delay(11-Speed);
- }
- digitalWrite(RotEn,1);
- }
- if(content=="reset"){
- enabled = 0;
- start = 0;
- winding = 0;
- WireTh=0;
- AuslenkDir=0;
- Serial.println("Resetted!");
- }
- if(content.substring(0,5)=="speed"){
- content = content.substring(5,13);
- Speed = content.toInt();
- if(Speed>=10){Speed=10;}
- if(Speed<=1){Speed=1;}
- Serial.print("Set speed to ");
- Serial.println(Speed);
- }
- if(content.substring(0,8)=="windings"){
- content = content.substring(8,16);
- windings = content.toInt();
- Serial.println(windings);
- Serial.print("Set windings to ");
- Serial.println(windings);
- }
- if(content.substring(0,8)=="maxsturn"){
- content = content.substring(8,16);
- MaxAuslenk = content.toInt();
- Serial.print("Set max turn to ");
- Serial.println(MaxAuslenk);
- }
- if(content.substring(0,8)=="servturl"){
- digitalWrite(RotEn2,0);
- content = content.substring(8,16);
- int Stepps=content.toInt();
- dosteps(0,Stepps);
- digitalWrite(RotEn2,1);
- }
- if(content.substring(0,8)=="servturr"){
- digitalWrite(RotEn2,0);
- content = content.substring(8,16);
- int Stepps=content.toInt();
- dosteps(1,Stepps);
- digitalWrite(RotEn2,1);
- }
- if(content.substring(0,8)=="wirethic"){
- content = content.substring(8,16);
- WireTh=content.toInt();
- Serial.print("Set wirethickness (steps per rotation) to ");
- Serial.println(WireTh);
- }
- if(content=="debug"){
- debug != debug;
- Serial.println("no way nigga, what r u doing? ... its toggled.");
- }
- if(content=="printvars"){
- Serial.print("Windings ");
- Serial.println(windings);
- Serial.print("Winding ");
- Serial.println(winding);
- Serial.print("Start ");
- Serial.println(start);
- Serial.print("Enabled ");
- Serial.println(enabled);
- Serial.print("Speed ");
- Serial.println(Speed);
- Serial.print("MaxAuslenk ");
- Serial.println(MaxAuslenk);
- }
- content = "";
- }
- tcontent.concat(character);
- }
- if(enabled){
- digitalWrite(RotEn,!start);
- digitalWrite(RotEn2,!start);
- if(start){
- if(Auslenk>MaxAuslenk){Auslenk=MaxAuslenk;}
- if(Auslenk<MinAuslenk){Auslenk=MinAuslenk;}
- if(start){
- winding = winding + 1;
- if(winding <=windings){
- if(!AuslenkDir){
- Auslenk = Auslenk + 1;
- dosteps(0,WireTh);
- if(Auslenk>=MaxAuslenk){AuslenkDir=1;};
- }else{
- Auslenk = Auslenk - 1;
- dosteps(1,WireTh);
- if(Auslenk<=MinAuslenk){AuslenkDir=0;};
- }
- doturn(dir);
- }else{
- start = 0;
- Serial.println("Done Winding!");
- winding=0;
- Auslenk=DefAuslenk;
- }
- //delay(10);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement