/* Ruleta con delay, y
* con pulsador para pararla
*/
// Intervalo de conmutación inicial (milisegundos)
long intervalo = 100;
//Primer Pin para conectar los led
int i=2;
int pulsador=12;
int pito=13;
void setup() {
//Configuro consola
Serial.begin(9600);
//Configuro pines del 2 al 6 como salidas
for (int i=2; i<7; i++) pinMode (i,OUTPUT);
//Configuro pin 12 como entrada
pinMode (pulsador,INPUT);
//Configuro pin 13 como salida
pinMode (pito,OUTPUT);
//inicializa randon
randomSeed(millis());
}
void loop() {
digitalWrite(i,HIGH);
if (digitalRead (pulsador)==LOW){
delay (intervalo);
digitalWrite(i+1,HIGH);
digitalWrite(i,LOW);
i++;
//Para que i varié solo de 2 a 6
if(i>=7) i=2;
}
//intervalo aleatorio entre 10 y 200
else intervalo=random(10,200);
//Serial.println (intervalo); //Consume muchos recursos
// Evidentemente aquí fallara pues delay condiciona
if (millis()%3000==0)digitalWrite(pito,HIGH);
else digitalWrite(pito,LOW);
} |
/* Ruleta sin utilizar delay
* con pulsador para pararla
*/
// Almacena la última vez que la ruleta fue modificada
long millisPrevio = 0;
// Intervalo conmutación inicial(milisegundos)
int intervalo = 100;
//Primer Pin para conectar los led
int i=2;
int pulsador=12;
int pito=13;
void setup() {
//Configuro consola
Serial.begin(9600);
//Configuro pines del 2 al 6 como salidas
for (int i=2; i<7; i++) pinMode (i,OUTPUT);
//Configuro pin 12 como entrada
pinMode (pulsador,INPUT);
//Configuro pin 13 como salida
pinMode (pito,OUTPUT);
//inicializa randon
randomSeed(millis());
}
void loop() {
if (digitalRead (pulsador)==LOW){
digitalWrite(i,HIGH);
if (millis() - millisPrevio > intervalo) {
millisPrevio = millis();
digitalWrite(i+1,HIGH);
digitalWrite(i,LOW);
i++;
if(i>=7) i=2;
}
}
//intervalo aleatorio entre 10 y 200
else intervalo=random(10,200);
//Cada 3 segundos pita, con delay no funcionaria
if (millis()%3000==0)digitalWrite(pito,HIGH);
else digitalWrite(13,LOW);
// Serial.println (millis());//consume muchos recursos
} |