Abstandssensoren


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Leuchtende Schallplatte

Lichteffekte mit rotierender Schallplatte und Leuchtdioden.


Schallplatte Frontansicht


Um einige visuelle Effekte mit Leuchtdioden zu erzeugen, werden in diesem Experiment zehn Leuchtdioden auf einer Schallplatte angebracht. Zum Ansteuern der Leuchtdioden kommt der kleine Mikrocontroller Arduino Nano zum Einsatz. Er wird ebenfalls auf der Schallplatte montiert. Das so zusammengestellte Schallplatten-Gespann wird anschließend mit einer 9V-Batterie ergänzt, die für Spannungsversorgung der Komponenten sorgt.
Die Schallplatte wird anschließend an einer Achse befestigt, die von einem 12 V Gleichstrommotor angetrieben wird. Um eine passende Drehzahl des Motors einzustellen, kommt ein Geschwindigkeitsregler zum Einsatz. Dank dieser Lösung kann die Drehzahl des Motors mithilfe eines Potentiometers problemlos rauf und runter geregelt werden.
Während die Schallplatte rotiert, werden die Leuchtdioden zu unterschiedlichen Zeitpunkten für unterschiedliche Dauer ein- und ausgeschaltet.
Die Striche, Linien, Punkte, Zeichen oder Figuren, die mit solcher Methode generiert werden können, erscheinen abhängig von der aktuell eingestellten Drehzahl des Motors an unterschiedlichen Stellen der rotierenden Schallplatte. Um genaue Position der Zeichen festzulegen, könnte ein zusätzlicher Sensor in das System integriert werden, der die aktuelle Drehzahl überwacht und dem Mikrocontroller mitteilt. Auf diese Erweiterung wird in diesem Experiment verzichtet.

Mikrocontroller

Arduino nano

Die Aufgabe des Mikrocontrollers in dem Versuch besteht lediglich darin, die Leuchtdioden laufend ein- und auszuschalten. Trotz, dass die Aufgabe äußerst simpel ist, lassen sich auf diesem Weg bei einer rotierenden Schallplatte durchaus interessante visuelle Effekte erzeugen.

Arduino

Motor

Motor

Die Aufgabe, eine Schallplatte zum Drehen zu bringen, könnte beliebiger Motor übernehmen. In diesem Fall übernimmt die Aufgabe der 12V Gleichstrommotor JGB37 mit Getriebe. Um eine höhere Drehzahl zu erreichen, kommt hier eine Kombination aus Zahnrädern und Zahnriemen zum Einsatz.

Gleichstrommotor JGB37

Motortreiber

Motortreiber

Der Motor wird mit einem Geschwindigkeitsregler, der für Belastung bis zu 20 A ausgelegt ist, angesteuert. Der Treiber bedient sich dabei der PWM-Technik. Für Testzwecke kann der Motor an eine beliebige 12V Quelle wie z.B. einen 12V – Netzteil angeschlossen werden.

Schaltplan

Schaltplan Schallplatte

Schaltplan (Schallplatte-Komponenten)

Motorsteuerung

Schaltplan (Motorsteuerung)

Testschaltung

Testschaltung 1

Schallplatte Frontansicht

Testschaltung 2

Schallplatte Rückansicht

Testschaltung 3

Testanordnung

Programm (Sketch)

// ***********************************************************************************
// Leuchtende Schallplatte: Gleichstrommotor, Arduino
// Gleichstrommotor JGB37 mit Getriebe, PWM-Geschwindigkeitsregler
// Arduino Nano, IDE 2.1.1
// ***********************************************************************************

int LED [] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };    
int B [7][10] = {  { 1,1,1,1,1,1,1,1,1,1 },
                   { 1,0,0,0,1,0,0,0,0,1 },
                   { 1,0,0,0,1,0,0,0,0,1 },
                   { 1,0,0,0,1,0,0,0,0,1 },
                   { 1,0,0,1,0,1,0,0,0,1 },
                   { 0,1,1,0,0,0,1,1,1,0 },
                   { 0,0,0,0,0,0,0,0,0,0 }, };

// ***********************************************************************************
void setup() {
    for (int i=0; i<10; i++) {
      pinMode (LED [i], OUTPUT);
    }
    delay(5000);
}

// -----------------------------------------------------------------------------------
void LED_EIN (int LED_Nummer) {
    digitalWrite (LED [LED_Nummer], HIGH); 
 }

// -----------------------------------------------------------------------------------
void LED_AUS (int LED_Nummer) {
    digitalWrite (LED [LED_Nummer], LOW); 
 }

void Alles_Aus () {
      for (int i=2; i<12; i++) {
        LED_AUS(i);
    }
    delay (2000);
}

// -----------------------------------------------------------------------------------
// Alle LEDs Ein ---------------------------------------------------------------------
void Sequenz_1 () {
    for (int i=2; i<12; i++) {
        LED_EIN(i);
    }
    delay (5000);
}

// -----------------------------------------------------------------------------------
// Via Zufall einzelne LEDs umschalten -----------------------------------------------
void Sequenz_2 () {
    for (int i=1; i<500; i++) {
        int Zufall_LED = random(10);
        if (digitalRead (LED[Zufall_LED]) == LOW) {
            LED_EIN(Zufall_LED);
        } 
        else {
            LED_AUS(Zufall_LED);
        }
        delay (20);
    }
}

// -----------------------------------------------------------------------------------
// Via Zufall einzelne LEDs für kurze Zeit Ein und Aus -------------------------------
void Sequenz_3 () {
    for (int i=1; i<1500; i++) {
        int Zufall_LED = random(10);
        LED_EIN(Zufall_LED);
        delay (3);
        LED_AUS(Zufall_LED);
        delay (2);
    }
}

// -----------------------------------------------------------------------------------
// LEDs zeitlich verzögert einzeln Ein und Aus ---------------------------------------
void Sequenz_4 () {
    for (int i=1; i<100; i++) {
        for (int j=0; j<10; j++) {
            LED_EIN(j);
            delay (5);
        }
        for (int j=0; j<10; j++) {
            LED_AUS(j);
            delay (5);
        }
    }
}

// -----------------------------------------------------------------------------------
// LEDs zeitlich verzögert einzeln Ein und Aus ---------------------------------------
void Sequenz_5 () {
    for (int i=1; i<100; i++) {
        for (int j=0; j<10; j++) {
            LED_EIN(j);
        }
        delay (10);
        for (int j=0; j<10; j++) {
            LED_AUS(j);
            delay (5);
        }
    }
}

// -----------------------------------------------------------------------------------
// Buchstabe B -----------------------------------------------------------------------
void Sequenz_6 () {
    for (int i=1; i<100; i++) {
        for (int j=0; j<7; j++) {
            for (int k=0; k<10; k++) {
                if ( B[j][k] == 1 ) {
                    LED_EIN(k);
                } else {
                    LED_AUS(k);
                }
            }
            delay (1);
        }
        delay (160);
    }    
}

// ***********************************************************************************
void loop() {
    Sequenz_1 ();
    Alles_Aus ();
    Sequenz_2 ();
    Alles_Aus ();
    Sequenz_3 ();
    Alles_Aus ();
    Sequenz_4 ();
    Alles_Aus ();
    Sequenz_5 ();
    Alles_Aus ();
    Sequenz_6 ();
    Alles_Aus ();
}

// ***********************************************************************************        
         

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz