Using Arduino BT for bike odometer
hi, having problem whilst trying create interface between arduino , pc, have loaded following code onto arduino
int led_pin = 13;
int interrupt_pin_a = 0; // digital pin #2
int interrupt_pin_b = 1; // digital pin #3
int signal_pin_a = 2; // digital pin #2
int signal_pin_b = 3; // digital pin #3
volatile int state_a = 0;
volatile int state_b = 0;
volatile unsigned long last_seen_millis = 0;
volatile int pause_counter = 0;
volatile int continue_counter = 0;
void setup(){
nointerrupts();
pinmode(led_pin, output);
pinmode(signal_pin_a, input );
pinmode(signal_pin_b, input );
digitalwrite(led_pin, low);
serial.begin(9600);
state_a = 0;
state_b = 0;
attachinterrupt(interrupt_pin_a, detect_a, rising);
attachinterrupt(interrupt_pin_b, detect_b, rising);
interrupts();
}
void detect_a() {
nointerrupts();
state_a++;
interrupts();
}
void detect_b() {
nointerrupts();
state_b++;
interrupts();
}
void loop(){
if(state_a > 0 && state_b > 0) {
// saw falling signal. indicates
// magnet sensor has gone past,
// , can issue message on serial
// port.
nointerrupts();
state_a = 0;
state_b = 0;
// indicate signal led
digitalwrite(led_pin, high);
serial.println( millis() );
digitalwrite(led_pin, low);
interrupts();
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying detect next interrupt
while( millis() < ( last_seen_millis + 100 ) ) {
state_a = 0;
state_b = 0;
}
}
// don't see interrupt state_a, but
// should check if we've left sensor
// in pause mode
while( digitalread(signal_pin_a) ) {
digitalwrite(led_pin, high);
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying see if we're
// paused
while( millis() < ( last_seen_millis + 100 ) ) {
// noop
}
// we've waited 100 milliseconds , we're still
// reading positive signal
pause_counter++;
// if we've seen behavior 5 seconds,
// pause exercise.
if(pause_counter > 50) {
serial.println( "pause" );
last_seen_millis = millis();
while( millis() < ( last_seen_millis + 10000 ) ) {
// noop
}
}
}
pause_counter = 0;
digitalwrite(led_pin, low);
// don't see interrupt state_b, but
// should check if we've left sensor
// in continue mode
while( digitalread(signal_pin_b) ) {
digitalwrite(led_pin, high);
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying see if we're
// paused
while( millis() < ( last_seen_millis + 100 ) ) {
// noop
}
// we've waited 100 milliseconds , we're still
// reading positive signal
continue_counter++;
// if we've seen behavior 5 seconds,
// pause exercise.
if(continue_counter > 50) {
serial.println( "continue" );
last_seen_millis = millis();
while( millis() < ( last_seen_millis + 10000 ) ) {
// noop
}
}
}
continue_counter = 0;
digitalwrite(led_pin, low);
}
this code persons project attempting achieve similar result using arduino uno board. complete beginner this, have never done microcontroller programming before , have little circuit design experience. board seems sensing magnet passing read switches, when using serial monitor came arduino software nothing seems coming on screen, have downloaded separate more powerful serial port monitor eltima , have had no luck that.
please tell advise me how rectify attach pictures of circuit give insight. green power led flashes off when pass magnet reed switches correct don't know :~ [img][/https://www.facebook.com/photo.php?fbid=10152939111220646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939091700646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939091260646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939090840646&set=a.10151367977080646.820068.655585645&type=1&theater]
int led_pin = 13;
int interrupt_pin_a = 0; // digital pin #2
int interrupt_pin_b = 1; // digital pin #3
int signal_pin_a = 2; // digital pin #2
int signal_pin_b = 3; // digital pin #3
volatile int state_a = 0;
volatile int state_b = 0;
volatile unsigned long last_seen_millis = 0;
volatile int pause_counter = 0;
volatile int continue_counter = 0;
void setup(){
nointerrupts();
pinmode(led_pin, output);
pinmode(signal_pin_a, input );
pinmode(signal_pin_b, input );
digitalwrite(led_pin, low);
serial.begin(9600);
state_a = 0;
state_b = 0;
attachinterrupt(interrupt_pin_a, detect_a, rising);
attachinterrupt(interrupt_pin_b, detect_b, rising);
interrupts();
}
void detect_a() {
nointerrupts();
state_a++;
interrupts();
}
void detect_b() {
nointerrupts();
state_b++;
interrupts();
}
void loop(){
if(state_a > 0 && state_b > 0) {
// saw falling signal. indicates
// magnet sensor has gone past,
// , can issue message on serial
// port.
nointerrupts();
state_a = 0;
state_b = 0;
// indicate signal led
digitalwrite(led_pin, high);
serial.println( millis() );
digitalwrite(led_pin, low);
interrupts();
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying detect next interrupt
while( millis() < ( last_seen_millis + 100 ) ) {
state_a = 0;
state_b = 0;
}
}
// don't see interrupt state_a, but
// should check if we've left sensor
// in pause mode
while( digitalread(signal_pin_a) ) {
digitalwrite(led_pin, high);
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying see if we're
// paused
while( millis() < ( last_seen_millis + 100 ) ) {
// noop
}
// we've waited 100 milliseconds , we're still
// reading positive signal
pause_counter++;
// if we've seen behavior 5 seconds,
// pause exercise.
if(pause_counter > 50) {
serial.println( "pause" );
last_seen_millis = millis();
while( millis() < ( last_seen_millis + 10000 ) ) {
// noop
}
}
}
pause_counter = 0;
digitalwrite(led_pin, low);
// don't see interrupt state_b, but
// should check if we've left sensor
// in continue mode
while( digitalread(signal_pin_b) ) {
digitalwrite(led_pin, high);
last_seen_millis = millis();
// wait @ least 100 milliseconds
// before trying see if we're
// paused
while( millis() < ( last_seen_millis + 100 ) ) {
// noop
}
// we've waited 100 milliseconds , we're still
// reading positive signal
continue_counter++;
// if we've seen behavior 5 seconds,
// pause exercise.
if(continue_counter > 50) {
serial.println( "continue" );
last_seen_millis = millis();
while( millis() < ( last_seen_millis + 10000 ) ) {
// noop
}
}
}
continue_counter = 0;
digitalwrite(led_pin, low);
}
this code persons project attempting achieve similar result using arduino uno board. complete beginner this, have never done microcontroller programming before , have little circuit design experience. board seems sensing magnet passing read switches, when using serial monitor came arduino software nothing seems coming on screen, have downloaded separate more powerful serial port monitor eltima , have had no luck that.
please tell advise me how rectify attach pictures of circuit give insight. green power led flashes off when pass magnet reed switches correct don't know :~ [img][/https://www.facebook.com/photo.php?fbid=10152939111220646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939091700646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939091260646&set=a.10151367977080646.820068.655585645&type=1&theater]
[img][/https://www.facebook.com/photo.php?fbid=10152939090840646&set=a.10151367977080646.820068.655585645&type=1&theater]
please tell advise me how rectify attach pictures of circuit give insight.
you missed placing [ /img ] @ ends of pic links.
also green power led flashes off when pass magnet reed switches correct don't know
not good.
(what's tummy telling you?)
Arduino Forum > Using Arduino > Project Guidance > Using Arduino BT for bike odometer
arduino
Comments
Post a Comment