Problema sketch per accensione 8 led in sequenza "Knight Rider", in dissolvenza
salve tutti.
ho una board arduino uno e vorrei usare 8 led (invece che 6) per ricreare l'effetto luce scia "knight rider" . ho già visto che, sia sul web che nel forum arduino, si trovano vari sketch ma ho preso come riferimento quello del video del link seguente (a mio avviso il migliore come risultato finale, che però utilizza soltanto 6 led) e l'ho provato modificare per aggiungere altri 2 led, uno al pin 12 e l'altro al 13.
il risultato finale è che non riesco purtroppo ad ottenere l'effetto di dissolvenza sperato per 2 led che ho aggiunto, seppure la sequenza di accensione sinistra-destra e viceversa vada bene per tutti gli 8 led.
non bravo in programmazione, potreste aiutarmi per favore correggere il codice?
grazie per il vostro aiuto.
http://www.practicalmaker.com/arduino/arduino-enhanced-knight-rider
questo è il codice che ho modificato:
ho una board arduino uno e vorrei usare 8 led (invece che 6) per ricreare l'effetto luce scia "knight rider" . ho già visto che, sia sul web che nel forum arduino, si trovano vari sketch ma ho preso come riferimento quello del video del link seguente (a mio avviso il migliore come risultato finale, che però utilizza soltanto 6 led) e l'ho provato modificare per aggiungere altri 2 led, uno al pin 12 e l'altro al 13.
il risultato finale è che non riesco purtroppo ad ottenere l'effetto di dissolvenza sperato per 2 led che ho aggiunto, seppure la sequenza di accensione sinistra-destra e viceversa vada bene per tutti gli 8 led.
non bravo in programmazione, potreste aiutarmi per favore correggere il codice?
grazie per il vostro aiuto.
http://www.practicalmaker.com/arduino/arduino-enhanced-knight-rider
questo è il codice che ho modificato:
code: [select]
//set pin numbers have leds hooked to
int ledpin[] ={
3,5,6,9,10,11,12,13};
int n = 0;
int =0;
//dp sets active pin going right left
int dp = 1;
int value[] = {
0,0,0,0,0,0,0,0};
//active pin 0-5 used in ledpin array
int ap=0;
int q = 0;
//set number of pins have connected
int pins = 8;
int maxpin = (pins-1)+pins;
//intsteps how many steps between slower has more
//leds on , faster has less
int intsteps = 30;
int steps = pins*intsteps*2;
// max pwm output. can go 255
int maxpwm = 150;
// delaytime between cycles
int delaytime = 5;
void setup()
{
serial.begin(9600);
}
void loop()
{
//active pin.. int doesn't store decimals.. bit ugly
int(ap) = n/intsteps;
//if cycles greater steps restart
if(n >= steps){
n=0;
}
//reset 1 rtl
if(dp > maxpin){
dp=1;
}
//reset q after rtl done
if(q >= intsteps){
q=0;
}
/*
this fun part.. took me forever working right.
from 0 5 set active pin in array ledpin[0]
100
after 6 iteration subtract can go rtl
ie. activepin 6 dp 1 set pin 5 100
activepin 7 , dp 3 activepin 4
if have better way let me know
*/
if(ap >= 0 && ap <= (pins-1)){
value[ap] = maxpwm;
}
else if(ap >= pins && ap <=maxpin){
value[ap-dp] = maxpwm;
q++;
if(q==intsteps){
dp+=2;
}
}
//fade pins
(i = 0; <=(pins-1); i++)
{
if(value[i] >= 5){
value[i]-=2;
}
else if (value[i] < 5) {
value[i]=0;
}
}
//write pins
(i = 0; <=(pins-1); i++)
{
analogwrite(ledpin[i], value [i]);
}
n+=1; // time stepper. tweak @ own risk.
delay(delaytime); //speed modifier. tweak @ own risk!
}
non è possibile perché la uno non ha sufficienti pin per la modalità pwm.
passando alla leonardo avresti un pin in più. da 6 7. ma otto non arrivi.
non è un problema software ma hardware.
l'arduino mega ha 15 pin pwm.
passando alla leonardo avresti un pin in più. da 6 7. ma otto non arrivi.
non è un problema software ma hardware.
l'arduino mega ha 15 pin pwm.

Arduino Forum > International > Italiano > Software (Moderator: leo72) > Problema sketch per accensione 8 led in sequenza "Knight Rider", in dissolvenza
arduino
Comments
Post a Comment