buenas tardes compañeros como están soy nuevo en el tema de programación y quisiera saber si me pueden ayudar quiero realizar una señal como la que adjunto
los datos son los siguientes
-
que cuando el potenciometro este en el mínimo me de una frecuencia de 254.79Hz y el periodo sea de 3.92ms
-
cuando el potenciometro este en su punto máximo me de una frecuencia de 684.81Hz y el periodo sea de 1.46ms
ya logre realizar la señal pero tengo dos problemas.
-
quisiera saber si con el mapeo que tengo para la frecuencia puedo variar el tiempo de salida del pin 12
-
invertir la señal ya que me da el pulso largo negativo y lo necesito positivo
de antemano agradezco su valiosa colaboración
adjunto imagen de las conexiones así como esta debe funcionar
const int ledPin = 12; // salida para el pulso alto
int pinPot = A0; // entrada del potenciometro
int pinLed = 9; // salida del pwm
int valorPot;
int parpadeo;
int ledState = LOW;
long previousMillis = 0;
long intervalOn = 4;
long intervalOff = 1000;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(pinLed, OUTPUT);
}
void loop()
{
valorPot = analogRead(pinPot);
parpadeo = map(valorPot, 0, 1023, 647, 1870);
digitalWrite(pinLed, HIGH);
delayMicroseconds(parpadeo);
digitalWrite(pinLed, LOW);
delayMicroseconds(parpadeo);
unsigned long currentMillis = millis();
if (ledState == LOW) {
if(currentMillis - previousMillis > intervalOff) {
previousMillis = currentMillis;
ledState = HIGH;
}
} else {
if(currentMillis - previousMillis > intervalOn) {
previousMillis = currentMillis;
ledState = LOW;
}
}
digitalWrite(ledPin, ledState);
}
[
/code]