Hi
Trying to get Variable frequency, constant duty cycle output from the arduino
I have a 0-5 v signal in and a center point at 2.5v That's 0
I like to send a 0 -8000 hz signal out vhen it is below or above center point
This is for controlling a motorcontroller I have. The motorcontroller requires a 0 - 8000hz signal and a bit defining direction.
The code I have tried with
#include <PWM.h>
int outputPin1 = 2;
int dutyCycleInput = 64500; //1-65535 Pulse with 0-100%
int DbH = 510;
int DbL = 480;
void setup()
{
InitTimersSafe();
Serial.begin(9600);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}
void loop()
{
//reading of analog input and computing of frequency out
int sensorReading = analogRead(A0);
int freqInput1 = map(sensorReading, DbH, 1023, 0, 8000);
int freqInput2 = map(sensorReading, DbL, 0, 0, 8000);
freqInput1 = constrain(freqInput1, 0, 8000);
freqInput2 = constrain(freqInput2, 0, 8000);
int freqInput = (freqInput1 + freqInput2);
//thruster rotation bits
if (sensorReading > DbH)
{ digitalWrite(2, HIGH);}
else {digitalWrite(2, LOW);}
if (sensorReading < DbL)
{digitalWrite(3, HIGH);}
else {digitalWrite(3, LOW);}
//serial out for debug
Serial.print("In: ");
Serial.print(sensorReading);
Serial.print(" Out1: ");
Serial.print(freqInput1);
Serial.print(" Out2: ");
Serial.print(freqInput2);
Serial.print(" Out ");
Serial.print(freqInput);
Serial.println(" hz");
//pwm output
SetPinFrequencySafe(outputPin1, freqInput );
pwmWriteHR(outputPin1, dutyCycleInput );
}