Ser­vo­mo­tor mit Poten­tio­me­ter bewegen

// benötigte Bibliothek einbinden 
#include "Servo.h"

// Bezeichnung des Motors 
Servo Motor; 

// speichert den analogen Wert des Drehpotentiometers  
int ReglerWert; 

// Position des Motors 
int Position; 

void setup()  
{
  // Motor an Pin 9 angeschlossen (attach)
  Motor.attach(9); 
}

void loop()
{
  int ReglerWert = analogRead(A0);   
  /*
    umwandeln des gelesenen Wertes in die Drehung des Motors 
    von 0 bis 1023 (analoger Sensorwert)
    auf 0 bis 180 (Drehung des Motors)
  */   
  Position = map(ReglerWert, 0, 1023, 0, 180);

  // Motor zur Position bewegen
  Motor.write(Position);
}

Letzte Aktualisierung:

LEDs mit for-Schlei­fen dimmen

int LED = 6;

void setup()
{
  // bei analogWrite ist kein setup notwendig
}

void loop()
{
  for (int i = 0; i < 250; i += 10)
  {
    // LED in 10er-Schritten heller werden lassen
    analogWrite(LED, i);
    delay(200);
  }

  for (int i = 255; i >= 0; i -= 10)
  {
    // LED in 10er-Schritten heller werden lassen
    analogWrite(LED, i);
    delay(200);
  }
}

Letzte Aktualisierung:

LED mit Poten­tio­me­ter dimmen

int ReglerWert;
int REGLER = A0;
int LED = 6;

void setup()
{
  pinMode(LED, OUTPUT);
}

void loop()
{ 
  ReglerWert = analogRead(REGLER); 
  analogWrite (LED, map(ReglerWert, 0, 1023, 0, 255));
}

Letzte Aktualisierung:

Klopf­zei­chen pie­zo­elek­tri­schen Keramik-Sensor

int LED = 7;
int PIEZO = A0; 
int LAUTSPRECHER = 5;
int SensorWert;

void setup()
{ 
  pinMode(LED, OUTPUT);
  pinMode(LAUTSPRECHER, OUTPUT);

  // Seriellen Monitor starten 
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}
}

void loop() 
{ 
  SensorWert = analogRead(PIEZO);   
  /* 
    damit der Auslösewert angepasst werden kann 
    Sensorwert anzeigen  
    kann danach auskommentiert werden 
  */ 
  Serial.println(SensorWert);

  /*  
    Wert festlegen an dem LED/Lautsprecher aktiviert werden              
    diesen Wert zwischen 20 und 80 anpassen, 
    wenn Klopfzeichen nicht (oder zu oft) erkannt werden 
  */
  int AusloeserWert = 40; 
  
  // wenn der Wert über dem Auslösewert liegt
  // LED/Lautsprecher einschalten  
  if (SensorWert >= AusloeserWert)  
  { 
    digitalWrite(LED, HIGH);  
    tone(LAUTSPRECHER, 1000);   
  
    /*   
      der Sensorwert braucht einige Zeit, 
      um wieder unter den Auslösewert zu fallen  
      der Wert muss eventuell größer oder kleiner sein  
    */ 
    delay(50); 
  } 
  else  
  { 
    digitalWrite(LED, LOW);  
    noTone(LAUTSPRECHER);
  }
}

Letzte Aktualisierung:

LED mit Sound­sen­sor schalten

// analoger Pin Soundsensor
int SOUNDSENSOR = A0;

int LED = 7;

// Status der LED: ein- oder ausgeschaltet
bool Status = false;
long AnalogWert;

