Aufzugprojekt

In der Schule kann es hinsichtlich der Benotung zu Problemen kommen, wenn alle Schüler individuell arbeiten.

Aus diesem Grund entwickeln wir für unsere Kunden umfangreiche Projekte, die grundlegend vor-konfektioniert sind, aber dennoch raum für kreatives programmieren lassen.

Unser Aufzug ist eines der gängigsten Projekte, welches im Unterricht Anwendung findet.

 

Arduino Aufzug-Projekt für Arduino-Kurse und Schulen.

Mit diesem vorgefertigtem Arduino-Projekt können Schüler ein realitätsnahes Aufzug-Modell konstruieren. Für die Verwendung des Projekts können die Materialien aus unseren Lernsets verwendet werden, die Schüler arbeiten also mit ihnen bekannten Materialien. Das Modul lässt sich variabel erweitern, um ein höheres Anspruchsniveau im Unterricht anbieten zu können.

 

Vorteil für Lehrende

– Individuelle Aufgabenstellungen

– Bessere Vergleichbarkeit bei der Notengebung

– Kreative Lösungsmöglichkeiten

– Nutzung der Materialien, die die Schüler mit den Lernsets kennengelernt haben

– Nachhaltige Verwendungsmöglichkeit aufgrund robuster Materialien. Einzelteile stellen wir im Bedarfsfall gerne erneut zur Verfügung. Farbwünsche können telefonisch entgegengenommen werden.

 

Aufgabenstellungen

1) Material: Arduino, Kabel, Schrittmotor

– Zwei Etagen im widerholten Rhytmus anfahren. Beispiel eines Baustellenaufzugs. Es muss lediglich der Schrittmotor programmiert werden.

 

2) Material: Arduino, Kabel, Schrittmotor, LCD-Display

– Zwei Etagen im widerholten Rhytmus anfahren. Die Aktuelle Etage wird im LCD angezeigt.

 

3)Material: Arduino, Kabel, Schrittmotor, Piezo-Piepser

-Die erreichte Etage wird mit einem Piezo-Speaker akustisch ausgegeben (3x piepsen = 3. Etage)

 

4) Material: Arduino, Kabel, Schrittmotor, 2x Taster

– Zwei Etagen werden je nach Tastendruck der jeweiligen Etage angefahren. Es müssen lediglich der Schrittmotor und zwei Taster programmiert werden.

 

5) Material: Arduino, Kabel, Schrittmotor, 2x Taster, LCD-Display

– Zwei Etagen werden je nach Tastendruck der jeweiligen Etage angefahren. Die Nummer der jeweiligen Etage wird im Display angezeigt.

 

Aufgaben mit Erweiterungsmaterialien

– Der Aufzug stoppt in Abhängigkeit eines Lichtschrankensignals

– Die Etage wird auf einem zweiten Display (in der Gondel) angezeigt (LCD oder OLED Display).

– Die Etage wird mit einem mp3 Modul und einem kleinen Lautsprecher akustisch ausgegeben.

 

Es gibt viele weitere Möglichkeiten den Aufzug zu individualisieren

 

Ein Beispielcode mit folgendem Material könnte so aussehen (geprüft):

  • 4x Lichtschranke (eine pro Etage)
  • 4x Taster (einer pro Etage)
  • OLED Display (128×64)

 

 

 

#include <Stepper.h> // Hinzufügen der Programmbibliothek.
int SPU = 2048; // Schritte pro Umdrehung.
Stepper Motor(SPU, 11,9,10,8); // Der Schrittmotor erhält die Bezeichnung "Motor" und es wird angegeben an welchen Pins der Motor angeschlossen ist.
int T1=22, T2=2, T3=3, T4=4, S1=17, S2=16, S3=15, S4=14;// Pins für Taster und Sensoren festlegen
int  sT1=0, sT2=0, sT3=0, sT4=0, sS1=0, sS2=0, sS3=0, sS4=0;//Statusvariablen für Taster und Sensoren festlegen
int EtageSoll=0, EtageIst=0;// Eingabespeicher für Taster und Sensoren festlegen
int F=0; // Variable für den Fahrmodus oder Pausemodus
int EtageAlt=0;
int EtageSollAlt=0;
//OLED initialisieren
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;

