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:
and code receiver side:
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.
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.
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
Post a Comment