Buonasera a tutti, so che a Natale manca ancora molto ma sto ampliando la centralina fatta con arduino per il mio presepio con motori passo passo e servo per fare movimenti e sostituendo le strisce led con i led neopixel. sto incontrando alcune difficoltà per inserire le subroutine nel loop. prima mi esegue la subroutine e poi si accendono i neopixel.
Per esempio ho creato un for infinito per la ruota del mulino che dovrebbe girare tutto il giorno ma la ruota gira ma le luci non si accendono. Ho provato ad inserirle prima dell'if sia nell'if ma il risultato è lo stesso.
Per i lampioni vorrei invece che funzionassero solo nella fase mezzanotte.
ma anche là (togliendo la subroutine mulino) prima lampeggiano 200 volte poi partono le luci
Dove devo inserirle?
Sono partito come base la vecchia centralina con un contatore per ogni fase (curr) e un curr ++ fuori dall'if. considerate che senza subroutine dichiarate nel loop la centralina funziona.
grazie
mulino();
if ( curr == 0 ) {
Serial.print("Fase: "); Serial.println("mezzanotte");
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, notte); // imposti il colore del LED numero 'i'
}
strip.show(); // invii tutti i dati alla LED-st
tremolio();
delay (14335);
}
//alba.....................................................................
if ( curr == 1 ) {
Serial.print("Fase: "); Serial.println("alba");
//arancio
for(uint16_t i=0; i<5; i++) {
strip.setPixelColor(i, arancio); // imposti il colore del LED numero 'i'
}
strip.show(); // invii tutti i dati alla LED-strip
delay (500);
}
if ( curr == 2) {
Serial.print("Fase: "); Serial.println("alba");
for(uint16_t i=0; i<10; i++) {
strip.setPixelColor(i, arancio); // imposti il colore del LED numero 'i'
}
strip.show(); // invii tutti i dati alla LED-strip
delay (500);
.......
.........
........
curr ++;
} //fine loop
void lampioni (){ //lampeggio lampioni
for (int j=0; j<2000; j++){
valoreX=random(10,255);
analogWrite(lampioni,valoreX);
delay(50);//attendi 50 millisecondi
}
}
void mulino (){
for (int k=0; k<2000; k++){
digitalWrite(motorPin1, LOW); //ROTAZIONE ORARIA
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
}