Funduino Elevator - modelo de ascensor para la enseñanza
FunduinoÚltima actualización el
Die Module des Aufzugmodells einzeln programmieren
Was der Funduino Elevator ist
Die Bauteile der Bodenplatte
Die Bauteile des Aufzugturms
Die Pinbelegung im Überblick
1 / 8
Der kapazitive Schalter
Kapazitiven Schalter auslesen
int PowerPin = 34; // Sensor Pin
int sensorPin = 35; // Sensor Pin
void setup()
{
Serial.begin(9600); // Starten der seriellen Schnittstelle
pinMode(PowerPin, OUTPUT); // Der Sensor wird am Mikrocontroller als Eingang definiert.
pinMode(sensorPin, INPUT); // Der Sensor wird am Mikrocontroller als Eingang definiert.
}
void loop()
{
int sensorWert = digitalRead(sensorPin); // Sensorwert auslesen
// Wurde der Sensor berührt?
if (sensorWert == HIGH)
{
Serial.println("Der Sensor wurde aktiviert!");
delay(500);
}
}Beleuchtung schalten und Schalter zurücksetzen
Beispielcode 1: Schalter nach der Berührung zurücksetzen
int PowerPin = 34; // Spannungsversorgung über den Pin 3 geht an VCC des Sensors.
int sensorPin = 2; // Sensor Ausgangs-Pin
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT); // Sensoreingang am Mikrocontroller
pinMode(PowerPin, OUTPUT); // Spannungsausgang für den Schalter
digitalWrite(PowerPin, HIGH);
}
void loop() {
int sensorWert = digitalRead(sensorPin); // Lese Sensorwert.
// Wurde der Sensor berührt?
if (sensorWert == HIGH) {
Serial.println("Der Sensor wurde berührt!");
delay(1000);
// Schalte sensor aus.
digitalWrite(PowerPin, LOW); // Schalte den Strom vom Schalter aus.
delay(500);
digitalWrite(PowerPin, HIGH); // Schalte den Strom vom Schalter wieder ein.
}
}Beispielcode 2: Hintergrundbeleuchtung selbst schalten
int PowerPin = 34; // VCC von dem Sensor.
int sensorPin = 35; // Sensor Pin
void setup() {
Serial.begin(9600);
pinMode(sensorPin, OUTPUT); // Hier wird der Pin des Mikrocontrollers, der mit dem AusagnagsPin des Moduls verbunden ist, als Ausgang festgelegt.
pinMode(PowerPin, OUTPUT);
digitalWrite(PowerPin, HIGH); //Schalter aktivieren
}
void loop()
{
digitalWrite(sensorPin, HIGH); // LED des Touch-Moduls aktivieren
delay(500);
digitalWrite(sensorPin, LOW); // LED des Touch-Moduls deaktivieren
delay(500);
}Der Lautsprecher ohne MP3
Schema: tone und noTone
tone(9, 100); // Der Lautsprecher an Pin 9 wird mit der Tonhöhe „100“ aktiviert delay(1000); // Pause mit 1000 Millisekunden, also 1 Sekunde – Der Lautsprecher bleibt für diese Zeit aktiv. noTone(9); // Der Lautsprecher an Pin 8 wird deaktiviert
Codebeispiel 1: Einfache Tonerzeugung
void setup(){} //Im Setup werden keine Informationen benötigt. Die Spannungsausgabe für den Pin an dem der Lautsprecher eine Spannungsausgabe benötigt (PinMode OUTPUT), wird im Sketch durch den Befehl "tone" automatisch festgelegt.
void loop()
{
tone(9, 100); //Im Hauptteil wird nun mit dem Befehl "tone ( x , y )" ein Ton abgegeben…
delay(1000); //…mit einer Dauer von 1 Sekunde.
noTone(9); //Der Ton wird abgeschaltet.
delay(1000); //Der Lautsprecher bleibt eine Sekunde aus.
}Codebeispiel 2: Abwechselnde Tonhöhen
void setup(){}
void loop()
{
tone(9, 100);
delay(1000);
noTone(9); //An dieser Stelle geht der erste Ton aus.
Tone(9, 200); // Der zweite Ton mit der neuen Tonhöhe “200” ertönt.
delay(1000); //… und zwar für eine Sekunde.
noTone(9); // An dieser Stelle geht der zweite Ton aus und der Loop-Teil des Sketches beginnt von vorn.
}Die Lichtschranken
Lichtschranke auslesen
int messwert = 0; //Unter der Variablen "Messwert" wird später der Messwert der Lichtschranke gespeichert.
void setup()
{ //Hier beginnt das Setup.
Serial.begin(9600); //Die Kommunikation mit dem Seriellen Port wird gestartet.
}
void loop() //Hier beginnt der Hauptteil
{
messwert = digitalRead(50); //Die Signalausgabe der Lichtschranke wird ausgelesen und unter der Variable „messwert“ gespeichert. Wenn die Lichtschranke unterbrochen wird, speichert der Mikrocontroller den Wert "1", ansonsten "0".
Serial.print("Lichtschrankensignal= "); //Ausgabe am seriellen Monitor
Serial.println(messwert); //…und im Anschluss der Messwert "1" bei unterbrochener Schranke, ansonsten "0".
}Der Lautsprecher mit MP3
1 / 3
MP3-Modul in Minimalform
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void setup()
{
mySoftwareSerial.begin(9600);
myDFPlayer.volume(30); //Lautstärke auf Maximum (30)
}
void loop()
{
myDFPlayer.play(1); //Spielt die erste MP3-Datei ab
delay(3000); // Nach dem Abspielen der Datei pausiert der Sketch für drei Sekunden.
}Der Servomotor der Aufzugtür
Servomotor der Aufzugtür
#include <Servo.h> //Die Servobibliothek wird aufgerufen.
Servo servoblau; //Erstellt für das Programm ein Servo mit dem Namen „servoblau“.
void setup()
{
servoblau.attach(37); //Servo wird mit Pin 37 verbunden.
}
void loop()
{
servoblau.write(0); //Position 1 ansteuern mit dem Winkel 0°.
delay(3000); //Das Programm stoppt für 3 Sekunden.
servoblau.write(90); //Position 2 ansteuern mit dem Winkel 90°.
delay(3000); //Das Programm stoppt für 3 Sekunden.
servoblau.write(180); //Position 3 ansteuern mit dem Winkel 180°.
delay(3000); //Das Programm stoppt für 3 Sekunden.
}Den Motor über den Motortreiber steuern
Motor über den Motortreiber steuern
int GSM1 = 8;
int in1 = 6;
int in2 = 7;
void setup()
{
pinMode(GSM1, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
}
void loop()
{
digitalWrite(in1, HIGH); // Motor 1 beginnt zu rotieren
digitalWrite(in2, LOW);
analogWrite(GSM1, 200); // Motor 1 soll mit der Geschwindigkeit "200" (max. 255) rotieren
delay(2000);
digitalWrite(in1, LOW); // Durch die Veränderung von HIGH auf LOW (bzw. LOW auf HIGH) wird die Richtung der Rotation verändert.
digitalWrite(in2, HIGH);
delay(2000);
digitalWrite(in1, LOW); // Anschließend sollen die Motoren 2 Sekunden ruhen.
digitalWrite(in2, LOW);
delay(2000);
}Das OLED-Display
1 / 7
OLED-Display beschriften
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;
void setup() {
Wire.begin();
Wire.setClock(400000L);
oled.begin(&Adafruit128x64, I2C_ADDRESS);
}
void loop()
{
oled.setFont(System5x7); // Auswahl der Schriftart
oled.clear(); //Löschen der aktuellen Displayanzeige
oled.println("Viel"); //Text in der ersten Zeile. "Println" sorgt dabei für einen Zeilensprung.
oled.print("Erfolg!"); // Text in der zweiten Zeile. Da es keine dritte Zeile gibt, wird hier kein Zeilenumsprung benötigt.
delay (2000);
}Codereferenz
Calificar la guía