OK,
I have tried,
But what ever I do can not compile cause compiler gives me trouble with line delay (delay / 1000) ;
What am I doing wrong?
#include "options.h"
float ratio = CHANGE_FREQUENCY_MAX_SEC / 1023.0;
void setup() {
pinMode(PIN_PWM_COIL_1, OUTPUT);
pinMode(PIN_PWM_COIL_2, OUTPUT);
pinMode(PIN_DIR_MOTOR, OUTPUT);
pinMode(PIN_START_STOP, INPUT_PULLUP);
digitalWrite(PIN_DIR_MOTOR, HIGH);
digitalWrite(PIN_PWM_COIL_1, HIGH);
digitalWrite(PIN_PWM_COIL_2, LOW);
}
void loop() {
float voltage = 0;
long steps;
long pwm_half_period;
unsigned long change_freq_time = 0;
unsigned long value_steps = 0;
unsigned int stop_freq = 0;
if (digitalRead(PIN_START_STOP)) {
return;
}
void my_delay_micros (unsigned long delay)
delay (delay / 1000) ;
delayMicroseconds (delay % 1000) ;
}
steps = (FREQUENCY_STOP_HZ - FREQUENCY_START_HZ) / FREQUENCY_STEP_HZ;
if (FREQUENCY_STOP_HZ < FREQUENCY_START_HZ ) {
return;
}
// If max number is reached we do nothing error in seetings
if (steps > FREQUENCY_MAX_CHANGES) {
return;
}
value_steps = analogRead(PIN_POTENTIONMETER_IN) * ratio + CHANGE_FREQUENCY_MIN_SEC;
value_steps *= 1000000L;
pwm_half_period = 500000L / FREQUENCY_START_HZ ;
change_freq_time = 0;
while(!digitalRead(PIN_START_STOP)) {
digitalWrite(PIN_PWM_COIL_1, LOW);
digitalWrite(PIN_PWM_COIL_2, HIGH);
my_delay_micros(pwm_half_period);
digitalWrite(PIN_PWM_COIL_1, HIGH);
digitalWrite(PIN_PWM_COIL_2, LOW);
my_delay_micros(pwm_half_period);
change_freq_time++;
if(value_steps == change_freq_time) {
change_freq_time = 0;
pwm_half_period += 500000L / FREQUENCY_STEP_HZ;
stop_freq = 1000000L / FREQUENCY_STOP_HZ;
if(FREQUENCY_STOP_HZ == (2 * pwm_half_period)) {
break;
}
}
}
}