mich29800

chenillard

Nov 24th, 2020 (edited)
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //MichCol 2019
  2. // SCL : A5   ; SDA : A4
  3.  
  4. #include <Adafruit_NeoPixel.h>
  5. #define PIN 3                     // sortie commande strip en D3
  6. unsigned long regorg=0x01010101;  // déclartion et affectation au registre origine
  7. unsigned long regA;               // déclaration des registres a,b et (qui for)
  8. unsigned long regB;               // qui forment un registre à déclage de 96 bits, dont 70 utilisés
  9. unsigned long regC;
  10. unsigned long periode;
  11. unsigned long freq;
  12. boolean bitregA;
  13. boolean bitregB;
  14. boolean bitregC;
  15. boolean bitval=1;
  16. unsigned long couleur;    // couleur avant
  17. byte ligne=0;     // longueur du filet (1 à 7)
  18. byte lumino=10;   // luminosité couleur avant
  19. byte nbleds=70;   // nombre de leds
  20. byte sens=0;      // sens de défilement
  21. byte vit=30;      // période de défilement
  22. byte sortie;
  23. Adafruit_NeoPixel strip = Adafruit_NeoPixel(nbleds, PIN, NEO_GRB + NEO_KHZ800);
  24.  
  25. void setup() {
  26.  
  27.   Serial.begin(9600);
  28.  
  29.  
  30.   strip.begin();
  31.   strip.show(); // Initialise toute les led à 'off'
  32.   regA=regorg;
  33.   regB=regorg;
  34.   regC=regorg;
  35.  
  36. }
  37.  
  38. void loop() {
  39.  if (millis()-periode >vit)
  40.   {
  41.   for(int i = 0 ; i < nbleds; i++)
  42.   {
  43.  
  44.     // test valeur bit (bitval) correspondant du registre à décalage
  45.     // en fonction de la valeur de i
  46.    
  47.     if (i<6){bitval=bitRead(regA,5-i);}
  48.     if ((i>5)&&(i<38)){bitval=bitRead(regB,37-i);}
  49.     if ((i>37)&&(i<70)){bitval=bitRead(regC,69-i);}
  50.     couleur=strip.ColorHSV((65535/nbleds)*i,255,lumino);
  51.    
  52.     // si bitval = 1, couleur est affectée à la led courante
  53.     // sinon couleur de fond (bleu clair)
  54.    
  55.     if (bitval==1){strip.setPixelColor(i, couleur);}
  56.     else {strip.setPixelColor(i,0,0,1);}
  57.   }
  58.     strip.show();
  59.     // si sens = 0, décalage droite
  60.    
  61.     if (sens==0)
  62.     {bitregA=bitRead(regA,0);bitregB=bitRead(regB,0);bitregC=bitRead(regC,0);
  63.     regA=regA>>1;regB=regB>>1;regC=regC>>1;
  64.     bitWrite(regA,7,bitregC);bitWrite(regB,31,bitregA);bitWrite(regC,31,bitregB);}
  65.     // si sens = 1 décalage gauche
  66.    
  67.     if (sens==1)
  68.     {bitregA=bitRead(regA,7);bitregB=bitRead(regB,31);bitregC=bitRead(regC,31);
  69.     regA=regA<<1;regB=regB<<1;regC=regC<<1;
  70.     bitWrite(regA,0,bitregB);bitWrite(regB,0,bitregC);bitWrite(regC,0,bitregA);}
  71.  
  72.     periode=millis();
  73.   }
  74.   // définit la période de modif du filet
  75.   if (millis()-freq>vit*69){
  76.   if (ligne<7){regorg=(regorg<<1)|0x01010101;regA=regorg;regB=regorg;regC=regorg;ligne++;vit=vit+5;}
  77.   if (ligne==7){regorg=0x01010101;regA=regorg;regB=regorg;regC=regorg;ligne=0;sens=!sens;vit=30;}
  78.   freq=millis();}
  79.  
  80.  
  81.  
  82.  
  83. }
Add Comment
Please, Sign In to add comment