Variar velocidad

hola
he intentado cambiar la velocidad de este programa con potenciometro de 10k
intente con funcion delay que toma el valor segun el potenciometro Pero solo lee el valor inicial(cuando inicia el programa) luego giro el potenciometro y no cambia la velocidad
El codigo lo he dejado asi con velocidad definida
ya que el potencionemtro se hace el dificil :sob:
(el potenciometro esta definido en el pin A0 )
se podra hacer con potenciometro?

void inOutAll(void){聽 // Fundido en todas las salidas led a la vez
聽 unsigned char brightness;
聽 unsigned long fadeTime = 2000;
聽 unsigned long time = millis()-startTime;
聽 unsigned long currentStep = time%(fadeTime*2);

聽 if(currentStep <= fadeTime ){
聽 聽 brightness = currentStep*maxBrightness/fadeTime; // fundido
聽 }
聽 else{
聽 聽 brightness = maxBrightness-(currentStep-fadeTime)*maxBrightness/fadeTime; ///dezvanecimiento;
聽 }

dices que quieres hacer con un potenci贸metro que el c贸digo vaya m谩s r谩pido?
no entiendo la verdad

Eduardosanchez:
dices que quieres hacer con un potenci贸metro que el c贸digo vaya m谩s r谩pido?
no entiendo la verdad

el programa baja el sube el brillo de leds
y lo que quiero es controlar la velocidad con que sube y baja el brillo de los leds con potenciometro

Si supones que esa parte del c贸digo es el problema y claramente no o esta asociado con algo que no ves, pues nosostros no podemos aconsejarte por no disponer de todo el c贸digo.

Asi que postea el c贸digo completo!!

As铆 como dice Surbyte, necesitamos todo el c贸digo, aqu铆 el principal problema es que no sabemos c贸mo haces que vaya aumentando o disminuyendo el brillo de los leds, si es un pwm a la entrada de un transistor o es un controlador, no se se me ocurren varias cosas.
pero a mi se me ocurre poner dos for, uno para aumentar el brillo y otro para disminuir, se har铆a el aumento con un pwm, y dentro de cada uno de los for una funci贸n de retardo para hacer lo que dices aumentar o disminuir el tiempo.
Saludos.

ahi esta el codigo completo

como ya mencione en el post intente hacerlo con delay pero solo lee el 1er valor y recien cambiar cuando se resetea
:confused: :sob:

const int ShiftPWM_latchPin=8;

// ** elimine el comentario de esta parte para NO usar el puerto SPI y cambie los n煤meros de pin. Esto es 2.5 veces m谩s lento **
// #define SHIFTPWM_NOSPI
 const int ShiftPWM_dataPin = 11;
 const int ShiftPWM_clockPin = 13;


// Si los LED se encienden si el pin es bajo, config煤relo en verdadero; de lo contrario, config煤relo en falso.
const bool ShiftPWM_invertOutputs = true;


const bool ShiftPWM_balanceLoad = false;
#define SHIFTPWM_USE_TIMER2
#include <ShiftPWM.h>聽 
//pulsadores
const int puls1 = 2;
const int puls2 = 3;


// Prototipos de funciones (dici茅ndole al compilador que estas funciones existen).
void oneByOne(void);
void inOutTwoLeds(void);
void inOutAll(void);


// Aqu铆 establece el n煤mero de niveles de brillo, la frecuencia de actualizaci贸n y el n煤mero de registros de desplazamiento.

unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 75;
unsigned int numRegisters = 3;
unsigned int numOutputs = numRegisters*8;
unsigned int numRGBLeds = numRegisters*8/3;
unsigned int fadingMode = 1; //start with all LED's off.

unsigned long startTime = 0; // start time for the chosen fading mode

void setup(){
聽 while(!Serial){
聽 聽 delay(100); 
聽 }
聽 Serial.begin(9600);

pinMode(puls1, INPUT);
pinMode(puls2, INPUT);
聽 
// Establece el n煤mero de registros de 8 bits que se utilizan.
聽 ShiftPWM.SetAmountOfRegisters(numRegisters);
聽 
// SetPinGrouping permite flexibilidad en la configuraci贸n del LED.
聽 // Si sus LED est谩n conectados as铆: RRRRGGGGBBBBRRRRGGGGBBBB, use SetPinGrouping (4).
聽 ShiftPWM.SetPinGrouping(1); //This is the default, but I added here to demonstrate how to use the funtion
聽 
聽 ShiftPWM.Start(pwmFrequency,maxBrightness);
聽 printInstructions();
}

void loop()
{聽 聽 
聽 
valor = analogRead(A0);
 if (digitalRead(puls1) == HIGH) {
聽 delay(500);
聽 聽 聽 fadingMode=fadingMode+1;
聽 聽 聽 
聽 }
 if (digitalRead(puls2) == HIGH) {
聽  delay(500);
聽 聽 聽 fadingMode=fadingMode-1;
聽 聽  
聽 }
聽 if(fadingMode>4){
聽 聽 fadingMode=1;
聽 }
聽 if(fadingMode<1){
聽 聽 fadingMode=3;
聽 }
聽 Serial.println(fadingMode);
聽 switch(fadingMode){
聽 case 0:
聽 聽 // Turn all LED's off.
聽 聽 ShiftPWM.SetAll(0);
聽 聽 break;
聽 case 1:
聽 聽 oneByOne();
聽 聽 break;
聽 case 2:
聽 聽 inOutAll();
聽 聽 break;
聽 case 3:
聽 聽 inOutTwoLeds();
聽 聽 break;
聽 case 4:
聽 聽 
聽 聽 break;
聽 case 5:
聽  
聽 聽 break;
聽 case 6:
聽 聽 
聽 聽 break;
聽 case 7:
聽 聽 
聽 聽 break;
聽 case 8:
聽 聽 
聽 聽 break;
聽 case 9:
聽 聽 聽  
聽 聽 break;聽  
聽 default:
聽 聽 Serial.println("Unknown Mode!");
聽 聽 delay(1000);
聽 聽 break;
聽 }
}

void oneByOne(void){ // Funde y desvaneze todas las salidas de a una por vez
聽 unsigned char brightness;
聽 unsigned long fadeTime = 500;
聽 unsigned long loopTime = numOutputs*fadeTime*2;
聽 unsigned long time = millis()-startTime;
聽 unsigned long timer = time%loopTime;
聽 unsigned long currentStep = timer%(fadeTime*2);

聽 int activeLED = timer/(fadeTime*2);

聽 if(currentStep <= fadeTime ){
聽 聽 brightness = currentStep*maxBrightness/fadeTime; ///fading in
聽 }
聽 else{
聽 聽 brightness = maxBrightness-(currentStep-fadeTime)*maxBrightness/fadeTime; ///fading out;
聽 }
聽 ShiftPWM.SetAll(0);
聽 ShiftPWM.SetOne(activeLED, brightness);
}

void inOutTwoLeds(void){ // Fundido de entrada y salida de 2 salidas a la vez
聽 unsigned long fadeTime = 500;
聽 unsigned long loopTime = numOutputs*fadeTime;
聽 unsigned long time = millis()-startTime;
聽 unsigned long timer = time%loopTime;
聽 unsigned long currentStep = timer%fadeTime;

聽 int activeLED = timer/fadeTime;
聽 unsigned char brightness = currentStep*maxBrightness/fadeTime;

聽 ShiftPWM.SetAll(0);
聽 ShiftPWM.SetOne((activeLED+1)%numOutputs,brightness);
聽 ShiftPWM.SetOne(activeLED,maxBrightness-brightness);
}

void inOutAll(void){聽 // Fundido en todas las salidas a la vez
聽 unsigned char brightness;
聽 unsigned long fadeTime = 2000;
聽 unsigned long time = millis()-startTime;
聽 unsigned long currentStep = time%(fadeTime*2);

聽 if(currentStep <= fadeTime ){
聽 聽 brightness = currentStep*maxBrightness/fadeTime; ///fading in
聽 }
聽 else{
聽 聽 brightness = maxBrightness-(currentStep-fadeTime)*maxBrightness/fadeTime; ///fading out;
聽 }
聽 ShiftPWM.SetAll(brightness);
}

Cual es el valor que quieres cambiar con el potenci贸metro?

Este500:
ahi esta el codigo completo

como ya mencione en el post intente hacerlo con delay pero solo lee el 1er valor y recien cambiar cuando se resetea

no se pero yo haria esto

void setup() {
 // iniciar lo que tengas que iniciar

}

void loop() {
int val_pot= analogRead(potenciometro);//leyendo el voltaje en el pin analogico del potenciometro(obteniendo tiempo)
 for(int i =0;i<255;i++){//aumentar brillo
   analogWrite(leds,i);
   funcion_retardo(val_pot/10);//tratamiento matem谩tico retardo
   }
 for(int i =255;i>255;i--){//disminuir brillo
   analogWrite(leds,i);
   funcion_retardo(val_pot/10);//tratamiento matem谩tico retardo
   }
}

yo asumo que puedes tener el valor de la la lectura del potenci贸metro de 1024 valores, dividido en 10 puedes hacer una funcion que haga retardos en milisegundos , es decir el marimo retardo seria 102mS*255=26010mS, es decir 26 segundos tardar铆a en alcanzar el m谩ximo brillo, puedes cambiar el pwm a que suba de dos en dos y tardar铆a solo 13 segundos, no se si me explico y si es lo que necesitas.
Saludos.

analogRead(potenciometro);

Que hace esto @Eduardosanchez?

perd贸n le falto un peque帽o comentario, eso solo serviria para leer el "voltaje" el potenci贸metro y establecer la constante de tiempo a la que incrementa o decrementa el pwm.
Saludos.

Veo que no entendiste mi pregunta!

int valor = analogRead(potenciometro);

Ese es el modo correcto.