Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:arduino_open_close [15/01/2018 19:27]
Mathieu Hery [Fichiers]
projets:arduino_open_close [11/04/2018 11:10]
Mathieu Hery supprimée
Ligne 5: Ligne 5:
  
     An Arduino connects to 2 Pololu Led strips, 12 leds long     An Arduino connects to 2 Pololu Led strips, 12 leds long
-    A switch toggles between which one is lit  +    A switch toggles between which one is lit
-    ​+
  
-    Fallback mode only back and forward+    Fallback mode only rainbow mode
  
-    mh8 - December 2017+    mh8 - February 2018
  
 */ */
Ligne 37: Ligne 36:
  
 //Variable for delays (can go up to 65536 on 2 bytes) //Variable for delays (can go up to 65536 on 2 bytes)
-uint16_t interval = 100;+uint16_t interval = 10;
  
 //Variable defining maximum number of modes. Count starts at 0. //Variable defining maximum number of modes. Count starts at 0.
Ligne 59: Ligne 58:
 void loop() { void loop() {
  
- //In this mode we need to know if we address the OPEN or the CLOSED ledStrip+  ​//In this mode we need to know if we address the OPEN or the CLOSED ledStrip
   int buttonState = digitalRead(buttonPin);​   int buttonState = digitalRead(buttonPin);​
  
-  //Define two random ​colors ​to use in the back and foward movement +  // Update the colors (comes from LedStripRainbow example
-  rgb_color colorOne = rgb_color(random(255), random(255),​ random(255));​ +  ​uint16_t time millis() >> 2
-  ​rgb_color colorTwo ​rgb_color(random(255),​ random(255),​ random(255)); +  for (uint16_t ​i = 0; i < LED_COUNT; i++) 
- +  ​
-  //FORWARD Movement +    ​byte x = (time >> 2(i << 3); 
-  for (uint8_t ​i = 0; i < LED_COUNT; i++) { +    ​colors[i] = hsvToRgb((uint32_t)x * 359 256255255);
-    ​colors[i] ​colorOne; +
-    if (buttonState == 1+
-      // Write to OPEN not to CLOSED +
-      ledStripOpen.write(colors, LED_COUNT);​ +
-      ledStripClosed.write(colorsOff,​ LED_COUNT); +
-    ​+
- +
-    else if (buttonState == 0+
-      ​// Write to CLOSED not to OPEN +
-      ledStripClosed.write(colorsLED_COUNT);​ +
-      ledStripOpen.write(colorsOffLED_COUNT);​ +
-    } +
-    delay(interval);+
   }   }
- 
-  //BACK Movement 
-  for (uint8_t i = LED_COUNT; i > 0; i--) { 
-    colors[i] = colorTwo; 
-    if (buttonState == 1) { 
-      // Write to OPEN not to CLOSED 
-      ledStripOpen.write(colors,​ LED_COUNT); 
-    } 
- 
-    else if (buttonState == 0) { 
-      // Write to CLOSED not to OPEN 
-      ledStripClosed.write(colors,​ LED_COUNT); 
-    } 
-    delay(interval);​ 
-  } 
-} 
- 
-void writetoLeds() { 
-  int buttonState = digitalRead(buttonPin);​ 
  
   if (buttonState == 1) {   if (buttonState == 1) {
-    // Turn ON OPEN led strip turn OFF CLOSED ​led strip +    // Write to OPEN not to CLOSED 
-    ​for (uint8_t i = 0; i < LED_COUNT; ​i++) +    ​ledStripOpen.write(colors, ​LED_COUNT)
-    ​+    ​ledStripClosed.write(colorsOff, LED_COUNT);
-      colorsOpen[i] = colors[i];​ +
-      colorsClosed[i] = colorsOff[i]; +
-    }+
   }   }
  
   else if (buttonState == 0) {   else if (buttonState == 0) {
-    // Turn OFF OPEN led strip turn ON CLOSED led strip +    // Write to CLOSED not to OPEN 
-    ​for (uint8_t i = 0; i < LED_COUNT; ​i++) +    ​ledStripClosed.write(colors, ​LED_COUNT)
-    ​+    ​ledStripOpen.write(colorsOff, LED_COUNT);
-      colorsOpen[i] = colorsOff[i]; +
-      colorsClosed[i] = colors[i];​ +
-    }+
   }   }
 +  delay(interval);​
  
-  // Write to the led strips +}
-  ledStripOpen.write(colorsOpen,​ LED_COUNT);​ +
-  ledStripClosed.write(colorsClosed,​ LED_COUNT);+
  
-  delay(10);+// Comes from LedStripRainbow example 
 +// Converts a color from HSV to RGB. 
 +// h is hue, as a number between 0 and 360. 
 +// s is the saturation, as a number between 0 and 255. 
 +// v is the value, as a number between 0 and 255. 
 +rgb_color hsvToRgb(uint16_t h, uint8_t s, uint8_t v) 
 +
 +  uint8_t f = (h % 60) * 255 / 60; 
 +  uint8_t p = (255 - s) * (uint16_t)v / 255; 
 +  uint8_t q = (255 - f * (uint16_t)s / 255) * (uint16_t)v / 255; 
 +  uint8_t t = (255 - (255 - f) * (uint16_t)s / 255) * (uint16_t)v / 255; 
 +  uint8_t r = 0, g = 0, b = 0; 
 +  switch ((h / 60) % 6) { 
 +    case 0: r = v; g = t; b = p; break; 
 +    case 1: r = q; g = v; b = p; break; 
 +    case 2: r = p; g = v; b = t; break; 
 +    case 3: r = p; g = q; b = v; break; 
 +    case 4: r = t; g = p; b = v; break; 
 +    case 5: r = v; g = p; b = q; break; 
 +  } 
 +  return rgb_color(r,​ g, b);
 } }
 </​code>​ </​code>​