Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

LED-Matrix + Bewegungssensor-Türanzeige [Arduino Holiday]

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Arduino Nano R3
× 1
PIR-Bewegungssensor (generisch)
× 1
Relais (generisch)
× 1
Jumper (generisch)
× 1
PC-Netzteil-Netzkabel
× 1
RGB-LED-Streifen
× 1
8x8 Neopixel-Panel
× 3

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Abisolierzange

Über dieses Projekt

Dieses Projekt kombiniert 3 WS2812B 8x8 RGB-LED-Matrizen und einen PIR-Bewegungssensor, um Besucher mit einem Text mit der Aufschrift "Frohe Feiertage und ein glückliches neues Jahr!" zu begrüßen. wenn sie nahe genug an der Tür sind und eine Reihe von Effekten wie ein Bildschirmschoner auf Monitoren anzeigen, wenn der Sensor niemanden in der Nähe erkennt.

Es wird von einem Arduino UNO gesteuert und von einem 5V 30a Netzteil gespeist.

Ich habe 3 Sätze von Codes kitbashed oder kombiniert.

Die aus der FastLED-Bibliothek DemoReel100 Beispiel für die Idle/Standby-Effekte.

Der PIR-Bewegungssensorcode

Und der Setup-Code für das Neopixel, denke ich. Ich bin mir nicht mehr ganz sicher, tbh, da das vor fast einem Monat war, als ich die Codes zusammengemischt habe.

Ich habe auch einen anderen PIR-Bewegungssensor verwendet, der über ein Verlängerungskabel mit einem 5V-Relais mit einem 12V-RGB-LED-String verbunden ist und von einem Arduino Nano gesteuert wird.

Der LED-String wird zusammen mit der Weihnachtsbeleuchtung, die auch an das Verlängerungskabel angeschlossen ist, aktiviert, wenn der 1. PIR-Sensor eine Bewegung erkennt. Es befindet sich an der Decke in der Nähe der 1. Stufe der Treppe.

Nach ein paar Schritten nach oben weist der 2. PIR-Sensor die UNO an, die Textanzeige auf den Matrizen anzuzeigen, wenn sich jemand nahe genug an der Tür befindet.

************************************************* ****************************

Social Media Links zum Folgen (ich meine, wenn Sie möchten):

Facebook - https://fb.me/HeathenHacks

Twitter – https://twitter.com/HeathenHacks

Instagram - https://instagr.am/HeathenHacks

************************************************* ****************************

Code

  • Arduino Urlaub
