Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //MichCol 2019
- // SCL : A5 ; SDA : A4
- #include <Adafruit_NeoPixel.h>
- #define PIN 3 // sortie commande strip en D3
- unsigned long regorg=0x01010101; // déclartion et affectation au registre origine
- unsigned long regA; // déclaration des registres a,b et (qui for)
- unsigned long regB; // qui forment un registre à déclage de 96 bits, dont 70 utilisés
- unsigned long regC;
- unsigned long periode;
- unsigned long freq;
- boolean bitregA;
- boolean bitregB;
- boolean bitregC;
- boolean bitval=1;
- unsigned long couleur; // couleur avant
- byte ligne=0; // longueur du filet (1 à 7)
- byte lumino=10; // luminosité couleur avant
- byte nbleds=70; // nombre de leds
- byte sens=0; // sens de défilement
- byte vit=30; // période de défilement
- byte sortie;
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(nbleds, PIN, NEO_GRB + NEO_KHZ800);
- void setup() {
- Serial.begin(9600);
- strip.begin();
- strip.show(); // Initialise toute les led à 'off'
- regA=regorg;
- regB=regorg;
- regC=regorg;
- }
- void loop() {
- if (millis()-periode >vit)
- {
- for(int i = 0 ; i < nbleds; i++)
- {
- // test valeur bit (bitval) correspondant du registre à décalage
- // en fonction de la valeur de i
- if (i<6){bitval=bitRead(regA,5-i);}
- if ((i>5)&&(i<38)){bitval=bitRead(regB,37-i);}
- if ((i>37)&&(i<70)){bitval=bitRead(regC,69-i);}
- couleur=strip.ColorHSV((65535/nbleds)*i,255,lumino);
- // si bitval = 1, couleur est affectée à la led courante
- // sinon couleur de fond (bleu clair)
- if (bitval==1){strip.setPixelColor(i, couleur);}
- else {strip.setPixelColor(i,0,0,1);}
- }
- strip.show();
- // si sens = 0, décalage droite
- if (sens==0)
- {bitregA=bitRead(regA,0);bitregB=bitRead(regB,0);bitregC=bitRead(regC,0);
- regA=regA>>1;regB=regB>>1;regC=regC>>1;
- bitWrite(regA,7,bitregC);bitWrite(regB,31,bitregA);bitWrite(regC,31,bitregB);}
- // si sens = 1 décalage gauche
- if (sens==1)
- {bitregA=bitRead(regA,7);bitregB=bitRead(regB,31);bitregC=bitRead(regC,31);
- regA=regA<<1;regB=regB<<1;regC=regC<<1;
- bitWrite(regA,0,bitregB);bitWrite(regB,0,bitregC);bitWrite(regC,0,bitregA);}
- periode=millis();
- }
- // définit la période de modif du filet
- if (millis()-freq>vit*69){
- if (ligne<7){regorg=(regorg<<1)|0x01010101;regA=regorg;regB=regorg;regC=regorg;ligne++;vit=vit+5;}
- if (ligne==7){regorg=0x01010101;regA=regorg;regB=regorg;regC=regorg;ligne=0;sens=!sens;vit=30;}
- freq=millis();}
- }
Add Comment
Please, Sign In to add comment