void setup() //Hier beginnt das Setup.
{
Serial.begin(9600);
Motor.setSpeed(6); // Angabe der Geschwindigkeit in Umdrehungen pro Minute.
pinMode (T1, INPUT);
pinMode (T2, INPUT);
pinMode (T3, INPUT);
pinMode (T4, INPUT);
pinMode (S1, INPUT);
pinMode (S2, INPUT);
pinMode (S3, INPUT);
pinMode (S4, INPUT);
//OLED Setup
Wire.begin();
Wire.setClock(400000L);
oled.begin(&Adafruit128x64, I2C_ADDRESS);
  oled.setFont(Verdana12); // Auswahl der Schriftart
  oled.clear(); //Löschen der aktuellen Displayanzeige
  oled.println("TESTFAHRT"); //Text in der ersten Zeile. "Println" sorgt dabei für einen Zeilensprung.
  oled.println("Aufzug faehrt"); // Text in der zweiten Zeile. "Println" sorgt dabei für einen Zeilensprung.
  oled.print("zum Startpunkt"); // Text in der dritten Zeile. 
  delay (2000);
// Aufzug in Ausgangsposition fahren
 for (int i = 0; i <= 1; i++)
{
Motor.step(-1);
sS1 = digitalRead(S1);
if (sS1!=1) i=0;
 Serial.println(sS1);
}
EtageIst=0;
EtageSoll=0;
delay(1000);
Serial.println("Setup beendet");
oled.clear();
oled.println("Betriebsbereit");
oled.print("Etage:   ");
oled.println(EtageIst);
oled.print("Ziel:        ");
oled.print(EtageSoll);
}


void loop()
{
// Eingabe
Serial.print("Warte auf Etagenauswahl ");
sT1 = digitalRead(T1); if (sT1==1) EtageSoll=0;
sT2 = digitalRead(T2); if (sT2==1) EtageSoll=1;
sT3 = digitalRead(T3); if (sT3==1) EtageSoll=2;
sT4 = digitalRead(T4); if (sT4==1) EtageSoll=3;
// Vor dem auslesen der neuen Position wird die alte Position gespeichert umd Änderungen detektieren zu können
//Auslesen der aktuellen Aufzugposition
sS1 = digitalRead(S1); if (sS1==1) EtageIst=0;
sS2 = digitalRead(S2); if (sS2==1) EtageIst=1;
sS3 = digitalRead(S3); if (sS3==1) EtageIst=2;
sS4 = digitalRead(S4); if (sS4==1) EtageIst=3;
Serial.print(sT1);
Serial.print(EtageSoll);
Serial.println(EtageIst);
//Fahrmodus
 if (EtageSoll-EtageIst >0) Motor.step(8); // Wenn der Wert über 0 ist (Etage ist höher als Aufzugsposition), dann fahre hoch.
 if (EtageSoll-EtageIst <0) Motor.step(-8); // Wenn der Wert unter 0 ist (Etage ist tiefer als Aufzugsposition), dann fahre runter.
//Display Ansteuerung
   if (EtageAlt!=EtageIst || EtageSoll!=EtageSollAlt) // Wenn der Aufzug fährt und zwischenzeitlich andere Etagen erreicht, ODER wenn die Etagenwahl geändert wurde, wird das Display aktualisiert mit den neuen Werten
   {
    oled.clear();
    oled.println("Betriebsbereit");
    oled.print("Etage:   ");
    oled.println(EtageIst);
    oled.print("Ziel:        ");
    oled.print(EtageSoll);
   } 
EtageAlt=EtageIst;
EtageSollAlt=EtageSoll;
 }