error in my code to drive dc motor using h-bridge and xbee module


hi,
i working on robotic arm project , trying "haptic feedback" it.
so, implemented using small dc vibrator motor ( got old mobile phone), 2 arduino uno boards xbee modules series 2 , fsr (force sensitive sensor).

what trying read values fsr, map them values 0-9 , transmit them receiver side using xbee.

on reciever side, code supposed read values (0-9) , check if value greater number( used 5), vibrator motor should vibrate 300 ms stops 1 second. , go read values xbee serial again , repeat process

i used code sender side:

code: [select]
#include<softwareserial.h>
softwareserial xbee(2,3);  //rx, tx
//int potpin=0;
int fsr_pin = a0;
void setup() {
  // put setup code here, run once:
serial.begin(9600);
xbee.begin(9600);
}
void loop() {
  // put  main code here, run repeatedly:
  int val= analogread(fsr_pin);
  int x=map(val,0,1023,0,9);
xbee.print(x);
serial.println(x);
//delay(1000);

}


and code receiver side:

code: [select]
#include<softwareserial.h>
softwareserial xbee(2,3);  //rx, tx
//int fsr_pin = a0; //analog pin 0
const int motor1pin = 7;    // h-bridge leg 1 (pin 2, 1a)
const int motor2pin = 8;    // h-bridge leg 2 (pin 7, 2a)
const int enablepin = 9;    // h-bridge enable pin
void setup() {
   // set other pins you're using outputs:
  serial.begin(9600);
  xbee.begin(9600);
   pinmode(motor1pin, output);
    pinmode(motor2pin, output);
    pinmode(enablepin, output);
     delay(500);
   
}
void loop()
{
  while(xbee.available()==0);
  serial.println(xbee.read()-'0');
  int data = xbee.read() - '0';
 
 if( data > 5){
  // set enablepin high motor can turn on:
    digitalwrite(enablepin, high);
    digitalwrite(motor1pin, low);   // set leg 1 of h-bridge low
    digitalwrite(motor2pin, high);  // set leg 2 of h-bridge high
    delay(300);
    digitalwrite(enablepin, low);
delay(1000);
 }
    else{
        digitalwrite(enablepin, low);
    }
delay(100);
serial.flush();

}



what happens receiver side receives values xbee serial , prints them on serial monitor successfully, once value exceeds 5 motor start vibrating (300 ms on & 1 second off) repeatedly , readings on serial monitor change slower (every 1.3 sec) , motor keep vibrating pattern if fsr on sender side reads 0,1,2.. <5 
the reciever side still show 8,8,8,8,8 or 7,7,7
is program gets stuck in if statement ? or can please tell me doing wrong there.

don't use delay(), delays lose input.

study blinkwithoutdelay example.


Arduino Forum > Using Arduino > Programming Questions > error in my code to drive dc motor using h-bridge and xbee module


arduino

Comments