void setup() 
{
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() 
{
  AnalogWert = analogRead(SOUNDSENSOR);

  // Wert, bei dem die LED leuchten soll, 
  // muss mit Hilfe des Seriellen Plotters angepasst werden
  Serial.println(AnalogWert);

  if (AnalogWert > 600) 
  {
    Status = !Status;

    // LED schalten: ein- oder ausschalten
    digitalWrite(LED, Status);

    // kurzes delay, damit die LED nicht sofort wieder geschaltet wird
    delay(100);
  }
}

Letzte Aktualisierung:

LED mit Relais schalten

Inhalts­ver­zeich­nis

Ardui­no UNO

int RELAIS = 7;

void setup()
{
  // Zufallsgenerator starten   
  randomSeed(analogRead(A0)); 
  pinMode(RELAIS, OUTPUT);
}

void loop()
{
  // delay zwischen 2000 und 5000 Millisekunden
  int Wartezeit = random(2000, 5000);
  delay(Wartezeit);

  // Relais schalten
  digitalWrite(RELAIS, HIGH);

  Wartezeit = random(2000, 5000);
  delay(Wartezeit);

  digitalWrite(RELAIS, LOW);
}

ESP-Wroom

int RELAIS = 19;

void setup()
{
  // Zufallsgenerator starten   
  randomSeed(analogRead(A0)); 
  pinMode(RELAIS, OUTPUT);
}

void loop()
{
  // delay zwischen 2000 und 5000 Millisekunden
  int Wartezeit = random(2000, 5000);
  delay(Wartezeit);

  // Relais schalten
  digitalWrite(RELAIS, HIGH);

  Wartezeit = random(2000, 5000);
  delay(Wartezeit);

  digitalWrite(RELAIS, LOW);
}

Letzte Aktualisierung:

Lauf­licht Gestensensor

#include "Arduino_APDS9960.h"

// Array LEDs mit den jeweiligen Pins
byte LED[8] = {3, 4, 5, 6, 7, 8, 9};

// Anzahl der LEDs ermitteln
byte LEDMax = sizeof(LED);

int Leuchtdauer = 200;

// Status LED: false -> aus, true -> ein
bool Status;

void setup()
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}

  // APDS.begin() -> Sensor starten
  if (!APDS.begin())
  {
    Serial.println("Sensor nicht entdeckt, bitte Kabel testen!");
  }
  else Serial.println("Initialisierung erfolgreich!");

  /*
    GestureSensitivity -> Empfindlichkeit:
    je höher der Wert, desto empfindlicher, allerdings kann dann
    eine falsche Geste entdeckt werden
    Standardwwert: 80
  */
  APDS.setGestureSensitivity(90);
  Serial.println("Gesten entdecken ...");

  for (int i = 0; i < LEDMax ; i++)
  {
    pinMode(LED[i], OUTPUT);
  }
}

void loop()
{
  if (APDS.gestureAvailable())
  {
    /*
      Konstanten für die Gesten:
      GESTURE_UP -> nach oben
      GESTURE_DOWN -> nach unten
      GESTURE_LEFT -> nach links
      GESTURE_RIGHT -> nach rechts 
    */  
    int Geste = APDS.readGesture();
    switch (Geste)
    {
      case GESTURE_UP:
        Serial.println("oben");
        LEDSchalten(true);
        break;

      case GESTURE_DOWN:
        Serial.println("unten");
        LEDSchalten(false);
        break;

      case GESTURE_RIGHT:
        Serial.println("links");

        // alle LEDs ausschalten
        LEDSchalten(false);
        for (int i = 0; i < LEDMax; i++)
        {
          digitalWrite(LED[i], HIGH);
          delay(Leuchtdauer);
          digitalWrite(LED[i], LOW);
        }
        break;

      case GESTURE_LEFT:
        Serial.println("rechts");

        // alle LEDs ausschalten
        LEDSchalten(false);
        for (int i = LEDMax - 1; i >= 0; i--)
        {
          digitalWrite(LED[i], HIGH);
          delay(Leuchtdauer);
          digitalWrite(LED[i], LOW);
        }
        break;
    }
  }
}

void LEDSchalten(bool Status)
{
  for (int i = 0; i < LEDMax; i++)
  {
    digitalWrite(LED[i], Status);
  }
}

Letzte Aktualisierung:

Alarm­an­la­ge Gestensensor

#include "Arduino_APDS9960.h"

int LED = 7;

// LED beim Start aus
bool Status = false;

int LAUTSPRECHER = 10;

void setup()
{
  pinMode(LED, OUTPUT);
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}

  // APDS.begin() -> Sensor starten
  if (!APDS.begin())
  {
    Serial.println("Sensor nicht entdeckt, bitte Kabel testen!");
  }

  else Serial.println("Initialisierung erfolgreich!");
}

void loop()
{
  // Entfernung des Objektes lesen
  if (APDS.proximityAvailable())
  {
    int Naehe = APDS.readProximity();

    // zu Kontrollzwecken Variable Naehe anzeigen
    // Serial.println(Naehe);

    /*
      maximaler Abstand: 255
      250 ca. 15 cm
      100 ca. 7 cm
      50  ca. 5 cm
      minimaler Abstand: 0
    */
    if (Naehe < 100) LEDSchalten(true);
    else LEDSchalten(false);
  }
}

void LEDSchalten(bool Status)
{
  digitalWrite(LED, Status);
  if (Status) tone(LAUTSPRECHER, 1000);
  else noTone(LAUTSPRECHER);
}

Letzte Aktualisierung:

Kli­ma­an­la­ge Transistor

#include "DHT.h"
#include "LiquidCrystal_I2C.h"

// LCD einen Namen zuweisen
LiquidCrystal_I2C lcd(0x27, 20, 4);

// Pin des Transistors
int TRANSISTOR = 8;

// Pin DHT22
int SENSOR_DHT = 9;

// Sensortyp festlegen
// DHT22 oder DHT11
#define SensorTyp DHT22

