veilleuse.ino 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // Based on Adafruit Neopixel 'simple' sample
  2. #include <Adafruit_NeoPixel.h>
  3. // Config Leds
  4. #define PIN 2
  5. #define NUMPIXELS 8
  6. // Config Photoresistance
  7. #define LIGHT_SENSOR A0
  8. // Config couleur
  9. #define R 255
  10. #define G 128
  11. #define B 56
  12. // Config seuil
  13. #define ON_LEVEL 50
  14. #define OFF_LEVEL 100
  15. Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
  16. void lightBoot(int r, int g, int n, int b)
  17. {
  18. if ((b < 0) || (b > 255)) {
  19. return false;
  20. }
  21. int red = floor((r * b) / 100);
  22. int green = floor((g * b) / 100);
  23. int blue = floor((b * b) / 100);
  24. pixels.clear();
  25. for (int i = 0; i < NUMPIXELS; i++) { // For each pixel...
  26. pixels.setPixelColor(i, pixels.Color(red, green, blue));
  27. }
  28. pixels.show(); // Send the updated pixel colors to the hardware.
  29. }
  30. void lightLevel(int b)
  31. {
  32. if ((b < 0) || (b > 255)) {
  33. return false;
  34. }
  35. int red = floor((R * b) / 100);
  36. int green = floor((G * b) / 100);
  37. int blue = floor((B * b) / 100);
  38. pixels.clear();
  39. for (int i = 0; i < NUMPIXELS; i++) { // For each pixel...
  40. pixels.setPixelColor(i, pixels.Color(red, green, blue));
  41. }
  42. pixels.show(); // Send the updated pixel colors to the hardware.
  43. }
  44. void lightFadeIn(int d) {
  45. pixels.clear();
  46. pixels.show();
  47. for (int i = 0; i < 100; i ++) {
  48. lightLevel(i);
  49. delay(d);
  50. }
  51. }
  52. void lightFadeOut(int d) {
  53. pixels.clear();
  54. pixels.show();
  55. for (int i = 100; i >= 0; i --) {
  56. lightLevel(i);
  57. delay(d);
  58. }
  59. }
  60. void setup() {
  61. int i;
  62. Serial.begin(9600);
  63. Serial.println("Booting");
  64. pixels.begin();
  65. pixels.clear();
  66. pixels.show();
  67. for (int i = 0; i <=100; i ++) {
  68. lightBoot(255,0,0,i);
  69. delay(10);
  70. }
  71. delay(1000);
  72. pixels.clear();
  73. pixels.show();
  74. for (int i = 100; i >= 0; i --) {
  75. lightBoot(255,0,0,i);
  76. delay(10);
  77. }
  78. Serial.println("Ready !");
  79. }
  80. int state = 0;
  81. void loop() {
  82. int valeur = analogRead(A0);
  83. Serial.println(valeur);
  84. if ((valeur > OFF_LEVEL) && (state == 1)) {
  85. Serial.print("Switching OFF : val=");
  86. Serial.println(valeur);
  87. lightFadeOut(50);
  88. state = 0;
  89. }
  90. if ((valeur < ON_LEVEL) && (state == 0)) {
  91. Serial.print("Switching ON : val=");
  92. Serial.println(valeur);
  93. lightFadeIn(50);
  94. state = 1;
  95. }
  96. delay(1000);
  97. }