Besuchen kann man das FabLab vorerst wieder ab dem 12. Oktober 2021 jeden Dienstag von 18.30 bis 21.00 Uhr.
In der Zwischenzeit ist das FabLab in das EG der Öhringer Str. 24 (ehem. Schlosserei Binnig) umgezogen.
Während der regulären Öffnungszeit sind immer Menschen anwesend, die sich mit der Bedienung der Geräte auskennen und gegebenenfalls entsprechende Einweisungen und Hilfestellungen geben können.
Der Zutritt ist nur unter Einhaltung des Hygienekonzepts möglich. Dieses sollte vor dem Besuch unbedingt gelesen werden. Es ist aber auch vor den Räumlichkeiten ausgehängt. Bei Fragen stehen wir gerne per Mail unter vorstand@fablab-neuenstadt.de, über facebook @FabLabNeuenstadt oder Instagram @fablab_neuenstadt zur Verfügung.
Der Vorstand des Jugendfördervereins Brückedächle e.V. sowie alle Vereinsangehörigen freuen sich auf Ihren Besuch!
Wir blicken auf ein schwieriges Jahr 2020 zurück und möchten uns für die Unterstützung jeglicher Art bedanken. Ein besonderer Dank gilt der Mörike-Apotheke und der Avia Tankstelle für den Verkauf der im FabLab Neuenstadt selbst erstellten Holzarbeiten zur Weihnachtszeit.
Nun blicken wir nach vorne und laden Sie ein, unsere Projekte und Veranstaltungen zu besuchen, sobald wir wieder öffnen dürfen.
Unser Projekt FabLab ist für kreative Menschen der ideale Platz, egal ob man ein T-Shirt bedrucken oder besticken möchte, aus Holz lasercutten oder Materialien mit unserer neuen CNC-Fräse bearbeiten möchte. Zudem können defekte Geräte in unserem monatlichen Reparaturcafé unter Anleitung repariert werden.
Wir wünschen Ihnen einen guten Start in das Jahr 2021.
Zum Senso: Gehäuse im 3D-Druck erzeugt und aus lasergeschnittenen Arcylteilen gefertigt. Hardware: Arduino Standard, Mp3-Player (DFPlayer mini), LCD-Display 16×2, 4 Tastenfelder jeweils mit individuell ansteuerbarer LED und 4 zusätzliche Bedientasten. Funktionen: Verschiedene Spiele mit Licht- und Soundeffekten und MP3-Player zum Musikabspielen mit verschiedenen Lichteffekten. Besonderheiten: Objektorientierte Software, die speziell mit den beschränkten Fähigkeiten eines normalen Arduino umgehen muss in Bezug auf Speicherkapazität und Rechenleistung. Ergebnis: Absolut direkte Bedienung ohne jegliche Hänger. Reagiert jederzeit auf alle Tastendrücke. Ebenfalls Aufbau einer Menüstruktur, die mit den geringen Ressourcen umgehen kann und eine gute Basis ist für weitere Projekte. Mit dieser Software wurde speziell gezeigt, wie eine Echtzeitfähigkeit mit einem Mikrocontroller erreicht werden kann.
Arduino Code
include LiquidCrystal_I2C lcd(0x27, 16, 2); // Den Tasten wird eine programminterne Nummer zugeordnet: define oben 0 define rechts 1 define unten 2 define links 3 define ESC 4 define Pfeil_links 5 define Pfeil_rechts 6 define Enter 7 // Nur zur Info für LCD-Darstellung: ä:”\xE1″, ö :”\xEF”, ü :”\xF5″, ß:”\xE2″, °:”\xDF”, μ:”\xE4″, Ω:”\xF4″, komplett helles Feld:”\xFF” // Prototyping: class Tastenklasse; class KeySoundSet; class LEDklasse; class Menuepunkt; class Liedwahl; void leiser(); void lauter(); void soundStop(); void Spiele_Lied(uint8_t Songnumber); void schreibe(const String& a, const String& b); void schreibe_loops(uint8_t Zahl); class Tastenklasse { private: int Pinnummer; // die hardwaremäßige Pinnummer der Taste am Arduino bool Key_pressed; // hier wird der letzte Tastenzustand gespeichert 1=war gedrückt public: bool Tastenevent; // Das Ereignis des Drückens der Taste, nicht der zustand des Gedrücktseins ! void Setup(int Pinnummer_) { Pinnummer = Pinnummer_; // Die private Variable Pinnummer wird mit dem Wert der übergebenen Variablen belegt pinMode(Pinnummer, INPUT); // Weil eine Taste angeschlossen ist muss der Eingang natürlich auf INPUT gesetzt werden Key_pressed = false; } void Eventabfrage() { // setzt Key_pressed auf true, wenn die Taste gedrückt ist und Tastenevent auf true, wenn sie bei der letzten Abfrage nicht gedrückt war Tastenevent = false; if (digitalRead(Pinnummer) == 1) { if (! Key_pressed) Tastenevent = true; // wenn die Taste seither nicht gedrückt war: Key_pressed = true; } else Key_pressed = false; } bool pressed() { return (Key_pressed); } }; class LEDklasse { private: int Pinnummer; bool ist_ein; int Helligkeit; public: void Setup (int Pinnummer_, int Helligkeit_) { Pinnummer = Pinnummer_; Helligkeit = Helligkeit_; // Helligkeit ist die aktuell eingestellte Helligkeit ist_ein = false; } void ein() { ist_ein = true; } void aus() { ist_ein = false; } void set_Helligkeit(int Helligkeit_) { Helligkeit = Helligkeit_; } void heller(int Schritt) { Helligkeit += Schritt; if (Helligkeit > 255) Helligkeit = 255; } void dunkler(int Schritt) { Helligkeit -= Schritt; if (Helligkeit < 0) Helligkeit = 0; } void strahle() { Helligkeit = (Helligkeit << 1) + 1; if (Helligkeit > 255) Helligkeit = 255; } void verblasse() { Helligkeit = Helligkeit >> 1; } void set(bool soft_) { if (ist_ein or soft_) analogWrite(Pinnummer, Helligkeit); else analogWrite(Pinnummer, 0); } }; LEDklasse LED[4]; class KeySoundSet { private: uint8_t _ESC, _Arraynummer; uint8_t Soundset = 190; //Tastensounds: 190 = Liednummer 190..194, 195 = Liednummer 195..199, 200 = Liednummer 200..204 4 Töne und ein “Zong” uint8_t _Number_of_Sets; public: void set(uint8_t ESC_, uint8_t Arraynummer_, uint8_t Number_of_Sets_) { ESC = ESC; Arraynummer = Arraynummer; Number_of_Sets = Number_of_Sets; } uint8_t Soundnumber() { return (Soundset); } uint8_t loop(Tastenklasse Tastatur[]) { if (Tastatur[Pfeil_links].Tastenevent) { if (Soundset > 190) Soundset -= 5; } if (Tastatur[Pfeil_rechts].Tastenevent) { if (Soundset < 5 * (_Number_of_Sets - 1) + 190) Soundset += 5; } schreibe("", "Set: " + String((Soundset - 190) / 5 + 1) + " try it!"); for (uint8_t i = 0; i < 4; i++) { if (Tastatur[i].pressed()) LED[i].ein(); else LED[i].aus(); if (Tastatur[i].Tastenevent) Spiele_Lied(Soundset + i); } if (Tastatur[Enter].Tastenevent) Spiele_Lied(Soundset + 4); // Zong auf Enter if (Tastatur[ESC].Tastenevent) return (_ESC); else return (_Arraynummer); } }; KeySoundSet Tastensound; class Menuepunkt { private: uint8_t _links, _rechts, _ESC, _Enter, Eigene_Menuenummer; public: void set(uint8_t links_, uint8_t rechts_, uint8_t ESC_, uint8_t Enter_, uint8_t Eigene_Menuenummer_) { _links = links_; _rechts = rechts_; _ESC = ESC_; _Enter = Enter_; Eigene_Menuenummer = Eigene_Menuenummer_; } uint8_t loop(Tastenklasse Tastatur[]) { if (Tastatur[Pfeil_links].Tastenevent) return (_links); if (Tastatur[Pfeil_rechts].Tastenevent)return (_rechts); if (Tastatur[ESC].Tastenevent) return (_ESC); if (Tastatur[Enter].Tastenevent) return (_Enter); else return (Eigene_Menuenummer); } }; class Senso_Classic { private: uint8_t Key_event[4], Key_pressed[4], _ESC, Eigene_Menuenummer, Spielzustand, Zaehler, Vorgabetaste[50], akt_elem; // Spielzustand 0=Zufallsfolge erzeugen, 1 = spielt vor, 2 = nachspielen; unsigned long timestamp; public: void set(uint8_t ESC_, uint8_t Eigene_Menuenummer_) { ESC = ESC; Eigene_Menuenummer = Eigene_Menuenummer_; Spielzustand = 0; Zaehler = 0; akt_elem = 0; } uint8_t loop(Tastenklasse Tastatur[]) { Key_event[0] = Tastatur[oben].Tastenevent; Key_event[1] = Tastatur[rechts].Tastenevent; Key_event[2] = Tastatur[unten].Tastenevent; Key_event[3] = Tastatur[links].Tastenevent; Key_pressed[0] = Tastatur[oben].pressed(); Key_pressed[1] = Tastatur[rechts].pressed(); Key_pressed[2] = Tastatur[unten].pressed(); Key_pressed[3] = Tastatur[links].pressed(); if (Spielzustand == 0 and Zaehler == 0) { // Spiel hat noch nicht begonnen for (auto &i : LED) i.set_Helligkeit(255); randomSeed(millis()); // den Randombefehl mit der aktuellen zufälligen Systemzeit setzen (macht diesen wirklich zufällig) for (auto &i : Vorgabetaste) i = random(4); // vorbelegen einer Zufallsfolge Zaehler = 1; // Zaehler gibt vor, wieviele Tasten man sich merken muss Spielzustand = 1; // 1=Abspielen der Zufallsfolge / 2=Nachspielen timestamp = millis(); schreibe_loops(Zaehler); } else { if (Spielzustand == 1 and millis() - 300 > timestamp) for (auto &i : LED) i.aus(); if (Spielzustand == 1 and millis() - 500 > timestamp) { // Abspielen timestamp = millis(); if (akt_elem < Zaehler) { LED[Vorgabetaste[akt_elem]].ein(); Spiele_Lied(Tastensound.Soundnumber() + Vorgabetaste[akt_elem]); akt_elem++; } else { Spielzustand = 2; // Umschalten auf Nachspielen akt_elem = 0; } } else if (Spielzustand == 2) { // Nachspielen for (uint8_t i = 0; i < 4; i++) { // alle LEDs ausschalten if (not Key_pressed[i]) LED[i].aus(); // nur, wenn die Taste losgelassen wurde. } if (Key_event[Vorgabetaste[akt_elem]]) { // es wurde die richtige Taste gedrückt LED[Vorgabetaste[akt_elem]].ein(); Spiele_Lied(Tastensound.Soundnumber() + Vorgabetaste[akt_elem]); akt_elem++; } else { for (uint8_t i = 0; i < 4; i++) { if (Key_event[i] and i != Vorgabetaste[akt_elem]) // Falsch getippt { Spiele_Lied(Tastensound.Soundnumber() +4); delay (2500); Zaehler = 0; akt_elem = 0; Spielzustand = 0; } } } if (akt_elem == Zaehler) { // alle wurden richtig getippt, zurück zum Abspielen Spielzustand = 1; akt_elem = 0; Zaehler++; schreibe_loops(Zaehler); timestamp = millis() + 1000; } } } if (Tastatur[ESC].Tastenevent) { Spielzustand = 0; Zaehler = 0; akt_elem = 0; return (_ESC); } else return (Eigene_Menuenummer); } }; class Reaktionsspiel { private: uint8_t _ESC, Eigene_Menuenummer, Spielzustand, Countdown, Taste; // Spielzustand 0 = Neu gestartet, 1 = Startmodus, 2 = Taste wird vorgegeben, 3 = warte auf Tastendruck; unsigned long Restzeit, Punkte, Top_Punkte, timestamp; public: void set(uint8_t ESC_, uint8_t Eigene_Menuenummer_) { ESC = ESC; Eigene_Menuenummer = Eigene_Menuenummer_; Spielzustand = 0; Top_Punkte = 0; } uint8_t loop(Tastenklasse Tastatur[]) { switch (Spielzustand) { case 0 : for (auto &i : LED) { i.set_Helligkeit(255); i.aus(); } Countdown = 5; Restzeit = 20000; Punkte = 0; timestamp = millis(); Spielzustand = 1; break; case 1: schreibe("Start in " + String(Countdown) + " sek. ", "Punkte:" + String(Punkte) + " Top:" + String(Top_Punkte) + " "); if (millis() >= timestamp + 1000) { Countdown--; timestamp = millis(); } if (Countdown == 0) Spielzustand = 2; break; case 2: randomSeed(millis()); // den Randombefehl mit der aktuellen zufälligen Systemzeit setzen (macht diesen wirklich zufällig) Taste = random(4); schreibe("Rest: " + String(Restzeit) + "ms ", "Punkte:" + String(Punkte) + " Top:" + String(Top_Punkte) + " "); Spiele_Lied(Tastensound.Soundnumber() + Taste); LED[Taste].ein(); timestamp = millis(); Spielzustand = 3; break; case 3: Restzeit -= (millis() - timestamp); // Restzeit wird reduziert um die Zeit, die seit dem letzten Aufruf dieser Methode vergangen ist. timestamp = millis(); schreibe("Rest: " + String(Restzeit) + "ms ", "Punkte:" + String(Punkte) + " Top:" + String(Top_Punkte) + " "); for (int i = 0; i < 4; i++) { if (Tastatur[i].Tastenevent) { if (i == Taste) { // Die richtige Taste wurde gedrückt soundStop(); Punkte++; LED[Taste].aus(); if (Punkte > Top_Punkte) Top_Punkte = Punkte; Spielzustand = 2; } else { // die falsche Taste wurde gedrückt Spiele_Lied(Tastensound.Soundnumber() +4); for (auto &i : LED) i.ein(); delay (2500); for (auto &i : LED) i.aus(); if (Punkte > Top_Punkte) Top_Punkte = Punkte; Spielzustand = 0; } } } if (Restzeit > 1000000) { // Spielzeit ist vorbei (wegen unsigned wird Restzeit nicht negativ, sondern riesengroß) for (auto &i : LED) i.aus(); Spielzustand = 0; } break; } if (Tastatur[ESC].Tastenevent) { for (auto &i : LED) i.aus(); Spielzustand = 0; return (_ESC); } else return (Eigene_Menuenummer); } }; class Liedwahl { private: uint8_t _links, _rechts, _ESC, _Enter; bool _Lied_spielt = false; public: void set(uint8_t links_, uint8_t rechts_, uint8_t ESC_, uint8_t Enter_) { links = links; rechts = rechts; ESC = ESC; Enter = Enter; } uint8_t loop(Tastenklasse Tastatur[]) { if (Tastatur[links].pressed()) leiser(); if (Tastatur[rechts].pressed()) lauter(); if (Tastatur[oben].pressed()) for (auto &i : LED) i.heller(5); if (Tastatur[unten].pressed()) for (auto &i : LED) i.dunkler(5); if (Tastatur[Pfeil_links].Tastenevent) { _Lied_spielt = false; return (_links); } if (Tastatur[Pfeil_rechts].Tastenevent) { _Lied_spielt = false; return (_rechts); } if (Tastatur[ESC].Tastenevent) { soundStop(); if (_Lied_spielt) { _Lied_spielt = false; return (_Enter); } else return (_ESC); } if (Tastatur[Enter].pressed()) { if (not _Lied_spielt) { Spiele_Lied(_Enter); _Lied_spielt = true; } } return (_Enter); } }; class DiscoSpeedSet { private: uint8_t _ESC, _Arraynummer; public: unsigned long Discotimer = 200; void set(uint8_t ESC, uint8_t Arraynummer_) { ESC = ESC; Arraynummer = Arraynummer; } uint8_t loop(Tastenklasse Tastatur[]) { if (Tastatur[Pfeil_links].pressed() and _Discotimer > 0) _Discotimer--; if (Tastatur[Pfeil_rechts].pressed() and _Discotimer < 2000) _Discotimer++; schreibe("set Pause: " + String(_Discotimer) + "ms ", "Nur f\xF5r Typ hard"); if (Tastatur[oben].pressed()) { // obere Taste = heller LED[oben].ein(); for (auto &i : LED) i.heller(5); } else LED[oben].aus(); if (Tastatur[unten].pressed()) { // untere Taste = dunkler LED[unten].ein(); for (auto &i : LED) i.dunkler(5); } if (Tastatur[ESC].Tastenevent) { for (auto &i : LED) i.aus(); return (_ESC); } else return (_Arraynummer); } }; class DiscoTypeSet { private: uint8_t _ESC, _Arraynummer, DiscoTyp, Discolight; uint16_t Lichtspiele[10] = {0x0F0F, 0xEDB7, 0x6C93, 0x1248, 0xA5A5, 0xF5A0, 0xAA55, 0x2585, 0xA4A1, 0x0000}; // jede Stelle entspricht einem der vier hintereinander abzuspielenden Bilder (rückwärts) /* 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 A 1010 E 1110 3 0011 7 0111 B 1011 F 1111 */ uint8_t Anzahl_Lichtspiele = 10; unsigned long _timestamp; uint8_t Stufe; public: bool soft; void set(uint8_t ESC_, uint8_t Arraynummer_) { _ESC = ESC_; _Arraynummer = Arraynummer_; _timestamp = millis(); Discolight = 0; DiscoTyp = 3; soft = false; Stufe = 0; } uint8_t loop(Tastenklasse Tastatur[]) { if (Tastatur[Pfeil_links].Tastenevent && (DiscoTyp > 0)) { if (DiscoTyp == Anzahl_Lichtspiele) for (auto &i : LED) i.set_Helligkeit(200); // wenn von Soft auf Hard gewechselt wurde, dann Helligkeit einstellen DiscoTyp--; for (auto &i : LED) i.set_Helligkeit(200); } if (Tastatur[Pfeil_rechts].Tastenevent && (DiscoTyp < 2 * Anzahl_Lichtspiele - 1)) { DiscoTyp++; if (DiscoTyp == Anzahl_Lichtspiele) for (auto &i : LED) { i.set_Helligkeit(0); // wenn von Hart auf Soft gewechselt wurde, dann Helligkeit einstellen i.ein(); } } if (DiscoTyp >= Anzahl_Lichtspiele) schreibe("", " Typ: " + String(DiscoTyp - Anzahl_Lichtspiele) + " soft "); else { if (Tastatur[oben].pressed()) { // obere Taste = heller LED[oben].ein(); for (auto &i : LED) i.heller(5); } else LED[oben].aus(); if (Tastatur[unten].pressed()) { // untere Taste = dunkler LED[unten].ein(); for (auto &i : LED) i.dunkler(5); } schreibe("", " Typ: " + String(DiscoTyp) + " hard "); } if (Tastatur[ESC].Tastenevent) { for (auto &i : LED) i.aus(); return (_ESC); } else return (_Arraynummer); } void next_Discolight(unsigned long timestep) { if (DiscoTyp < Anzahl_Lichtspiele) { // hard if (millis() >= timestep + _timestamp) { _timestamp = millis(); if (++Discolight > 3) Discolight = 0; } if ((Lichtspiele[DiscoTyp] >> (4 * Discolight + 3)) & 1) LED[oben].ein(); else LED[oben].aus(); if ((Lichtspiele[DiscoTyp] >> (4 * Discolight + 2)) & 1) LED[rechts].ein(); else LED[rechts].aus(); if ((Lichtspiele[DiscoTyp] >> (4 * Discolight + 1)) & 1) LED[unten].ein(); else LED[unten].aus(); if ((Lichtspiele[DiscoTyp] >> (4 * Discolight + 0)) & 1) LED[links].ein(); else LED[links].aus(); } else // soft { for (auto &i : LED) i.ein(); Stufe ++; if (Stufe < 8) { if ((Lichtspiele[DiscoTyp - Anzahl_Lichtspiele] >> (4 * Discolight + 3)) & 1) LED[oben].strahle(); else LED[oben].verblasse(); if ((Lichtspiele[DiscoTyp - Anzahl_Lichtspiele] >> (4 * Discolight + 2)) & 1) LED[rechts].strahle(); else LED[rechts].verblasse(); if ((Lichtspiele[DiscoTyp - Anzahl_Lichtspiele] >> (4 * Discolight + 1)) & 1) LED[unten].strahle(); else LED[unten].verblasse(); if ((Lichtspiele[DiscoTyp - Anzahl_Lichtspiele] >> (4 * Discolight + 0)) & 1) LED[links].strahle(); else LED[links].verblasse(); } else { Stufe = 0; if (++Discolight > 3) Discolight = 0; } } } }; void lauter() { Serial.write(0x7e); Serial.write(0xff); Serial.write(0x04); Serial.write(0x04); Serial.write(0x00); Serial.write(0xef); delay(30); } void leiser() { Serial.write(0x7e); Serial.write(0xff); Serial.write(0x04); Serial.write(0x05); Serial.write(0x00); Serial.write(0xef); delay(30); } void soundPlay() { Serial.write(0x7e); Serial.write(0xff); Serial.write(0x06); Serial.write(0x0d); Serial.write(0x00); Serial.write(0x00); Serial.write(0x00); Serial.write(0xef); } void soundStop() { Serial.write(0x7e); Serial.write(0xff); Serial.write(0x06); Serial.write(0x0e); Serial.write(0x00); Serial.write(0x00); Serial.write(0x00); Serial.write(0xef); } // Auf der SD-Karte im Verzeichnis “01” stehen abspielbare Dateien – Beispiel: “000.mp3” (nr=0) oder “017.mp3” (nr=17) void soundSelect(uint8_t nr) { Serial.write(0x7e); Serial.write(0xff); Serial.write(0x06); Serial.write(0x0f); Serial.write(0x00); Serial.write(0x01); Serial.write(nr); Serial.write(0xef); } void Spiele_Lied(uint8_t Songnumber) { soundStop(); delay(20); soundSelect(Songnumber); delay(20); soundPlay(); } String Textzeile1 = ” “, Textzeile2 = ” “; void schreibe(const String& a, const String& b) { // lcd.clear(); if (a != Textzeile1) { lcd.setCursor(0, 0); lcd.print(a); } if (b != Textzeile2) { lcd.setCursor(0, 1); lcd.print(b); } } void schreibe_loops(uint8_t Zahl) { char Text[16] {“Nachspielen “}; Text[13] = (Zahl – Zahl % 10) / 10 + 48; Text[14] = Zahl % 10 + 48; schreibe(“”, Text); } // Definition unserer globalen Variablen: Tastenklasse Key[8]; uint8_t Spielzustand = 0, Zaehler = 0, Vorgabetaste[50], akt_elem = 0; // Spiel-1: Spielzustand 0 = spielt vor, 1 = nachspielen unsigned long timestamp; Menuepunkt Menue[8]; Liedwahl Lied[17]; Senso_Classic Spiel_Senso_Classic; Reaktionsspiel Spiel_Reaktion; DiscoTypeSet DiscoElement; DiscoSpeedSet Einstellungsmenue_discospeed; uint8_t akt_Menue = 0; void setup() { // Hier im setup() wird alles Mögliche konfiguriert: lcd.init(); // initialisierung das LCD mit I²C-Schnittstelle lcd.backlight(); // LCD-Hintergrundbeleuchtung einschalten Serial.begin(9600, SERIAL_8N1); // Serielle Kommunikation mit dem MP3-Player einstellen // Hardwaremäßige Pinbelegung am Arduino UNO: // Belegung von Anto und Jan Key[oben].Setup(7); // 7 identisch Key[rechts].Setup(2); // 2 identisch Key[unten].Setup(4); // 4 identisch Key[links].Setup(8); // 9 Key[ESC].Setup(17); // A3 identisch Key[Pfeil_links].Setup(16); // A2 identisch Key[Pfeil_rechts].Setup(15); // A1 identisch Key[Enter].Setup(14); // A0 identisch // LEDs alle auf PWM-Ausgängen: LED[oben].Setup(6, 100); // 6 identisch LED[rechts].Setup(3, 100); // 3 identisch LED[unten].Setup(5, 100); // 5 identisch LED[links].Setup(9, 100); // 10 // Initilisierug aller Menüpunkte: Menue[0].set(0, 1, 0, 3, 0); // Hauptmenü-Spiele spielen set(links, rechts, ESC, Enter, eigene Arraynummer) Menue[1].set(0, 2, 1, 100, 1); // Hauptmenü-Lieder abspielen Menue[2].set(1, 2, 2, 5, 2); // Hauptmenü-Einstellungen Menue[3].set(3, 4, 0, 50, 3); // Spiele spielen-Senso Classic Menue[4].set(3, 4, 0, 51, 4); // Spiele spielen-Reaktionsspiel Menue[5].set(5, 6, 2, 98, 5); // Einstellungen-disco Typ Menue[6].set(5, 7, 2, 99, 6); // Einstellungen-disco speed Menue[7].set(6, 7, 2, 97, 7); // Einstellung des Tastensoundtyps Spiel_Senso_Classic.set(3, 50); // Classic Senso spielen set(ESC, eigene Arraynummer) Spiel_Reaktion.set(4, 51); // reaktionsspiel set(ESC, eigene Arraynummer) Tastensound.set(7, 97, 2); // Tastensound festlegen set(ESC, eigene Arraynummer, Anzahl verschiedener Soundstiele) DiscoElement.set(5, 98); // disco Typ festlegen set(ESC, eigene Arraynummer) Einstellungsmenue_discospeed.set(6, 99); // disco speed-Set speed set(ESC, eigene Arraynummer) Lied[0].set(100, 101, 1, 100); // Bei den Menüpunkten Lied steht immer die Arraynummer + 100 ! Lied[1].set(100, 102, 1, 101); // Das ist gleichzeitig die Songnummer Lied[2].set(101, 103, 1, 102); Lied[3].set(102, 104, 1, 103); Lied[4].set(103, 105, 1, 104); Lied[5].set(104, 106, 1, 105); Lied[6].set(105, 107, 1, 106); Lied[7].set(106, 108, 1, 107); Lied[8].set(107, 109, 1, 108); Lied[9].set(108, 110, 1, 109); Lied[10].set(109, 111, 1, 110); Lied[11].set(110, 112, 1, 111); Lied[12].set(111, 113, 1, 112); Lied[13].set(112, 114, 1, 113); Lied[14].set(113, 115, 1, 114); Lied[15].set(114, 116, 1, 115); Lied[16].set(115, 116, 1, 116); timestamp = millis(); } void loop() { for (auto &i : Key) i.Eventabfrage(); // Über alle Tasten (setzt die Tastenevents): for (auto &i : LED) i.set(DiscoElement.soft); // LEDs ansteuern auf den im letzten Durchlauf gewählten Zustand if (akt_Menue < 50) akt_Menue = Menue[akt_Menue].loop(Key); // allgemeine Menüs else if (akt_Menue == 50) akt_Menue = Spiel_Senso_Classic.loop(Key); // Senso_Classic else if (akt_Menue == 51) akt_Menue = Spiel_Reaktion.loop(Key); // Reaktionsspiel else if (akt_Menue == 97) akt_Menue = Tastensound.loop(Key); // Tastensounds auswählen else if (akt_Menue == 98) akt_Menue = DiscoElement.loop(Key); // Disco Typ // Ab hier alles, bei dem das Discolicht läuft else if (akt_Menue == 99) akt_Menue = Einstellungsmenue_discospeed.loop(Key); // Disco speed else akt_Menue = Lied[akt_Menue – 100].loop(Key); // MP3-Player // Alle akt_Menue über 100 gehören den absielbaren Liedern. if (akt_Menue >= 98) DiscoElement.next_Discolight(Einstellungsmenue_discospeed._Discotimer); // Discolicht anzeigen String ENTER_TO_PLAY=” Enter to play “; switch (akt_Menue) { // Die Displayansteuerung findet hier statt, damit die Texte im Programm und nicht im Datenspeicher sind, der sonst überläuft: case 0: schreibe (” Hauptmenue “, ” Spiele spielen “); break; case 1: schreibe (” Hauptmenue “, “Lieder abspielen”); break; case 2: schreibe (” Hauptmenue “, ” Einstellungen “); break; case 3: schreibe (“Spiel ausw\xE1hlen “, ” Senso Classic “); break; case 4: schreibe (“Spiel ausw\xE1hlen “, ” Reaktionsspiel “); break; case 5: schreibe (” Einstellungen “, “W\xE1hle disco Typ “); break; case 6: schreibe (” Einstellungen “, “set disco speed “); break; case 7: schreibe (” Einstellungen “, ” Tastensounds “); break; case 50: schreibe (” Senso Classic “, “”); break; case 51: schreibe(“”, “”); break; case 97: schreibe (“W\xE1hle Tastent\xEFne”, “”); break; case 98: schreibe (“W\xE1hle disco Typ”, “”); break; case 99: schreibe (“”, “”); break; case 100: schreibe (ENTER_TO_PLAY, ” Mashup Germany “); break; case 101: schreibe (ENTER_TO_PLAY, “Bohemian Rapsodi”); break; case 102: schreibe (ENTER_TO_PLAY, ” J\xE1germeister “); break; case 103: schreibe (ENTER_TO_PLAY, ” Monster “); break; case 104: schreibe (ENTER_TO_PLAY, ” Bommerlunder “); break; case 105: schreibe (ENTER_TO_PLAY, ” Coconutsong “); break; case 106: schreibe (ENTER_TO_PLAY, ” Unity “); break; case 107: schreibe (ENTER_TO_PLAY, “We will rock 01 “); break; case 108: schreibe (ENTER_TO_PLAY, ” Teenagers “); break; case 109: schreibe (ENTER_TO_PLAY, “We are the champ”); break; case 110: schreibe (ENTER_TO_PLAY, “We will rock you”); break; case 111: schreibe (ENTER_TO_PLAY, ” Killer Queen “); break; case 112: schreibe (ENTER_TO_PLAY, ” Bites the dust “); break; case 113: schreibe (ENTER_TO_PLAY, ” Bicycle race “); break; case 114: schreibe (ENTER_TO_PLAY, “Crazy … thing “); break; case 115: schreibe (ENTER_TO_PLAY, “Dont stop me now”); break; case 116: schreibe (ENTER_TO_PLAY, ” Bottomed girls “); break; } }
Wir, der Jugendförderverein Brückedächle e.V., engagieren uns seit fast 20 Jahren in Neuenstadt in der Jugendarbeit und bei verschiedenen Veranstaltungen und Projekten. Auch für uns war das Jahr 2020 schwierig. Dennoch konnten wir auch in diesem Jahr im FabLab Neuenstadt selbst erstellte Holzarbeiten kreieren, welche bei der Mörike Apotheke und bei der AVIA Tankstelle in Neuenstadt erworben werden können. Wir haben im Angebot: Windlicht Neuenstadt, mit LED Kerze € 13 Diorama Neuenstadt, mit LED Beleuchtung € 35 Baumschmuck mit Stadtturm € 2,50 Ob als Weihnachtsgeschenk oder Dekoration für Ihr eigenes Zuhause, wir freuen uns, wenn Sie unsere Arbeit unterstützen.
Im Namen des Vorstandes wünschen wir Ihnen ein frohes Weihnachtsfest und einen guten Start in das Jahr 2021.
Hiermit laden wir herzlich zu unserer Mitgliederversammlung am Samstag, den 21. November 2020 um 19 Uhr in der Kelterhalle in Neuenstadt-Cleversulzbach ein.
Aus diesem Grund wird die Mitgliederversammlung in diesem Jahr nicht wie gewohnt im Jugendhaus, sondern in der Kelterhalle in 74196 Neuenstadt-Cleversulzbach stattfinden.
Der Einlass ist nur mit einer vorherigen Anmeldung bis spätestens 11.11.2020 über https://anmeldung.fablab-neuenstadt.de/MV2020/ oder über Herr Sören Oberndörfer (Mobil +49 160 8546455) möglich.
Tagesordnung:
Entgegennahme des Jahresberichtes des Vorstandes
Feststellung der Beschlussfähigkeit
Feststellung der Jahresrechnung
Entgegennahme des Prüfungsberichtes der Kassenprüfer*innen
Wahl der Kassenprüfer*innen (2 Posten)
Entlastung des Vorstandes einschl. Kassenverwaltung
Wahl des Vorstandes
Wahl des*der 1. Vorsitzenden (1 Posten)
Wahl des*der 2. Vorsitzenden (1 Posten)
Wahl der Kassenverwaltung (1 Posten)
Wahl des*der Schriftführer*in (1 Posten)
Wahl der Beisitzer*innen (2 Posten)
Wahl der Jugendvertreter*innen (2 Posten)
Anträge Anschaffungen
Playstation 5 + TV
Videoschnitt / CAD-PC
Kamera / Streaming Setup
3D-Drucker
Staubsauger
Lötstation(en)
Ausblick
Sonstiges
Bleiben Sie gesund!
Vorstand des Jugendfördervereins Brückedächle e. V.
Nach einer Corona Pause startet das Hightech-Labor FabLab Neuenstadt ab 1. September mit ganz neuen Möglichkeiten.
Das Ziel des FabLab ist, der Allgemeinheit den Zugang zu Maschinen und Wissen bereitzustellen. Wir möchten das Interesse für Technik bei Jugendlichen wecken, zukunftsfähige Projekte umsetzen sowie praktisches Wissen und persönliche Kompetenzen fördern. Kurz vor dem Shutdown wurde nach einer längeren Spendenaktion eine neue CNC Fräse bestellt welche inzwischen eingetroffen, angeschlossen und den Besuchern des FabLabs nach Einweisung zur Verfügung steht. Angeschafft wurde eine Portal CNC Fräse mit einem Verfahrweg von 623 x 1223 x 145 mm (X, Y, Z). Diese ermöglicht den Besuchern ihre Ideen und Projekte in einem Zerspanungsverfahren umzusetzen, die seither auf unseren 3D Druckern oder dem Lasercutter so nicht möglich waren. Ein besonderer Dank geht an die Mitarbeiter der Firma Bosch, die uns durch den Verein Cents for help e. V. mit 5000 € unterstützt haben und Audi, die 1000 € für unser Projekt dazugegeben haben. Ohne deren Unterstützung wäre diese Anschaffung in Höhe von 14.000 € nicht möglich gewesen.
Besuchen kann man das FabLab wieder ab dem 1. September, vorerst jeden Dienstag von 18.30 Uhr – 21 Uhr im Jugendhaus Neuenstadt 2.OG.
Derzeit sind maximal 15 Personen zugelassen und die Samstag Öffnung wird vorübergehend noch ausgesetzt.
Mit dem Klick auf den Link erhält man Zugriff auf unser aktuelles Hygienekonzept. Dieses sollte vor dem Besuch unbedingt gelesen werden.
Am Samstag, den 07. März 2020 findet ihr uns auf der ersten „Mini Maker Faire Heilbronn“!
Hier dreht sich alles um Technologie, Kunst und Kreativität. Besuchende können kostenfrei und ohne Anmeldung zur Mini Maker Faire kommen. Das Rahmenprogramm sowie die Liste der ausstellenden Maker und Makerinnen wird spätestens einen Monat vor dem Event hier veröffentlicht.
Die Mini Maker Faire Heilbronn findet im Hagenbucher, dem älteren der beiden experimenta-Gebäude, statt. Mit dem Auto kann im Parkhaus der experimenta geparkt werden. Das Parkticket kann an der Kasse der experimenta auf 5€ reduziert werden.
Das Jugendreferat Neuenstadt lädt zusammen mit dem Jugendförderverein Brückedächle e.V. ganz herzlich zum Tag der offenen Tür im Jugendhaus Neuenstadt (Öhringer Str. 24, 2. OG) am Samstag, den 29. Februar 2020 von 14-18 Uhr ein!
Sie werden dabei die Gelegenheit haben uns und unsere Angebote bei einer Tasse Kaffee und einem Stück Kuchen besser kennenzulernen. Wir möchten Ihnen einen Einblick in unser Projekt FabLab und in die Nutzungsmöglichkeiten des Jugendhauses geben. Beim Flohmarkt des Friedenshorts wird es allerhand Überraschendes geben.