// Sensor DHT einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);

void setup()
{
  // LCD einschalten
  lcd.init();
  lcd.backlight();
  pinMode(TRANSISTOR, OUTPUT);

    // Sensor DHT starten
  dht.begin();
}

void loop()
{
  // Temperatur lesen
  float Temperatur = dht.readTemperature();

  // in Strings umwandeln, . durch , ersetzen
  String AnzeigeTemperatur = String(Temperatur);
  AnzeigeTemperatur.replace(".", ",");

  // Anzeige LCD
  lcd.setCursor(0, 0);
  lcd.print("Temperatur: ");
  lcd.setCursor(0, 1);

  // \337C -> °
  lcd.print(AnzeigeTemperatur + " \337C -> DHT22");
  // wenn die Temperatur > 25 -> Lüfter einschalten
  if (Temperatur > 22)
  {
    digitalWrite(TRANSISTOR, HIGH);
    lcd.setCursor(0, 3);
    lcd.print("L\365fter eingeschaltet");
  }

  // Lüfter ausschalten
  else
  {
    digitalWrite(TRANSISTOR, LOW);
    lcd.setCursor(0, 3);
    // \365 -> ü
    lcd.print("L\365fter ausgeschaltet");
  }

  // Messintervall
  delay(2000);
}

Letzte Aktualisierung:

mp3-Play­er DFPlay­er Mini

Steue­rung im Seri­el­len Monitor

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

// RX/TX Port definieren
SoftwareSerial DFPlayerSoftwareSerial(3, 4);

// Name des Players
DFRobotDFPlayerMini mp3Player;

int Lautstaerke = 15;
/*
  Schalter für die Pausenfunktion
  Pause == true -> Wiedergabe gestoppt
  Pause == false -> Wiedergabe neu starten
*/
bool Pause = false;

void setup() 
{
  DFPlayerSoftwareSerial.begin(9600);
  Serial.begin(9600);

  delay(1000);
  
  // Player starten
  // falls die Parameter true, true nicht funktionieren
  // mp3Player.begin(DFPlayerSoftwareSerial, false, true);
  mp3Player.begin(DFPlayerSoftwareSerial, true, true);
  /*
    Equalizer:
    mp3Player.EQ(DFPLAYER_EQ_NORMAL);
    mp3Player.EQ(DFPLAYER_EQ_POP);
    mp3Player.EQ(DFPLAYER_EQ_ROCK);
    mp3Player.EQ(DFPLAYER_EQ_JAZZ);
    mp3Player.EQ(DFPLAYER_EQ_CLASSIC);
    mp3Player.EQ(DFPLAYER_EQ_BASS);
  */
  mp3Player.EQ(DFPLAYER_EQ_ROCK);

  // Lautstärke 1 .. 30
  mp3Player.volume(Lautstaerke);
  
  // zufällige Wiedergabe starten
  mp3Player.randomAll();

  // Menü
  Serial.println("-----------------------------");
  Serial.println("n   = nächster Titel");
  Serial.println("v   = voheriger Titel");
  Serial.println("+   = Laustärke +");
  Serial.println("-   = Lautstärke -");
  Serial.println("s   = Stopp/Weiter");
  Serial.println("z   = zufällige Wiedergabe");
  Serial.println("m   = Menü anzeigen");
  Serial.println("1-9 = Verzeichnis 1-9 spielen");  
  Serial.println("-----------------------------");
}

void loop() 
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0) 
  {
    // Eingabe im Seriellen Monitor lesen
    char Zeichen = Serial.read();

    // wenn die Eingabe eine Zahl ist
    if (isdigit(Zeichen))
    {
      // char in String umwandeln, anschließend zu int konvertieren
      String Zahl = String(Zeichen);
      int Nummer = Zahl.toInt();
      Serial.println("Spiele Verzeichnis " + String(Nummer));
      mp3Player.loopFolder(Nummer);
      Pause = false;
    }

    // - -> Lautstärke -
    if (Zeichen == '-') 
    {
      if (Lautstaerke > 2) Lautstaerke = Lautstaerke - 2;
      mp3Player.volume(Lautstaerke);
      Serial.println("Lautst\u00e4rke: " + String(Lautstaerke));
    }

    // + -> Lautstärke +
    if (Zeichen == '+') 
    {
      if (Lautstaerke <= 28) Lautstaerke = Lautstaerke + 2;
      mp3Player.volume(Lautstaerke);
      Serial.println("Lautst\u00e4rke: " + String(Lautstaerke));
    }

    // n -> nächster Titel
    if (Zeichen == 'n') 
    {
      mp3Player.next();
      Serial.println("Nächster Titel");
    }

    // v -> vorheriger Titel
    if (Zeichen == 'v') 
    {
      mp3Player.previous();
      Serial.println("Vorheriger Titel");
    }

    // s -> Pause/Weiter
    if (Zeichen == 's') 
    {
      if (!Pause) 
      {
        mp3Player.stop();
      }
      if (Pause) 
      {
        mp3Player.start();
      }
      Pause = !Pause;
      if (Pause) Serial.println("Wiedergabe angehalten");
      if (!Pause) Serial.println("Wiedergabe fortgesetzt");
    }

    // z -> zufällige Wiedergabe Titel
    if (Zeichen == 'z') 
    {
      mp3Player.randomAll();
      Serial.println("Zufällige Wiedergabe gestartet");
      Pause = false;
    }

    // m -> Menü anzeigen
    if (Zeichen == 'm') 
    {
      Serial.println("-----------------------------");
      Serial.println("n   = nächster Titel");
      Serial.println("v   = voheriger Titel");
      Serial.println("+   = Laustärke +");
      Serial.println("-   = Lautstärke -");
      Serial.println("s   = Stopp/Weiter");
      Serial.println("z   = zufällige Wiedergabe");
      Serial.println("m   = Menü anzeigen");
      Serial.println("1-9 = Verzeichnis 1-9 spielen");  
      Serial.println("-----------------------------");
    }
  }
}

