Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

2.2.4 Reed-Schalter-Modul

Einführung

In diesem Projekt werden wir den Reed-Schalter kennenlernen, einen elektrischen Schalter, der mittels eines angelegten Magnetfelds funktioniert.

../_images/2.2.4reed_switch.png

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/2.2.4component.png

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

LED

KAUFEN

Reed-Schalter-Modul

KAUFEN

Schaltplan

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

GPIO22

Pin 15

3

22

../_images/reed_schematic.png ../_images/reed_schematic2.png

Experimentelle Verfahren

Schritt 1: Schaltung aufbauen.

../_images/2.2.4fritzing.png

Schritt 2: Verzeichnis wechseln.

cd ~/raphael-kit/c/2.2.4/

Schritt 3: Kompilieren.

gcc 2.2.4_ReedSwitch.c -lwiringPi

Schritt 4: Ausführen.

sudo ./a.out

Die grüne LED leuchtet, wenn der Code ausgeführt wird. Wenn ein Magnet in die Nähe des Reed-Schalter-Moduls gebracht wird, leuchtet die rote LED auf; entfernen Sie den Magneten und die grüne LED leuchtet erneut.

Bemerkung

Wenn es nach dem Ausführen nicht funktioniert oder ein Fehlerhinweis angezeigt wird: "wiringPi.h: Datei oder Verzeichnis nicht gefunden", beziehen Sie sich bitte auf Installieren und Überprüfen von WiringPi.

Code

#include <wiringPi.h>
#include <stdio.h>

#define ReedPin             0
#define Gpin                2
#define Rpin                3

void LED(char* color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == "RED")
    {
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == "GREEN")
    {
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
    else
        printf("LED Error");
}

int main(void)
{
    if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(ReedPin, INPUT);
    LED("GREEN");

    while(1){
        if(0 == digitalRead(ReedPin)){
            delay(10);
            if(0 == digitalRead(ReedPin)){
                LED("RED");
                printf("Detected Magnetic Material!\n");
            }
        }
        else if(1 == digitalRead(ReedPin)){
            delay(10);
            if(1 == digitalRead(ReedPin)){
                while(!digitalRead(ReedPin));
                LED("GREEN");
            }
        }
    }
    return 0;
}

Code-Erklärung

#define ReedPin             0
#define Gpin                2
#define Rpin                3

Die Pins GPIO17, GPIO27 und GPIO22 des T_Extension-Boards entsprechen den GPIO0, GPIO2 und GPIO3 in wiringPi. Weise GPIO0, GPIO2 und GPIO3 den Variablen ReedPin, Gpin und Rpin zu.

void LED(char* color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == "RED")
    {
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == "GREEN")
    {
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
    else
        printf("LED Error");
}

Erstelle eine Funktion LED() zur Steuerung der beiden LEDs. Das Parameter dieser Funktion ist color.

Wenn color gleich "RED" ist, setze Rpin auf HIGH (rote LED einschalten) und Gpin auf LOW (grüne LED ausschalten); wenn color gleich "GREEN" ist, dann schalte die grüne LED ein und die rote LED aus.

while(1){
        if(0 == digitalRead(ReedPin)){
            delay(10);
            if(0 == digitalRead(ReedPin)){
                LED("RED");
                printf("Detected Magnetic Material!\n");
            }
        }
        else if(1 == digitalRead(ReedPin)){
            delay(10);
            if(1 == digitalRead(ReedPin)){
                while(!digitalRead(ReedPin));
                LED("GREEN");
            }
        }
    }

Lese den Wert des Reed-Schalter-Moduls aus. Wenn der 2-mal gelesene Wert 0 ist, rufe LED("RED") auf, um die rote LED einzuschalten und drucke "Magnetisches Material erkannt!".

Wenn der Wert 1 ist, wird die grüne LED eingeschaltet.

Phänomen-Bild

../_images/2.2.4reed_switch.JPG