Arduino UrlaubArduino
#include FASTLED_USING_NAMESPACE#include #include #include #ifndef PSTR#define PSTR // Arduino Due glücklich machen#endif#define PIN 6 //#if define(FASTLED_VERSION) &&(FASTLED_VERSION <3001000)//#warning "Erfordert FastLED 3.1 oder höher; überprüfen Sie github auf den neuesten Code."//#endif#define DATA_PIN 6#define LED_TYPE WS2811#define COLOR_ORDER GRB#define NUM_LEDS 192CRGB leds[NUM_LEDS];const uint8_t kMatrixWidth =24;const uint8_t kMatrixHeight =8;const bool kMatrixSerpentineLayout =true;#define NUM_LEDS (kMatrixWidth * kMatrixHeight_kNxWMatrixHöhe_kNxWMatrixHöhe_kNxWMatrixHöhe_kNxWMatrixHöhe_kNxWMatrixHöhe ? 50#define FRAMES_PER_SECOND 120// Die 16-Bit-Version unserer Koordinatenstatic uint16_t x;static uint16_t y;static uint16_t z;Adafruit_NeoMatrix matrix =Adafruit_NeoMatrix(24, 8, PIN, NEO_MATRIX_NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_TOP + NEO_MATRIX_RIGHT_KNHCO uin t16_t Farben[] ={ Matrix.Farbe(255, 0, 0), Matrix.Farbe(0, 255, 0), Matrix.Farbe(0, 0, 255), Matrix.Farbe(0, 255, 255), matrix.Color(255, 0, 255), matrix.Color(255, 255, 0), matrix.Color(255, 255, 255)};uint16_t speed =20; // Geschwindigkeit wird dynamisch eingestellt, sobald wir gestartet haben upuint16_t scale =30; // scale wird dynamisch gesetzt, sobald wir gestartet habenuint8_t noise[MAX_DIMENSION][MAX_DIMENSION];CRGBPalette16 currentPalette(PartyColors_p);uint8_t colorLoop =1;int pirSensorPin =5; // Wählen Sie den Eingangspin (für PIR-Sensor)int pirState =true; // wir beginnen, vorausgesetzt, keine Bewegung erkanntint val =0; // Variable zum Lesen des Pinstatusint minimummSecsLowForInactive =5000; // Wenn der Sensor für // länger als diese Zeit Niedrig meldet, dann gehe davon aus, dass keine Aktivität lange unsigned int timeLow;boolean takeLowTime; // die Zeit, die wir dem Sensor zum Kalibrieren geben (10-60 Sek. gemäß Datenblatt)int CalibrationTime =30; Einrichtung ungültig () { Verzögerung (3000); // 3 Sekunden Verzögerung für die Wiederherstellung // Informieren Sie FastLED über die Konfiguration des LED-Streifens FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); //FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); // Master-Helligkeitssteuerung einstellen FastLED.setBrightness (BRIGHTNESS); matrix.setTextWrap(false); matrix.setHelligkeit(40); matrix.setTextColor(colors[0]); pinMode (pirSensorPin, EINGANG); // Sensor als Eingang deklarieren LEDS.addLeds (LEDs, NUM_LEDS); x =zufällig16(); y =zufällig16(); z =random16();}int a =matrix.width();int pass =0;// Liste der Muster, die durchlaufen werden sollen. Jede ist unten als separate Funktion definiert.typedef void (*SimplePatternList[])();SimplePatternList gPatterns ={ rainbow, rainbowWithGlitter, Confetti, Sinelon, jongle, bpm, cylon};uint8_t gCurrentPatternNumber =0; // Indexnummer des Musters currentuint8_t gHue =0; // rotierende "Grundfarbe", die von vielen der Muster verwendet wirdvoid fadeall () { for (int i =0; i =6) pass =0; matrix.setTextColor(Farben[Pass]); } matrix.show(); Verzögerung (100); if (pirState) { // wir haben gerade eingeschaltet pirState =false; } takeLowTime =true; } else { // Rufen Sie die aktuelle Musterfunktion einmal auf und aktualisieren Sie das 'leds'-Array gPatterns[gCurrentPatternNumber](); // Senden Sie das 'LEDs'-Array an den tatsächlichen LED-Streifen FastLED.show (); // eine Verzögerung einfügen, um die Bildrate moderat zu halten FastLED.delay(1000 / FRAMES_PER_SECOND); // einige regelmäßige Updates durchführen EVERY_N_MILLISECONDS( 20 ) { gHue++; // langsam die "Grundfarbe" durch den Regenbogen schalten} EVERY_N_SECONDS( 10 ) { nextPattern(); // Muster regelmäßig ändern } }}#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))void nextPattern(){ // füge eins zur aktuellen Musternummer hinzu und breche an der end gCurrentPatternNumber =(gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);}void rainbow(){ // FastLEDs integrierter Regenbogengenerator fill_rainbow(leds, NUM_LEDS, gHue, 7);}void rainbowWithGlitter(){ // integriert FastLED-Regenbogen, plus ein zufälliger glitzernder Glitzerregenbogen (); addGlitter(80);}void addGlitter(fract8 chanceOfGlitter){ if (random8() =0; i--) {// Setze die i-te LED auf rote LEDs[i] =CHSV(hue++, 255, 255); // Zeigt die LEDs FastLED.show(); // jetzt, wo wir die leds gezeigt haben, setze die i-te led auf schwarz zurück // leds[i] =CRGB::Black; Fadeall(); // Warten Sie ein wenig, bevor wir eine Schleife machen und es erneut tun delay(10); }}

Schaltpläne


Herstellungsprozess

  1. DIY LUMAZOID Arduino Music Visualiser
  2. DHT11-Sensor mit LEDs und einem Piezo-Lautsprecher
  3. MyRiver
  4. Einfacher Hindernissensor mit Arduino
  5. Finde mich
  6. Arduino-Vierbeiner
  7. Bewegungssensor-Wasserpistole
  8. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  9. DIY 10Hz-50kHz Oszilloskop auf 128x64 LCD-Display
  10. Einzelne LED-Matrix-Arduino Flip Clock