I need to see my variables during execution of firmware. I use Serial.begin(9600); in the setup structure and Serial.print(variable); in the loop structure. during execution, when I open the serial monitor (tools menu> Serial Monitor) the window remains blank.
/* this program counts tach input from a hall sensor of motor with 2 magnets/ rev
and converts it into RPM.
*/
volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (half_revolutions >= 20) {
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 30*1000/(millis() - timeold)*half_revolutions;
timeold = millis();
half_revolutions = 0;
Serial.println(rpm,DEC);
}
}
void rpm_fun()
{
half_revolutions++;
//Each rotation, this interrupt function is run twice
}
the serial code looks right to me, so I suspect the interrupt isnt working for some reason;
It might be due to which board you are using, not all of them have the same interrupts on the same pins.
what I would do is to add;
void rpm_fun()
{
// toggle the board LED on pin 13
digitalWrite(13, !digitalRead(13));
half_revolutions++;
//Each rotation, this interrupt function is run twice
}
This should flash the LED in time with interrupts received, and then you'll know the code is being executed. If it is, then i'm stuck...