HoluPLEX Heimkino Tisch Umbau, aus alt mach NEU mit Arduino

    • HoluPLEX Heimkino Tisch Umbau, aus alt mach NEU mit Arduino

      Tach,

      ich weiß das Ding ist absolut sinnfrei ,... aber ich hatte bock drauf und wollte endlich mal ein eigenes Arduino Projekt durchführen.

      Mir hat mein uralter Buche Wohnzimmertisch nicht mehr gefallen und ich wollte Heimkinogerecht irgendwas besonderes machen. Somit Tisch geschlachtet, neu lackiert und designt (nach Halo Ring Symbolen), Glasplatte drauf und LED Lichtsteuerung Marke Eigenbau mit Arduino rein.

      Die Entstehung dokumentiere ich hier mal, vielleicht nen Anreiz für andere Projekte.

      Hier ist der neue Tisch :)



      So sieht die Lichtgeschichte aus. Hat 3 Stufen: Immer an, Immer aus, Intervall Einstellbar mit zwei Potis



      So sieht es im HoluPlex aktuell aus:


      Die Symbole stammen aus dem Halo Universum aus dem gleichnamigen Spiel.
      • Tischsymbol ist das Symbol der HALO Installation Nr.4
      • Symbol an der Wand ist die Zahl "0"



      Zum Umbau

      Alter hässlicher Tisch


      Hier setzen wir erstmal die Stichsäge an um das Loch für die Plexiglasplatte vorzubereiten



      Safety first!


      Loch drin


      Neuer Einsatz aus einer 5mm MDF Rohplatte ausgeschnitten und Plexiglasscheibe mit türkisene Folie drunter


      Nun wird es eingelassen und geschliffen




      Grundierung und Lack




      Fertig ist die neue Platte



      Nun wird das Arduino Projekt auf einem Labor Breadboard designt


      Insgesamt hab ich nun 32 LEDs über 4 Schieberegister auf einen Ardunio Nano verbaut.

      Wenn jemand den Arduino Sketch haben will, hier bitte

      Spoiler anzeigen

      /////////////////////////////////////////////////////////
      // Arduino Sketch "LED Lauflicht mit Schieberegsiter //
      // Ersteller: Fireblade2000 @ movie2digital.net //
      /////////////////////////////////////////////////////////
      // Arduino-Pin verbunden mit SH_CP des 74HC595
      int shiftPin = 14; //A0 Nano
      // Arduino-Pin verbunden mit ST_CP des 74HC595
      int storePin = 15; //A1 Nano
      // Arduino-Pin verbunden mit DS des 74HC595
      int dataPin = 16; //A2 Nano
      // Poti für die Zeit Intervall
      int PotIntervallPin = 17; // A3 Nano
      // Poti für die Geschindigkeit
      int PotPin = 18; // A4 Nano
      // Taster zum Programm durchschalten
      int TasterPin = 19; //A5 Nano
      int Taster; // Variable zum Status auslesen
      unsigned long Intervall; //Intervall für Stufe 3
      unsigned long prev; //Zeitvariable
      int Potval = 0;
      int Potintval = 0;
      int OE1 = 3; //D3 Nano
      int OE2 = 4; //D4 Nano
      int OE3 = 5; //D5 Nano
      int NPN = 8; //D8 Nano
      int LEDan = 0;
      int Tasterstatus = 2;
      int LEDLoop = 0;

      void setup() {
      //Schieberegister OutPut Enabled
      // Pins 8,9,10 auf Ausgabe
      pinMode(NPN, OUTPUT);
      digitalWrite(NPN, LOW);
      pinMode(OE1, OUTPUT);
      pinMode(OE2, OUTPUT);
      pinMode(OE3, OUTPUT);
      digitalWrite(OE1, HIGH);
      digitalWrite(OE2, HIGH);
      digitalWrite(OE3, HIGH);
      pinMode(storePin, OUTPUT);
      pinMode(shiftPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      pinMode(TasterPin, INPUT_PULLUP);
      delay(50);

      resetPins(); // Alle Pins auf LOW setzen
      digitalWrite(NPN, HIGH);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000000);
      digitalWrite(storePin, HIGH); //ST_CP
      delay(50);
      //Schieberegister OutPut Enabled
      digitalWrite(OE1, LOW);
      digitalWrite(OE2, LOW);
      digitalWrite(OE3, LOW);
      LEDallean(50);
      }
      void loop () {
      Potval = analogRead(PotPin);
      Potintval = analogRead(PotIntervallPin);
      Intervall = (Potintval*1740L)+60000L;
      //Serial.begin(9600);
      //Serial.println(Potval);
      //Serial.println(Potintval);
      //Serial.println(Intervall);
      Taster = digitalRead(TasterPin);
      delay(25);
      //Serial.begin(9600);
      if(Taster == LOW){
      if (Tasterstatus == 1) {
      LEDallean(50);
      Tasterstatus = 2;
      // Serial.println("Status 1");
      }
      else if (Tasterstatus == 2) {
      LEDalleaus(50);
      Tasterstatus = 3;
      // Serial.println("Status 2");
      }
      else if (Tasterstatus == 3){
      LEDalleblinken(100);
      LEDallean(Potval+1);
      LEDLoop = 1;
      prev = millis();
      Tasterstatus = 4;
      // Serial.println("Status 3");
      }
      else {
      LEDalleaus(50);
      Tasterstatus = 1;
      LEDLoop = 0;
      // Serial.println("Status 4");
      }
      }
      if (LEDLoop == 1) {

      // Serial.println("im Loop");
      // Serial.println(millis());
      if ((millis() - prev) > Intervall)
      {
      prev = millis();

      if(LEDan == 1)
      {
      LEDalleaus(Potval+100);
      }
      else
      {
      LEDallean(Potval+1);
      }
      }
      else
      {
      // Serial.println(Tasterstatus);
      }
      }
      }
      //Reset aller Pins -> LOW-Pegel
      void resetPins(){
      digitalWrite(shiftPin, LOW);
      digitalWrite(dataPin, LOW);
      digitalWrite(storePin, LOW);
      }
      void LEDallean(int delayspeed){

      for (int j = 0; j < 32; j++){
      resetPins(); // Alle Pins auf LOW setzen
      //DS für die spätere Übernahme durch SH_CP auf HIGH setzen
      digitalWrite(dataPin, HIGH); // DS
      delay(20); // Kurze Pause für die Verarbeitung
      // Übertragen des Pegels an DS in interne Speicherregister
      digitalWrite(shiftPin, HIGH); // SH_CP
      delay(20); // Kurze Pause für die Verarbeitung
      // Übertragen der internen Speicherregister an die Ausgänge
      digitalWrite(storePin, HIGH); // ST_CP
      delay(delayspeed);
      }
      LEDan = 1;
      }
      void LEDalleblinken(int delayspeed) {
      sendeBytes(0B11111111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000000);
      delay(delayspeed);
      sendeBytes(0B11111111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000000);
      delay(delayspeed);
      sendeBytes(0B11111111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000000);
      delay(delayspeed);
      }

      void LEDalleaus(int delayspeed) {
      sendeBytes(0B01111111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00111111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00011111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00001111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000111, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000011, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000001, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B11111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B01111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00111111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00011111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00001111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000111, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000011, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000001, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B11111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B01111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00111111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00011111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00001111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000111, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000011, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000001, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B11111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B01111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00111111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00011111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00001111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000111);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000011);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000001);
      delay(delayspeed);
      sendeBytes(0B00000000, 0B00000000, 0B00000000, 0B00000000);
      delay(delayspeed);
      LEDan = 0;

      }
      void sendeBytes(int wert1, int wert2, int wert3, int wert4){
      digitalWrite(storePin, LOW);
      shiftOut(dataPin, shiftPin, MSBFIRST, wert1);
      shiftOut(dataPin, shiftPin, MSBFIRST, wert2);
      shiftOut(dataPin, shiftPin, MSBFIRST, wert3);
      shiftOut(dataPin, shiftPin, MSBFIRST, wert4);
      digitalWrite(storePin, HIGH);
      }



      Nach dem Test und Programmieren nun Auflöten auf die finale Lochplatine.





      Jetzt kommt der LED Untergrund für den Deckel. In Silber damit es unter der Plexiglasplatte besser leuchtet


      Untergrund für die Elektronik


      Geschlossen unlackiert


      Nun fertig mit Arduino


      Untergrund für Deckel fertig



      jetzt kommt die Platte auf den umlackierten Tisch. Die zwei Böden habe ich jedoch mit Folie beklebt damit nicht gleich der Lack wieder abgeht. Rollen unten dran zum Tisch verschieben


      FERTIG :laola:

    • Schotenhüter schrieb:

      Hätte nicht gedacht das ein It-ler das hinkriegt, und dann scheinbar noch ohne Verletzung. :guterjunge:
      Für nen IT-Ler muss halt Technik drin sein, dann geht das schon …
      mmmh ich überleg grad.... nein tatsächlich ohne Verletzung rausgekommen.

      Das war beim Bau meiner Sommerterrasse schon anderst :weg:
    • Respekt

      und das sage ich als Handwerker :respect:

      Atemschutz und Gehörschutz, Stichsäge mit Absaugung, eine extra Kopflampe und so eine schöne aufgeräumte Werkstatt --- damit kann ich nicht dienen -- aber ich hätte nur die kleine Bosch mit Absaugung benutzt, ist ja recht leise :weg:


      wundere mich immer wie umständlich Handwerker sein können
      Das geht mir nicht nur bei Handwerkern so, leider auch bei IT-lern . Deshalb haben wir unsere externen IT Betreuer schon lange den Versorgungsvertrag gekündigt. Seit dem läufts und nix hängt mehr und bedarf der teuren schnellen Hilfe



      max
      bis 2004 als maxjat online ;)
    • Eigentlich fehlt noch die Schutzbrille, die beschlägt aber immer so schnell :)

      Ja Gehörschutz, da mein linkes Ohr irgendwie defekt ist... muss ich bei lauten Geräuschen einen Gehörtschutz tragen. Sonst Knisterts wie beim Schweißer... brauch ich sogar wenn ich Hecke schneide...


      Egal ob IT-ler oder Handwerker... In Dienstleistungsberufen braucht man heutzutage Leute die über den Tellerand hinausschauen und Abteilungs-/Fachübergreifend mitdenken können... Das trennt meiner Meinung nach die guten Fachkräfte vom Rest ab. Das sehe ich fast jeden Tag in unseren Konferenzen wenn Ärzte und Pfleger etwas besprechen und nicht auf einen gemeinsamen Nenner kommen, muss der IT-ler mit Logik und gesunden Menschenverstand denen dann die einfachsten Wege aufzeigen... während die Ärzteschaft sich schon in der Fachidiotie befindet um die einfachste Probleme mit Komplexen Methoden lösen zu wollen :weg:


      Deswegen haben meine Mitarbeiter in der IT alle auch Nebenfähigkeiten :klug:
      • Triathlet
      • Musiker
      • Künstler (Gemälde, Skupturen)
      • Kletterer
      • Handwerker, Elektriker und Gärtner (u.a. ich :) )
      • zwei ehemalige Pfleger
      • Ein Tätowierer
      • … jetzt wird's eng... äh Jemand der sich mit Geschäftsformen auskennt...
      • Alkohol zählt net, kann jeder von uns...
      Den klassischen Nerd gibt's bei uns nimmer, ich finde das merkt man auch am Denken und übergreifendem Verständnis für andere Themen.
    • fireblade2000 schrieb:

      Deswegen haben meine Mitarbeiter in der IT alle auch Nebenfähigkeiten
      Da bin ich zu 100% bei Dir !!!!

      Ich bin Handwerker - ganz was spezielles - Orthopädieschuhtechniker - und neben bei freier Sportjournalist bei der Neuen Osnabrücker Zeitung - das ist mein persönlicher Ausgleich zum eher körperlichen Ganztagsjob - aber eben auch wichtig um nicht zum Berufsidioten zu werden :)


      max
      bis 2004 als maxjat online ;)