#define led1 13
#define led2 12
unsigned int dly556, dly278, dly472, dly944;
unsigned int Pot, var;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.begin(9600); // solo para ver los datos en el monitor serie
}
// the loop routine runs over and over again forever:
// 10 rpm
//1
void loop() {
Pot = analogRead(A0); // convierto a Voltios valor de A0 que va de 0 a 1023
Serial.println(Pot);
var = map(Pot, 0, 1023, 1, 100); //Convierto 0-1023 a 0-100 rpm x lo tanto 102 cuentas son 10 readSqwPinMode
// no pongo 0 rpm porque daría una división por 0 y eso es error en Arduino.
dly278 = 27800/var;
dly556 = dly278*2;
dly472 = 47200/var;
dly944 = dly472*2;
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly472);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
delayMicroseconds(dly472);
// 2
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly944);
//3
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly944);
//4
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly472);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delayMicroseconds(dly472);
//5
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly944);
//6
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly278);
digitalWrite(led1, HIGH);
delayMicroseconds(dly556);
digitalWrite(led1, LOW);
delayMicroseconds(dly944);
}
A ver como va.
Repito, el potenciómetro va de 0 a 1023 cuentas.
Supuse que tu potenciómetro regula de 0 a 100 RPM para 1023 pasos.
Si 10 RPM te dan 2780 useg y 4720 useg que son los dos patrones repetidos, los otros dos son multiplos de éstos.
Entonces paa 1 RPM tendremos 27800 useg y 47200 useg.
El resto surge como cociente de estos valores x la velocidad que diga el potenciómetro.
Lo único no muy bonito desde la programación es que se lee el potenciómetro, se hace toda una secuencia y si modificas el potenciómetro no lo sabremos hasta el próximo ciclo.