I am still learning, only had an arduino about 3 weeks, and before that never touched C, I have done some VB, but that was also self taught so I don't want to pick up too many bad habbits early on. So far I've learnt the little I know from the exmaples and from this forum.
I've updated my code with an else function. So now that I've got the frequncy stored into the varilable "sqaure_in" how do I output a frequency?
/*
Read square wave speed signal in on pin2 and output squarewave speed on pin4
*/
volatile uint32_t lastPulseTime = 0;
volatile uint32_t lastPulseWidth = 0;
const int speed_in = 2; //sqaure wave input from speed source
const int gear_in = 3; //gear select input
const int speed_out = 4; //sqaure wave output
// variables for calculation
const float ratio1 = 1/ 2.315;
const float ratio2 = 1/ 1.731;
const float FD = 1 / 4.7;
const float idler = 1.04;
const float pulses = 4; //pulses per simultated revolution
float square_in; //speed received
float square_out; //speed to send
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(speed_in, INPUT);
pinMode(speed_out, OUTPUT);
pinMode(gear_in, INPUT);
attachInterrupt(0, registerPulse, RISING);
}
// the loop routine runs over and over again forever:
void loop() {
//Sample data to test
square_in = 1000000UL / lastPulseWidth;
/*
read the square wave speed input from "speed_in" into variable "sqaure_in"
*/
if (gear_in == HIGH) { //ratio1 is selected
square_out = square_in / 2 * ratio1 / idler * FD * pulses;
}//end of ratio1
else{ //ratio2 is selected
square_out = square_in / 2 * ratio2 / idler * FD * pulses;
}//end of ratio2
/*
//output the variable "sqaure_out" as square wave to "Speed_out"
*/
}
void registerPulse() {
uint32_t cur = micros();
lastPulseWidth = cur - lastPulseTime;
lastPulseTime = cur;
}