/*
************************************
***** INC/INST ****
************************************
*/
//Bibliotheken einbinden
//Objekte anlegen
/*
************************************
***** DEF ****
************************************
*/
//Konstanten
//globale Variablen, evtl. Sortierung
//PIN Deklarationen
//PWM PINS
//Analog PINS
#define THERMO A0
//Digital PINS
#define LED_RED 11
#define LED_BLUE 10
#define LED_GREEN 12
#define BUTTON 13
#define POTI 9
/*
************************************
***** SETUP ****
************************************
*/
void setup()
{
Serial.begin(9600);
Serial.println("Void Setup ---------");
delay(50);
//Pin Deklarationen
Serial.println("Void Setup - Pin Deklaration");
delay(50);
pinMode(LED_RED, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(THERMO, OUTPUT);
pinMode(BUTTON, INPUT);
pinMode(POTI, INPUT);
//Bauteile testen
Serial.println("Void Setup - Bauteiltest");
delay(50);
Serial.println("LED AN");
delay(50);
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, HIGH);
delay(2000);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
Serial.println("LED AUS");
Serial.println("AUTO AN");
digitalWrite(LED_BLUE, HIGH);
delay(50);
//wird einmal durchlaufen
//Hier werden Intitalisieurngen geschrieben
//Hier werden die PIN Richtungen definiert IN/OUT
//PIN Richtungen festlegen
//Inits
}
void loop()
{
Serial.println("Void Loop START");
delay(50);
//WENN BUTTON GEDRÜCKT
if(digitalRead(BUTTON)== HIGH && digitalRead(LED_BLUE)== HIGH)
{
Serial.println("Void Loop - BUTTON PRESSED : Manuell Mode ");
delay(50);
//LED BLAU AUS
digitalWrite(LED_BLUE, LOW);
delay(500);
//LED ROT AN
digitalWrite(LED_RED, HIGH);
delay(500);
}
else if(digitalRead(BUTTON) == HIGH && digitalRead(LED_RED) == HIGH)
{
Serial.println("Void Loop - BUTTON PRESSED : AUTO Mode ");
delay(50);
//LED ROT AUS
digitalWrite(LED_RED, LOW);
delay(500);
//LED BLAU AN
digitalWrite(LED_BLUE, HIGH);
delay(500);
}
//wird unendlich wiederholt
//hier wird das eigentliche Programm geschrieben/ausgeführt
//Funktionsaufruf XY
}
/*
************************************
***** UPs ****
************************************
*/
//Funktion XY
//Übergabewerte:
//Rückgabewert:
/*
**Arbeitsauftrag: Entwurf einer einfachen Lüftersteuerung mit Arduino**
---
**Anforderungstext:**
**Projektziel:**
Entwickle eine Lüftersteuerung mit Pulsweitenmodulation (PWM) unter Verwendung eines Arduino Mikrocontrollers. Das System soll die Geschwindigkeit eines Lüfters basierend auf Umgebungstemperatur variieren und eine visuelle Rückmeldung über LEDs bieten. Ein Taster soll verwendet werden, um zwischen manuellem und automatischem Modus zu wechseln.
**Funktionalitäten:**
1. **PWM-Steuerung des Lüfters:** Die Lüfterdrehzahl soll über PWM geregelt werden, um die Geschwindigkeit stufenlos anzupassen.
2. **Temperatursensor:** Integriere einen Temperatursensor, der die Umgebungstemperatur überwacht. Der Sensor soll die Grundlage für die automatische Regelung der Lüftergeschwindigkeit bilden.
3. **Automatischer Modus:** Implementiere einen automatischen Modus, in dem die Lüftergeschwindigkeit basierend auf der gemessenen Temperatur angepasst wird. Definiere Schwellenwerte für verschiedene Temperaturbereiche und passe die PWM entsprechend an.
4. **Manueller Modus:** Ein Taster soll es dem Benutzer ermöglichen, zwischen automatischem und manuellem Modus zu wechseln. Im manuellen Modus soll der Benutzer die Lüftergeschwindigkeit mit dem Taster selbst einstellen können.
5. **LED-Statusanzeigen:** Verwende LEDs als visuelle Rückmeldung. Eine LED soll anzeigen, ob der Lüfter im automatischen oder manuellen Modus betrieben wird. Eine andere LED soll anzeigen, ob der Lüfter aktiv ist oder nicht.
**Zu verwendende Komponenten:**
- Arduino Mikrocontroller (z.B. Arduino Uno)
- Lüfter
- Temperatursensor (z.B. LM35)
- Taster
- LEDs
- Widerstände und Verbindungskabel
**Arbeitsaufteilung:**
1. **Hardware-Setup:** Verbinde die Komponenten gemäß dem Schaltplan und stelle sicher, dass sie korrekt funktionieren.
2. **Programmierung:** Schreibe den Code für den Arduino, der die Funktionalitäten gemäß den Anforderungen implementiert. Teste den Code gründlich, um sicherzustellen, dass alle Funktionen ordnungsgemäß arbeiten.
3. **Integration und Feinabstimmung:** Integriere die Hardware mit dem geschriebenen Code und führe Tests durch, um sicherzustellen, dass das System wie erwartet funktioniert. Feineinstellungen können erforderlich sein, um die Steuerung der Lüftergeschwindigkeit und die Temperaturregelung zu optimieren.
**Lieferbarer Endzustand:**
Ein funktionsfähiges System, das die Geschwindigkeit eines Lüfters basierend auf der Umgebungstemperatur automatisch regelt und es dem Benutzer ermöglicht, zwischen automatischem und manuellem Modus zu wählen. Visuelle Rückmeldungen über LEDs sollen den aktuellen Betriebszustand anzeigen.
---
**Tipps zur Umsetzung:**
1. **Pseudocode für die Hauptfunktionen:**
- **Setup():**
- Initialisiere die Pins für den Lüfter, den Temperatursensor, den Taster und die LEDs.
- Definiere die PWM-Pin für den Lüfter und die Digitalpins für den Taster und die LEDs.
- **Loop():**
- Lese die Temperatur vom Temperatursensor aus.
- Überprüfe den aktuellen Modus (automatisch/manuell) basierend auf dem Tasterzustand.
- Wenn im automatischen Modus:
- Vergleiche die gemessene Temperatur mit vordefinierten Schwellenwerten.
- Passe die PWM für den Lüfter entsprechend an, um die Temperatur zu regulieren.
- Aktiviere die entsprechenden LEDs zur Anzeige des Betriebsmodus.
- Wenn im manuellen Modus:
- Überwache den Tasterzustand, um die Lüftergeschwindigkeit zu ändern.
- Aktualisiere die PWM für den Lüfter entsprechend der Tasterbetätigung.
- Aktiviere die entsprechenden LEDs zur Anzeige des Betriebsmodus.
- **Funktionen für LED-Steuerung:**
- Definiere Funktionen, um die LEDs basierend auf dem Betriebsmodus und dem Lüfterstatus zu steuern.
2. **Strukturierte Programmierung:**
- Teile den Code in übersichtliche Funktionen auf, um die Lesbarkeit zu verbessern.
- Verwende aussagekräftige Variablennamen, um den Code verständlicher zu machen.
- Kommentiere komplexe Abschnitte des Codes, um die Funktionalität zu erklären.
3. **Testen und Debuggen:**
- Führe regelmäßige Tests durch, um sicherzustellen, dass jede Funktion wie erwartet funktioniert.
- Verwende serielle Ausgaben, um Debugging-Informationen zu erhalten und potenzielle Probleme zu identifizieren.
- Behalte den Seriellen Monitor im Auge, um Fehlermeldungen und Statusinformationen anzuzeigen.
4. **Dokumentation:**
- Dokumentiere den Code klar und präzise, einschließlich der Verwendung von Hardware und Bibliotheken.
- Beschreibe den Schaltplan und die Verdrahtung, um zukünftigen Benutzern eine einfache Nachvollziehbarkeit zu ermöglichen.
5. **Erweiterungsmöglichkeiten:**
- Betrachte Möglichkeiten zur Erweiterung des Systems, z.B. die Integration eines LCD-Displays zur Anzeige von Temperaturwerten oder zusätzlicher Sensoren für erweiterte Steuerungsmöglichkeiten.
- Experimentiere mit verschiedenen PWM-Frequenzen und Temperaturschwellenwerten, um die Leistung des Systems zu optimieren.
Durch die Einhaltung dieser Tipps können die Schüler eine gut strukturierte und funktionale Lüftersteuerung mit PWM implementieren und gleichzeitig wertvolle Erfahrungen im Bereich der Embedded-Programmierung sammeln.
*/