Steue­rung mit Tastenpad

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

// RX/TX Port definieren
SoftwareSerial DFPlayerSoftwareSerial(3, 4);

// Name des Players
DFRobotDFPlayerMini mp3Player;

int Taster;
int Lautstaerke = 20;
/*
  Schalter für die Pausenfunktion
  Pause == true -> Wiedergabe gestoppt
  Pause == false -> Wiedergabe neu starten
*/
bool Pause = false;

void setup()
{
  DFPlayerSoftwareSerial.begin(9600);
  Serial.begin(9600);

  // auf Seriellen Monitor warten
  while (!Serial);
  Serial.println();

  // Player starten
  mp3Player.begin(DFPlayerSoftwareSerial, false, true);
  /*
    Equalizer:
    mp3Player.EQ(DFPLAYER_EQ_NORMAL);
    mp3Player.EQ(DFPLAYER_EQ_POP);
    mp3Player.EQ(DFPLAYER_EQ_ROCK);
    mp3Player.EQ(DFPLAYER_EQ_JAZZ);
    mp3Player.EQ(DFPLAYER_EQ_CLASSIC);
    mp3Player.EQ(DFPLAYER_EQ_BASS);
  */
  mp3Player.EQ(DFPLAYER_EQ_ROCK);

  // Lautstärke 1 .. 30
  mp3Player.volume(Lautstaerke);
  
  // Wiedergabe starten
  mp3Player.enableLoopAll();
}

int Tasterabfrage()
{
  int Analogwert = analogRead(A0);
  // kurzes delay() -> doppelten Tastendruck so weit wie möglich verhindern
  delay(200);
  //Serial.println(Analogwert);
  /* 
     A0 gibt je nach Taster einen Wert aus
     über den Seriellen Monitor wird dieser Wert angezeigt
     und kann dann eventuell angepasst werden
  */
  // Serial.println(Analogwert);

  switch (Analogwert)
  {
    case 0 ... 20:
      Taster = 1;
      break;
    case 30 ... 60:
      Taster = 2;
      break;
    case  70 ... 120:
      Taster = 3;
      break;
    case 150 ... 200:
      Taster = 4;
      break;
    case 300 ... 400:
      Taster = 5;
      break;
    default:
      return 0;
  }
  
  // gedrückten Taster zurückgeben
  return Taster;
}

void loop()
{
  Taster = Tasterabfrage();
  // Taster links -> Lautstärke -
  if (Taster == 1)
  {
    if (Lautstaerke > 0) Lautstaerke = Lautstaerke - 2;
    mp3Player.volume(Lautstaerke);
    Serial.println("Lautst\u00e4rke: " + String(Lautstaerke));

  }
  // Taster oben Mitte -> nächster Titel
  if (Taster == 2)
  {
    mp3Player.next();
  }
  // Taster unten Mitte -> vorheriger Titel
  if (Taster == 3)
  {
    mp3Player.previous();
  }
  // Taster rechts -> Lautstärke +
  if (Taster == 4)
  {
    if (Lautstaerke < 30) Lautstaerke = Lautstaerke + 2;
    mp3Player.volume(Lautstaerke);
    Serial.println("Lautst\u00e4rke: " + String(Lautstaerke));
  }
  // Taster außen -> Pause/Weiter
  if (Taster == 5)
  {
    if (!Pause)
    {
      Pause = !Pause;
      mp3Player.stop();
    }
    if (Pause)
    {
      Pause = !Pause;
      mp3Player.start();
    }
  }
}

Letzte Aktualisierung: