.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _1.1.1_py: 1.1.1 Blinkende LED ========================= Einführung ----------------- In diesem Projekt lernen wir, wie man eine blinkende LED durch Programmierung zum Blinken bringt. Durch Ihre Einstellungen kann Ihre LED eine Reihe interessanter Phänomene erzeugen. Legen Sie jetzt los. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir die folgenden Komponenten. .. image:: ../img/blinking_led_list.png :width: 800 :align: center Es ist sicherlich praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können sie auch einzeln über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENBESCHREIBUNG - KAUF-LINK * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| Schaltplan --------------------- In diesem Experiment verbinden Sie einen 220Ω Widerstand mit der Anode (dem langen Pin der LED), dann den Widerstand mit 3,3 V und schließen die Kathode (den kurzen Pin) der LED an GPIO17 des Raspberry Pi an. Um eine LED einzuschalten, müssen wir GPIO17 auf das niedrige (0V) Level bringen. Dieses Phänomen können wir durch Programmierung erreichen. .. note:: **Pin11** bezieht sich auf den 11. Pin des Raspberry Pi von links nach rechts, und die entsprechenden **wiringPi** und **BCM** Pin-Nummern sind in der folgenden Tabelle angegeben. In den C-Spracheninhalten machen wir GPIO0 gleich 0 in der wiringPi. In den Python-Spracheninhalten ist BCM 17 in der BCM-Spalte der folgenden Tabelle 17. Gleichzeitig sind sie dasselbe wie der 11. Pin am Raspberry Pi, Pin 11. ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 ============ ======== ======== === .. image:: ../img/image48.png :width: 800 :align: center Experimentelle Verfahren ----------------------------- **Schritt 1:** Schaltkreis aufbauen. .. image:: ../img/image49.png :width: 800 :align: center **Schritt 2:** Navigieren Sie zum Ordner des Codes und führen Sie ihn aus. 1. Wenn Sie einen Bildschirm verwenden, empfehlen wir Ihnen, die folgenden Schritte zu befolgen. Finden Sie 1.1.1_BlinkingLed.py und doppelklicken Sie darauf, um es zu öffnen. Jetzt sind Sie in der Datei. Klicken Sie auf **Run** ->\ **Run Module** im Fenster, und die folgenden Inhalte werden angezeigt. Um es zu stoppen, klicken Sie einfach auf das X-Symbol oben rechts, um es zu schließen, und dann kehren Sie zum Code zurück. Wenn Sie den Code ändern, müssen Sie ihn vor dem Klicken auf **Run Module (F5)** zuerst speichern. Dann können Sie die Ergebnisse sehen. 2. Wenn Sie sich aus der Ferne in den Raspberry Pi einloggen, geben Sie den Befehl ein: .. raw:: html .. code-block:: cd ~/raphael-kit/python .. note:: Wechseln Sie über ``cd`` zum Pfad des Codes in diesem Experiment. **Schritt 3:** Führen Sie den Code aus .. raw:: html .. code-block:: sudo python3 1.1.1_BlinkingLed.py .. note:: Hier bedeutet sudo - Superuser do, und python bedeutet, die Datei mit Python auszuführen. Nachdem der Code ausgeführt wurde, sehen Sie die blinkende LED. **Schritt 4:** Wenn Sie die Code-Datei 1.1.1_BlinkingLed.py bearbeiten möchten, drücken Sie ``Ctrl + C``, um die Ausführung des Codes zu stoppen. Geben Sie dann den folgenden Befehl ein, um 1.1.1_BlinkingLed.py zu öffnen: .. raw:: html .. code-block:: nano 1.1.1_BlinkingLed.py .. note:: nano ist ein Texteditor-Tool. Mit dem Befehl wird die Code-Datei 1.1.1_BlinkingLed.py mit diesem Tool geöffnet. Drücken Sie ``Ctrl+X``, um zu beenden. Wenn Sie den Code geändert haben, erscheint eine Aufforderung, ob Sie die Änderungen speichern möchten oder nicht. Geben Sie ``Y`` (speichern) oder ``N`` (nicht speichern) ein. Drücken Sie dann ``Enter`` zum Beenden. Geben Sie erneut nano 1.1.1_BlinkingLed.py ein, um den Effekt nach der Änderung zu sehen. **Code** Im Folgenden finden Sie den Programmcode: .. note:: Sie können den untenstehenden Code **Bearbeiten/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Doch bevor Sie dies tun, müssen Sie zum Quellcode-Pfad wie ``raphael-kit/python`` gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um das Ergebnis zu sehen. .. raw:: html .. code-block:: python #!/usr/bin/env python3 import RPi.GPIO as GPIO import time LedPin = 17 def setup(): # Set the GPIO modes to BCM Numbering GPIO.setmode(GPIO.BCM) # Set LedPin's mode to output,and initial level to High(3.3v) GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH) # Define a main function for main process def main(): while True: print ('...LED ON') # Turn on LED GPIO.output(LedPin, GPIO.LOW) time.sleep(0.5) print ('LED OFF...') # Turn off LED GPIO.output(LedPin, GPIO.HIGH) time.sleep(0.5) # Define a destroy function for clean up everything after the script finished def destroy(): # Turn off LED GPIO.output(LedPin, GPIO.HIGH) # Release resource GPIO.cleanup() # If run this script directly, do: if __name__ == '__main__': setup() try: main() # When 'Ctrl+C' is pressed, the program destroy() will be executed. except KeyboardInterrupt: destroy() **Code-Erklärung** .. code-block:: python #!/usr/bin/env python3 Wenn das System dies erkennt, wird es den Installationspfad von Python in der env-Einstellung suchen und dann den entsprechenden Interpreter aufrufen, um den Vorgang abzuschließen. Dies verhindert, dass der Benutzer Python nicht im Standardpfad ``/usr/bin`` installiert hat. .. code-block:: python import RPi.GPIO as GPIO Auf diese Weise wird die RPi.GPIO-Bibliothek importiert und dann eine Variable, GPIO, definiert, um RPI.GPIO im folgenden Code zu ersetzen. .. code-block:: python import time Time-Paket importieren, für die Zeitverzögerungsfunktion im folgenden Programm. .. code-block:: python LedPin = 17 Die LED ist mit dem GPIO17 des T-förmigen Erweiterungsboards verbunden, also BCM 17. .. code-block:: python def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH) Setze den Modus von LedPin auf Ausgang und das Anfangsniveau auf High (3,3V). Es gibt zwei Möglichkeiten, die IO-Pins auf einem Raspberry Pi innerhalb von RPi.GPIO zu nummerieren: BOARD-Nummern und BCM-Nummern. In unseren Projekten verwenden wir BCM-Nummern. Sie müssen jeden Kanal, den Sie als Eingang oder Ausgang verwenden, einrichten. .. code-block:: python GPIO.output(LedPin, GPIO.LOW) Setze GPIO17(BCM17) auf 0V (niedriges Niveau). Da die Kathode der LED an GPIO17 angeschlossen ist, leuchtet die LED auf. .. code-block:: python time.sleep(0.5) Verzögerung um 0,5 Sekunden. Hierbei handelt es sich um die Verzögerungsfunktion in der C-Sprache, die Einheit ist Sekunden. .. code-block:: python def destroy(): GPIO.cleanup() Definiere eine Zerstörungsfunktion, um nach Beendigung des Skripts alles aufzuräumen. .. code-block:: python if __name__ == '__main__': setup() try: main() # When 'Ctrl+C' is pressed, the program destroy() will be executed. except KeyboardInterrupt: destroy() Das ist die allgemeine Laufstruktur des Codes. Wenn das Programm zu laufen beginnt, initialisiert es den Pin durch Ausführung von setup() und führt dann den Code in der main()-Funktion aus, um den Pin auf hohe und niedrige Niveaus zu setzen. Wenn ``Ctrl+C`` gedrückt wird, wird das Programm destroy() ausgeführt. Phänomen-Bild -------------------- .. image:: ../img/image54.jpeg :width: 800 :align: center