node.js - Change the speed of a stepper motor with an Arduino and Nodejs -


my stepper motor controlled using l293d driver connected ardiuno. using serial connection control motor nodejs. want speed of motor change when move slider unable write function performs right outcome.

the code based tutorial,http://www.barryvandam.com/node-js-communicating-with-arduino/

 #include <spi.h> //#include <arest.h> #include <stepper.h> #include <wire.h>  // forward/reverse read vars string inputstring = "";         // string hold incoming data boolean togglecomplete = false;  // whether string complete boolean pwmcomplete = false;   int lastcommand = 0; int velocity = 0; int ina1 = 12; // input 1 of stepper int ina2 = 11; // input 2 of stepper int inb1 = 10; // input 3 of stepper int inb2 = 9; // input 4 of stepper  int steps = 0; int rpm = 0;  #define steps 200  stepper motor(steps, ina1, ina2, inb1, inb2);  //int speed; void setup() {                   pinmode(ina1, output);        pinmode(ina2, output);        pinmode(inb1, output);        pinmode(inb2, output);        serial.begin(9600);     }   void loop() {      //motor.setspeed(10);   //motor.step(1);     // recieve data node , write string    while (serial.available()) {     char inchar = (char)serial.read();     if(inchar == 'e'){ // end character forward rotation      togglecomplete = true;         //lastcommand = 1;           }     if(inchar == 'p'){       pwmcomplete = true;       //lastcommand = 2;      }     else{       inputstring += inchar;      }   }     if (togglecomplete == true){   lastcommand = command();   }    if (pwmcomplete == true){    velocity = speed();    lastcommand =2;  }     switch(lastcommand)    {     case 0: //start         motor.setspeed(10);         motor.step(1);         break;       case 1: // forward         // dim led 3         motor.setspeed(20);         motor.step(-1);         break;       case 2: // backward           motor.setspeed(10);       motor.step(-1);       break;       case 3: //stop       motor.setspeed(0);       break;    }    delay(50); // give arduino breathing room. }   int command(){   if(!serial.available() && togglecomplete == true)     {     int _command = 1;     togglecomplete = false;     return _command;     }  }    int speed(){    if(!serial.available() && pwmcomplete == true)      {      pwmcomplete = false;      // convert string int.      int recievedval = stringtoint();     return recievedval;         }    }    int stringtoint() {     char charholder[inputstring.length()+1];     inputstring.tochararray(charholder,inputstring.length()+1);     inputstring = "";     int _recievedval = atoi(charholder);     return _recievedval; } 

with few tweaks, code working way want.

#include <spi.h> #include <stepper.h> #include <wire.h>  // forward/reverse read vars string inputstring = "";         // string hold incoming data boolean togglecomplete = false; boolean togglecomplete1 = false; // whether string complete boolean pwmcomplete = false;   int lastcommand = 1;  int ina1 = 12; // input 1 of stepper int ina2 = 11; // input 2 of stepper int inb1 = 10; // input 3 of stepper int inb2 = 9; // input 4 of stepper  int steps = 0; int rpm = 0; int stringtoint(); int velocity = 1;  #define steps 250  stepper motor(steps, ina1, ina2, inb1, inb2);   //int speed; void setup() {                   pinmode(ina1, output);        pinmode(ina2, output);        pinmode(inb1, output);        pinmode(inb2, output);        serial.begin(9600);     }   void loop() {      //motor.setspeed(10);   //motor.step(1);    // recieve data node , write string    while (serial.available()  && togglecomplete == false && pwmcomplete == false) {     char inchar = (char)serial.read();     if(inchar == 'e'){ // end character forward rotation      togglecomplete = true;         //lastcommand = 1;           }     if(inchar == 'p'){       pwmcomplete = true;       //lastcommand = 2;      }    if(inchar == 'f'){      togglecomplete1 = true;      }      else{       inputstring += inchar;      }   }      if(!serial.available()&& togglecomplete == true){     lastcommand = 1;     togglecomplete = false;   }     if(!serial.available()&& togglecomplete1 == true){     lastcommand = 2;     togglecomplete1 = false;   }  switch(lastcommand)    {        case 1: // forward         if(!serial.available() && pwmcomplete == true)    {        stringtoint();        pwmcomplete = false;   }        motor.setspeed(velocity);        motor.step(1);        break;        case 2:        if(!serial.available() && pwmcomplete == true)    {        stringtoint();        pwmcomplete = false;   }        motor.setspeed(velocity);        motor.step(-1);        break;   }  }    int stringtoint() {     char charholder[inputstring.length()+1];     inputstring.tochararray(charholder,inputstring.length()+1);     inputstring = "";     velocity = atoi(charholder);     return velocity; } 

Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -