{"id":79018,"date":"2024-03-20T14:00:50","date_gmt":"2024-03-20T13:00:50","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-7-poprawki-w-kodzie-i-wlasne-funkcje\/"},"modified":"2026-04-08T11:00:06","modified_gmt":"2026-04-08T09:00:06","slug":"raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen","status":"publish","type":"post","link":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/","title":{"rendered":"Raspberry Pi Pico Kurs &#8211; #7 &#8211; Code-Korrekturen und eigene Funktionen"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Lesezeit<\/span> <span class=\"rt-time\"> 14<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"79018\" class=\"elementor elementor-79018 elementor-77338\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bc122e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bc122e1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4568949\" data-id=\"4568949\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-99a698f elementor-widget elementor-widget-text-editor\" data-id=\"99a698f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Im vorherigen Artikel haben wir einige der Funktionen des RP2040 Mikrocontrollers kennengelernt. Wir haben eine LED mit einem modulierten PWM-Signal gesteuert, ein analoges Signal von einem Fotowiderstand gelesen und eine Kommunikation mit einem Computer hergestellt. In diesem Artikel werden wir die Funktionen verwenden, die wir bereits gelernt haben, und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter zu vereinfachen. Unter Beibehaltung seiner Funktionalit\u00e4t.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ef0689 elementor-widget elementor-widget-image\" data-id=\"0ef0689\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODMzMzQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvNEdvdG93eS1aZXN0YXctZG8tbmF1a2ktcHJvZ3JhbW93YW5pYS16LVJhc3BiZXJyeS1QaS1QaWNvLVcuanBnIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"109\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg\" class=\"attachment-large size-large wp-image-83334\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-300x41.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-51aff18 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"51aff18\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-f25bfd9\" data-id=\"f25bfd9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-65e81f7 elementor-widget elementor-widget-image\" data-id=\"65e81f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"24136_3\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzYxNjMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvMjQxMzZfMy5qcGcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"273\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg\" class=\"attachment-medium size-medium wp-image-76163\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-1024x933.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3-768x700.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/24136_3.jpg 1080w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-2e02cc0\" data-id=\"2e02cc0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d09d11c elementor-widget elementor-widget-text-editor\" data-id=\"d09d11c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: bolder\">Kaufen Sie ein Set, um das Programmieren mit dem Raspberry Pi Pico W zu erlernen, und nutzen Sie die Vorteile des Kurses, der im Botland Blog verf\u00fcgbar ist!<\/span><\/p>\n<p>Im Set enthalten: Raspberry Pi Pico W-Modul, Kontaktplatte, Leitungen, LEDs, Widerst\u00e4nde, Tasten, Fotowiderst\u00e4nde, digitale Licht-, Temperatur-, Feuchtigkeits- und Drucksensoren, OLED-Display und ein USB-microUSB-Kabel.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d81675 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"4d81675\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">BEI BOTLAND NACHSEHEN<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-260c252 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"260c252\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-419ecb1 elementor-widget elementor-widget-text-editor\" data-id=\"419ecb1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: bolder;\">Inhaltsverzeichnis:<\/span><\/p>\n<ol style=\"background-color: #ffffff;\">\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-1-einstieg\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #1<\/span> &#8211; los geht&#8217;s&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-2-ein-paar-worte-zur-programmierung\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #2<\/span> &#8211; ein paar Worte zur Programmierung<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-3-erstes-programm\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #3<\/span> &#8211; erstes Programm<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #4<\/span> &#8211; wir beginnen mit der Programmierung<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-5-schleifen-variablen-und-bedingte-anweisungen\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #5<\/span> &#8211; Schleifen, Variablen und bedingte Anweisungen&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #6<\/span> &#8211; PWM, ADC und Kommunikation mit dem Computer<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #7<\/span> &nbsp;&#8211; Codekorrekturen und eigene Funktionen&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-8-unterbrechungen-und-alarme\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico &#8211; #8 <\/strong>&#8211; Unterbrechungen und Alarme<\/a><\/li>\n<li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<span style=\"font-weight: bolder;\">aspberry Pi Pico &#8211; #9<\/span> &#8211; Indikatortheorie und Timer<\/a><\/li><li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-10-arrays-strukturen-und-zustandsautomaten\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">&nbsp;R<strong>aspberry Pi Pico &#8211; #10<\/strong> &#8211; Arrays, Strukturen und Zustandsautomaten<\/a><\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6135474 elementor-widget elementor-widget-heading\" data-id=\"6135474\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Vor dem Start sollte das Team zusammengestellt werden<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d425e6 elementor-widget elementor-widget-image\" data-id=\"5d425e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0647\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ4MDAsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvSU1HXzA2NDctc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg\" class=\"attachment-large size-large wp-image-74800\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-2048x1152.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Ein Satz von Komponenten f\u00fcr den Raspberry Pi Pico Kurs.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47e46d3 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"47e46d3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">SIEHE HIER<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21f9653 elementor-widget elementor-widget-text-editor\" data-id=\"21f9653\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wer das Programmieren anhand von realen Projekten erlernen m\u00f6chte, braucht nat\u00fcrlich die richtige Ausr\u00fcstung, aber keine Sorge &#8211; Sie m\u00fcssen jetzt nicht von einem Artikel zum n\u00e4chsten springen und eine Liste der ben\u00f6tigten elektronischen Komponenten erstellen. Im <a style=\"background-color: #ffffff\" href=\"https:\/\/botland.de\" target=\"_blank\" rel=\"noopener nofollow external noreferrer\" data-wpel-link=\"external\"><span style=\"font-weight: bolder\">Botland<\/span><\/a>-Shop ist ein <a style=\"background-color: #ffffff\" href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">fertiges Set<\/span><\/a> erh\u00e4ltlich, das alle notwendigen Komponenten enth\u00e4lt, um die in der Tutorial-Reihe beschriebenen Projekte mit dem Raspberry Pi Pico durchzuf\u00fchren. <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-abd3aaa elementor-widget elementor-widget-text-editor\" data-id=\"abd3aaa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In dem <a href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/24136-programmieren-lernen-mit-dem-raspberry-pi-pico-w-kit.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">fertigen Set<\/span><\/a> von Elementen finden Sie:<\/p>\n<ul style=\"font-size: 16px;background-color: #ffffff\">\n<li style=\"font-size: 16px\">Raspberry Pi Pico W,<\/li>\n<li style=\"font-size: 16px\">MicroUSB-Kabel,<\/li>\n<li style=\"font-size: 16px\">Kontaktplatte,<\/li>\n<li style=\"font-size: 16px\">Ein Set von Anschlusskabeln in drei Ausf\u00fchrungen,<\/li>\n<li style=\"font-size: 16px\">Ein Set von LEDs in drei Farben,<\/li>\n<li style=\"font-size: 16px\">Ein Set der in der Elektronik am h\u00e4ufigsten verwendeten Widerst\u00e4nde,<\/li>\n<li style=\"font-size: 16px\">Tact Switch-Tasten,<\/li>\n<li style=\"font-size: 16px\">Fotowiderst\u00e4nde,<\/li>\n<li style=\"font-size: 16px\">Digitaler Lichtsensor,<\/li>\n<li style=\"font-size: 16px\">Digitaler Feuchtigkeits-, Temperatur- und Drucksensor,<\/li>\n<li style=\"font-size: 16px\">OLED-Display.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ded6e86 elementor-widget elementor-widget-spacer\" data-id=\"ded6e86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a443f75 elementor-widget elementor-widget-heading\" data-id=\"a443f75\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Projektvorbereitung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-29db5d4 elementor-widget elementor-widget-image\" data-id=\"29db5d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/03\/obwod-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"obwod\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzczNDMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wM1wvb2J3b2Qtc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-1024x576.jpg\" class=\"attachment-large size-large wp-image-77343\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/obwod-2048x1152.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Schaltung, die aus fr\u00fcheren Projekten bekannt ist.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c8e62e2 elementor-widget elementor-widget-text-editor\" data-id=\"c8e62e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">In unserem heutigen Projekt verwenden wir wieder die Schaltung, die wir in fr\u00fcheren Tutorials vorbereitet haben. Dieses Mal werden wir auch alle seine Komponenten verwenden, n\u00e4mlich die LEDs, den Knopf und den Fotowiderstand. Die Aufgabe des Programms, das wir als n\u00e4chstes schreiben werden, besteht darin, die leuchtenden Elemente in Abh\u00e4ngigkeit von der Lichtintensit\u00e4t zu steuern. Wenn sein Wert in einen der drei Bereiche f\u00e4llt, die wir erstellen, wird eine bestimmte Leuchtdiode aktiviert. Dar\u00fcber hinaus werden wir auch eine Taste verwenden, bei deren Bet\u00e4tigung der Mikrocontroller den Wert des Temperatursensors im Inneren des Prozessorkerns ausliest. Wir werden diesen Wert in Grad Celsius umrechnen und \u00fcber USB senden, damit er auf dem Computerbildschirm abgelesen werden kann.<\/p>\n<p style=\"font-weight: 400\">In diesem Artikel werden wir ein Projekt namens functions_test verwenden. Denken Sie bei der Vorbereitung daran, den USB-Ausgangsstream in der Datei CMakeLists.txt zu aktivieren.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8391329 elementor-widget elementor-widget-heading\" data-id=\"8391329\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Unsch\u00f6ner, aber funktionierender Code<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-530f310 elementor-widget elementor-widget-text-editor\" data-id=\"530f310\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>#include &lt;stdio.h&gt;<br\/>#include \"pico\/stdlib.h\"<br\/>#include \"hardware\/adc.h\"<br\/><br\/>#define RED_LED 2<br\/>#define YELLOW_LED 1<br\/>#define GREEN_LED 0<br\/>#define BUTTON 16<br\/><br\/>int main() {<br\/>    stdio_init_all();<br\/><br\/>    gpio_init(RED_LED);<br\/>    gpio_init(YELLOW_LED);<br\/>    gpio_init(GREEN_LED);<br\/>    gpio_init(BUTTON);<br\/><br\/>    gpio_set_dir(RED_LED, GPIO_OUT);<br\/>    gpio_set_dir(YELLOW_LED, GPIO_OUT);<br\/>    gpio_set_dir(GREEN_LED, GPIO_OUT);<br\/>    gpio_set_dir(BUTTON, GPIO_IN);<br\/><br\/>    gpio_pull_up(BUTTON);<br\/><br\/>    adc_init();<br\/>    adc_set_temp_sensor_enabled(true);<br\/>    adc_gpio_init(26);<br\/><br\/>    while(true) {<br\/><br\/>    adc_select_input(0);<br\/>    uint16_t photores_read = adc_read();<br\/>    float voltage_photores = photores_read * (3.3\/4095);<br\/>    printf(\"Photoresistor ADC: value = %d, voltage = %f V\\n\", photores_read, voltage_photores);<br\/><br\/>    if(photores_read &lt;= 2500){<br\/>        gpio_put(GREEN_LED, 1);<br\/>        gpio_put(YELLOW_LED, 0);<br\/>        gpio_put(RED_LED, 0);<br\/>    }<br\/>    else if(photores_read &gt; 2500 &amp;&amp; photores_read &lt;= 3500){<br\/>        gpio_put(GREEN_LED, 0);<br\/>        gpio_put(YELLOW_LED, 1);<br\/>        gpio_put(RED_LED, 0);<br\/>    }<br\/>    else if(photores_read &gt; 3500){<br\/>        gpio_put(GREEN_LED, 0);<br\/>        gpio_put(YELLOW_LED, 0);<br\/>        gpio_put(RED_LED, 1);<br\/>    }<br\/>    else<br\/>    {<br\/>    printf(\"Photoresistor error\");<br\/>    }<br\/><br\/><br\/>    bool button_state = gpio_get(BUTTON);<br\/><br\/>     if(button_state == false){ <br\/>        adc_select_input(4);<br\/>        uint16_t adc_temp = adc_read();<br\/>        float conversion_factor = 3.3 \/ (1&lt;&lt;12);<br\/>        float result = adc_temp * conversion_factor;<br\/>        float temp = 27 - (result -0.706)\/0.001721;<br\/>        printf(\"Temp = %f C\\n\", temp);<br\/><br\/>    }<br\/>    sleep_ms(500);<br\/>    }<br\/>}<\/pre>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b0b108 elementor-widget elementor-widget-text-editor\" data-id=\"9b0b108\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Werfen wir einen ersten Blick auf ein Programm, das funktioniert, aber wie Sie sich wahrscheinlich denken k\u00f6nnen, werden wir es im weiteren Verlauf des Artikels noch optimieren. Der Code besteht gr\u00f6\u00dftenteils aus bekannten Befehlen, obwohl wir uns einige von ihnen noch einmal ansehen werden. Dar\u00fcber hinaus ist es sinnvoll, das Programm als Ganzes zu analysieren, damit wir seine Struktur und die anschlie\u00dfenden Schritte zu seiner Verbesserung besser verstehen k\u00f6nnen.<\/p>\n<p style=\"font-weight: 400\">Der Hauptfunktion main gingen, wie \u00fcblich, Bibliotheken und Definitionen voraus. In dem Programm verwenden wir einen Analog-Digital-Wandler. Daher m\u00fcssen wir den Code mit hardware\/adc.h erg\u00e4nzen. Um nicht digitale Bezeichnungen f\u00fcr die einzelnen Leads verwenden zu m\u00fcssen, wurden ihnen au\u00dferdem intuitivere Begriffe zugewiesen.<\/p>\n<p style=\"font-weight: 400\">Auch der Anfang des Hauptteils des Programms kommt Ihnen vielleicht bekannt vor. Die Funktionen zur Initialisierung der Mikrocontroller-Pins, an die die LEDs und die Taste angeschlossen sind, finden Sie hier. Au\u00dferdem wird der ADC ausgel\u00f6st, zusammen mit der zugeh\u00f6rigen Leitung 26, an die der Fotowiderstand angeschlossen ist. Neu in diesem Teil des Codes ist die Funktion adc_set_temp_sensor_enabled(true);, mit der der im Inneren der CPU befindliche Temperatursensor aktiviert wird. Es ist auch erw\u00e4hnenswert, dass der Befehl adc_select_input(), der festlegt, welches Signal an den A\/D-Wandler \u00fcbergeben wird, noch nicht erschienen ist. Dies ist eine bewusste Entscheidung, denn, wie Sie bereits wissen, ist der RP2040 mit nur einem ADC-Modul ausgestattet, an das mehrere Eing\u00e4nge angeschlossen sind. In diesem Projekt werden wir zwei davon verwenden, f\u00fcr den Fotowiderstand und den Temperatursensor, so dass wir sp\u00e4ter im Code zwischen ihnen wechseln werden.<\/p>\n<p style=\"font-weight: 400\">Am Anfang der unendlichen while-Schleife erscheint der Code, den wir bereits im vorherigen Projekt verwendet haben. Hier lesen wir den vom Fotowiderstand erzeugten Wert ab, um ihn sp\u00e4ter in eine Spannung umzuwandeln und ihn dank der Funktion printf an den Computerbildschirm zu senden. Beachten Sie, dass wir hier auch den Eingang ausw\u00e4hlen, von dem das Signal an den ADC weitergeleitet wird. Die Ausgabennummer 26 entspricht der Null, also ist dies die Ziffer, die in die Funktion eingef\u00fcgt werden muss.<\/p>\n<p style=\"font-weight: 400\">Im n\u00e4chsten Teil des Codes gab es eine Kaskadenbedingung, die vom Wert von photores_read abhing, einer Variablen, in der die dem Signal des Fotowiderstands entsprechende Zahl gespeichert ist. Wie Sie bereits wissen, k\u00f6nnen die gelesenen Daten in einem 12-Bit-Konverter einen Wert zwischen 0 und 4095 annehmen. Ich habe beschlossen, den Bereich in drei Teile zu unterteilen: von 0 bis 2500, von 2501 bis 3500 und von 3501 bis 4095. Liegt der Wert von photores_read im ersten dieser Bereiche, wird eine gr\u00fcne LED aktiviert, beim zweiten Bereich ist es ein gelbes Lichtelement und beim letzten ein rotes Lichtelement. Au\u00dferdem ist in der Bedingung eine Sicherung f\u00fcr den Fall vorgesehen, dass die Variable einen &#8216;anderen&#8217; Wert annimmt. Auf dem Computerbildschirm erscheint dann die Meldung Photoresistor error.<\/p>\n<p style=\"font-weight: 400\">Wir m\u00fcssen auch \u00fcber die Konstruktion der Bedingungen selbst sprechen. Bisher haben wir eine Variable mit bestimmten Werten gleichgesetzt, dank der beiden Gleichheitszeichen &#8220;==&#8221;. In diesem Fall m\u00fcssen wir sie jedoch mit den zuvor beschriebenen Bereichen vergleichen. Mit anderen Worten, wir m\u00fcssen pr\u00fcfen, ob die Variable gr\u00f6\u00dfer oder kleiner als eine bestimmte Zahl sein wird. Wie in der Mathematik k\u00f6nnen wir hier die Zeichen Minderheit &#8220;&lt;&#8220;, Mehrheit &#8220;&gt;&#8221;, Moll gleich &#8220;&lt;=&#8221; und Dur gleich &#8220;&gt;=&#8221; verwenden. In der ersten if-Anweisung pr\u00fcfen wir den ersten Bereich. Wir vergleichen also, ob photores_read kleiner oder gleich 2500 ist. Es ist jedoch wichtig zu beachten, dass eine solche Notation nicht ideal ist, da die Bedingung auch f\u00fcr negative Zahlen erf\u00fcllt wird, die nicht im Bereich enthalten sind, aber damit werden wir uns sp\u00e4ter besch\u00e4ftigen. Wir sehen die gleiche Situation bei der dritten Bedingung, wenn der letzte Bereich \u00fcberpr\u00fcft wird. Wenn der Wert des Fotowiderstands gr\u00f6\u00dfer als 3501 ist, wird die rote LED aktiviert. Beachten Sie auch, dass die Bedingung selbst auf zwei Arten geschrieben werden kann: photores_read &gt; 3500 oder photores_read &gt;= 3501. Sie sind gleichwertig und werden aktiviert, wenn der Wert der Variablen mindestens 3501 betr\u00e4gt. In der zweiten Bedingung, bei der wir den mittleren Wertebereich pr\u00fcfen, passiert mit Abstand am meisten. In diesem Fall muss ein bestimmter Wertebereich beschrieben werden und alle Zahlen unterhalb oder oberhalb eines bestimmten Wertes k\u00f6nnen nicht einfach so hingenommen werden. Damit die gelbe LED nur dann aktiviert wird, wenn der photores_read-Wert zwischen 2501 und 3500 liegt, m\u00fcssen wir sozusagen zwei Bedingungen schaffen, die durch das mysteri\u00f6se &#8220;&amp;&amp;&#8221; verbunden sind. Die erste pr\u00fcft, ob die Variable gr\u00f6\u00dfer als 2500 ist &#8211; photores_read &gt; 2500, w\u00e4hrend die zweite pr\u00fcft, ob die Zahl 3500 nicht \u00fcberschritten hat &#8211; photores_read &lt;= 3500. Die &#8216;&amp;&amp;&#8217;-Konstruktion zwischen zwei Vergleichen ist der logische Operator AND. Sie k\u00f6nnen logische Operatoren mit Mathematik oder Logikgattern in Verbindung bringen. In der Sprache C ist neben AND auch OR, geschrieben als &#8220;||&#8221;, verf\u00fcgbar. Mit dieser Notation wird die bedingte Funktion nur erf\u00fcllt, wenn beide Vergleiche wahr sind, d.h. der Wert von photores_read liegt innerhalb des beschriebenen Bereichs. Wenn die der Variablen zugewiesene Zahl au\u00dferhalb des Bereichs liegt, ist nur eine der Bedingungen erf\u00fcllt, so dass das gesamte if unm\u00f6glich ist. Man kann also sagen, dass die bedingte Funktion dank des Operators AND nur ausgef\u00fchrt wird, wenn alle Bedingungen erf\u00fcllt sind. Das logische OR funktioniert etwas anders. Wenn wir es innerhalb einer Funktion platzieren w\u00fcrden, w\u00fcrde die Diode immer leuchten, denn in diesem Fall gen\u00fcgt es, dass eine der Bedingungen erf\u00fcllt ist und die bedingte Funktion ausgef\u00fchrt wird.<\/p>\n<p style=\"font-weight: 400\">Der zweite Teil des Programms enth\u00e4lt den Code f\u00fcr die Bedienung der Taste und die Temperaturanzeige. Zun\u00e4chst erstellen wir eine Variable button_state, in der der logische Zustand der Schaltfl\u00e4che gespeichert wird. Wenn diese Taste gedr\u00fcckt wird, wird der in der bedingten Funktion enthaltene Code ausgef\u00fchrt. Im ersten Schritt \u00e4ndern wir das Signal, das an den ADC weitergeleitet wird. Zuvor wurde ein Fotowiderstand ausgew\u00e4hlt, dieses Mal wollen wir den Wert des Temperatursensors lesen, der der vierten Stelle zugewiesen ist. Wir erstellen dann die Variable adc_temp, der der gelesene Wert zugewiesen wird. Um jedoch die Celsius-Temperatur aus einem reinen ADC-Wert zu erhalten, m\u00fcssen wir ihn entsprechend transformieren. Hierf\u00fcr ben\u00f6tigen wir den Flie\u00dfkomma conversion_factor, in dem das Ergebnis der Operation 3.3\/(1 gespeichert wird.&lt;&lt;12)-1. Diese etwas r\u00e4tselhafte Notation ist nichts anderes als die Aktion 3.3\/4095, die wir bereits mit dem Fotowiderstand verwendet haben. (1&lt;&lt;12) ist eine Bitverschiebungsoperation nach links. Das bedeutet, dass wir die Eins in der Nullvariablen an die zw\u00f6lfte Stelle verschieben und so die Zahl 4096 erhalten, von der wir am Ende Eins subtrahieren.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4963791 elementor-widget elementor-widget-text-editor\" data-id=\"4963791\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">1 = 00000000 00000000 = 1<\/p>\n<p style=\"font-weight: 400\">1&lt;&lt;1 = 00000000 00000010 = 2<\/p>\n<p style=\"font-weight: 400\">1&lt;&lt;8 = 00000001 00000000 = 256<\/p>\n<p style=\"font-weight: 400\">1&lt;&lt;12 = 0010000 00000000 = 4096<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-311f6d0 elementor-widget elementor-widget-text-editor\" data-id=\"311f6d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Bitverschiebungen sind anhand des obigen Beispiels recht einfach zu veranschaulichen. Wenn Sie die Eins um eine bestimmte Anzahl von Stellen verschieben, erhalten Sie ganz einfach Zahlen, die aufeinanderfolgende Zweierpotenzen sind, die in der Elektronik und Programmierung \u00e4u\u00dferst n\u00fctzlich sind. Bits k\u00f6nnen auch nach links verschoben werden, mit Hilfe des Operators &#8220;&gt;&gt;&#8221;. Au\u00dferdem sollten Sie wissen, dass sich Bitverschiebungen auf die Variable als Ganzes beziehen k\u00f6nnen, aber mit solchen Beispielen werden wir uns ein anderes Mal besch\u00e4ftigen.<\/p>\n<p style=\"font-weight: 400\">Sobald wir die Variable result haben, die de facto der vom Temperatursensor gelesene Spannungswert ist, m\u00fcssen wir sie in Grad Celsius umrechnen. Diese Aufgabe \u00fcbernimmt der Befehl float temp = 27 &#8211; (result -0,706)\/0,001721;, der den Flie\u00dfkommawert der Temperatur in der Variablen temp speichert. Es gibt keine besondere Geschichte hinter der verwendeten Ma\u00dfnahme, es ist einfach ein Ersatzwert f\u00fcr die in der RP2040-Dokumentation verf\u00fcgbare Formel. Dank des am Ende platzierten Befehls printf k\u00f6nnen Sie die abgelesene Temperatur auf dem Monitor der seriellen Schnittstelle sehen.<\/p>\n<p style=\"font-weight: 400\">Wie Sie vielleicht bemerkt haben, habe ich die Positionierung der Kommentare in diesem Programm leicht ver\u00e4ndert. In fr\u00fcheren Entw\u00fcrfen habe ich sie rechts von den Funktionen platziert, aber in diesem Fall sind sie dar\u00fcber platziert worden.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-848d39f elementor-widget elementor-widget-text-editor\" data-id=\"848d39f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\/\/conditional function controlling LEDs<br \/>if(photores_read &lt;= 2500){<br \/> gpio_put(GREEN_LED, 1);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 0);<br \/>}<\/p>\n<p>if(photores_read &lt;= 2500){ \/\/conditional function controlling LEDs<br \/> gpio_put(GREEN_LED, 1);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 0);<br \/>}<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6db1fe5 elementor-widget elementor-widget-text-editor\" data-id=\"6db1fe5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">In der Tat sind beide Schreibweisen korrekt und es liegt an Ihnen zu entscheiden, welche Sie verwenden m\u00f6chten. Nat\u00fcrlich k\u00f6nnen die Schreibweisen auch gemischt werden, indem Sie einmal neben und einmal \u00fcber der Funktion einen Kommentar hinzuf\u00fcgen. Das Wichtigste ist jedoch das Hinzuf\u00fcgen von Kommentaren selbst, damit der Leser sich leicht ein Bild von der Struktur des Codes machen kann. <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23ff5ee elementor-widget elementor-widget-video\" data-id=\"23ff5ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/03\/lux_re.mov\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78ebc7a elementor-widget elementor-widget-text-editor\" data-id=\"78ebc7a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Nach dem Kompilieren und Hochladen der Datei .uf2 auf den RPI Pico W k\u00f6nnen wir die doppelte Funktionalit\u00e4t des vorbereiteten Programms \u00fcberpr\u00fcfen. Im Video k\u00f6nnen Sie sehen, wie ich den Fotowiderstand allm\u00e4hlich beleuchte. Je mehr Licht dieses Element erh\u00e4lt, desto st\u00e4rker sinkt sein Widerstand, was sich auf den vom Raspberry Pi Pico gelesenen Spannungswert auswirkt. Dadurch \u00e4ndert sich auch die ausgelesene Variable und je nach Wert wird eine andere LED aktiviert. Wenn es mehr Licht gibt, geht die Variable in den n\u00e4chsten Bereich, der in der Kaskadenfunktion beschrieben ist.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8c5451 elementor-widget elementor-widget-image\" data-id=\"a8c5451\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ver1_photo_temp\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzczNTEsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wM1wvdmVyMV9waG90b190ZW1wLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"205\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp-1024x263.png\" class=\"attachment-large size-large wp-image-77351\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp-1024x263.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp-300x77.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp-768x197.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver1_photo_temp.png 1385w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Interner Temperaturwert des Prozessors.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc16d6d elementor-widget elementor-widget-text-editor\" data-id=\"fc16d6d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Au\u00dferdem k\u00f6nnen wir, wenn wir den Monitor der seriellen Schnittstelle laufen lassen, den ADC-Wert und die von der Fotowiderstandsleitung gelesene Spannung sehen. Hier wird auch die interne Temperatur des Mikrocontrollers angezeigt, die gesendet wird, wenn eine Taste auf der Kontaktplatte gedr\u00fcckt wird. Wenn Sie Ihren Finger auf die Oberfl\u00e4che des Mikrocontrollers halten, k\u00f6nnen Sie einen langsam ansteigenden Messwert beobachten. Beachten Sie jedoch, dass er im Vergleich zu externen Sensoren nicht sehr genau ist und keinesfalls als externer Temperatursensor angesehen werden kann. Der Chip selbst kann sich je nach Belastung erw\u00e4rmen und dieser Sensor dient nur dazu, die Temperatur des Chips selbst zu messen. Bei gr\u00f6\u00dferen Projekten kann sie mit einer aktiven K\u00fchlung des Ger\u00e4ts kombiniert werden.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cee33e2 elementor-widget elementor-widget-heading\" data-id=\"cee33e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kleine \u00c4nderungen <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47adf73 elementor-widget elementor-widget-text-editor\" data-id=\"47adf73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Das von uns vorbereitete Programm funktioniert einwandfrei, der Fotowiderstand reagiert auf das einfallende Licht und durch Dr\u00fccken einer Taste k\u00f6nnen wir die Temperatur des RP2040-Chips ablesen. Ist es dann \u00fcberhaupt noch sinnvoll, den Code zu verbessern, wenn er funktioniert? Die Antwort ist so positiv wie m\u00f6glich. In diesem wie auch in anderen F\u00e4llen sollten wir aus mehreren wichtigen Gr\u00fcnden zu fr\u00fcher geschriebenen Programmen zur\u00fcckkehren. Durch die Analyse fr\u00fcherer L\u00f6sungen verbessern wir st\u00e4ndig unsere F\u00e4higkeiten und finden mehr als einmal einen besseren Weg, ein Problem zu l\u00f6sen. Dar\u00fcber hinaus sollten wir versuchen, m\u00f6gliche Fehler zu beseitigen und gleichzeitig die Lesbarkeit des Codes selbst zu verbessern, damit er von anderen Entwicklern verstanden werden kann. Letztendlich ist das regelm\u00e4\u00dfige Betrachten und Verbessern von bereits geschriebenem Codes ein wesentlicher Bestandteil des Prozesses Ihrer eigenen Selbstverbesserung.<\/p>\n<p style=\"font-weight: 400\">Bei dieser Gelegenheit m\u00f6chte ich auch auf ein Thema im Zusammenhang mit der Programmierung hinweisen, das von vielen Anf\u00e4ngern ignoriert wird, obwohl Kenntnisse in diesem Bereich in vielen F\u00e4llen n\u00fctzlich sein k\u00f6nnen. Das sind Algorithmen, die eigentlich ein sehr breites Thema sind. In einem Forum bin ich einmal auf den Ausdruck gesto\u00dfen, dass ein Programmierer, der sich nicht mit Algorithmen auskennt, wie ein &#8220;Code Stitcher&#8221; ist. Nun, dem kann man kaum widersprechen. Das Thema ist sehr breit gef\u00e4chert, aber in K\u00fcrze k\u00f6nnen wir Algorithmen als strukturierte und optimale Wege zur L\u00f6sung von Problemen definieren. Viele Programmierprobleme sind den Entwicklern schon vor Jahren begegnet, so dass es wenig Sinn macht, das Rad neu zu erfinden. Es lohnt sich, ein Buch in die Hand zu nehmen oder im Internet nach den Algorithmen zu suchen, die beim Programmieren verwendet werden, denn dieses Wissen wird die Programme, die Sie in Zukunft schreiben, optimieren. Au\u00dferdem erleichtern Algorithmen das L\u00f6sen von Problemen, was die Essenz des Programmierens ist.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7ca0fe elementor-widget elementor-widget-text-editor\" data-id=\"b7ca0fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>#include &lt;stdio.h&gt;<br \/>#include &#8220;pico\/stdlib.h&#8221;<br \/>#include &#8220;hardware\/adc.h&#8221;<\/p>\n<p>#define RED_LED 2<br \/>#define YELLOW_LED 1<br \/>#define GREEN_LED 0<br \/>#define BUTTON 16<\/p>\n<p>const float conversion_factor = 3.3\/4095;<\/p>\n<p>int main() {<br \/> stdio_init_all();<\/p>\n<p> gpio_init(RED_LED);<br \/> gpio_init(YELLOW_LED); <br \/> gpio_init(GREEN_LED);<br \/> gpio_init(BUTTON);<\/p>\n<p> gpio_set_dir(RED_LED, GPIO_OUT);<br \/> gpio_set_dir(YELLOW_LED, GPIO_OUT);<br \/> gpio_set_dir(GREEN_LED, GPIO_OUT);<br \/> gpio_set_dir(BUTTON, GPIO_IN);<\/p>\n<p> gpio_pull_up(BUTTON);<\/p>\n<p> adc_init();<br \/> adc_set_temp_sensor_enabled(true);<br \/> adc_gpio_init(26);<\/p>\n<\/p>\n<p> while(true) {<\/p>\n<p> adc_select_input(0);<br \/> uint16_t photores_read = adc_read();<br \/> const float voltage_photores = photores_read * conversion_factor;<br \/> printf(&#8220;Photoresistor ADC: value = %d, voltage = %f V\\n&#8221;, photores_read, voltage_photores);<\/p>\n<p> if(photores_read &gt;= 0 &amp;&amp; photores_read &lt;= 2500){<br \/> gpio_put(GREEN_LED, 1);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 0);<br \/>  }<br \/> else if(photores_read &gt; 2500 &amp;&amp; photores_read &lt;= 3500){<br \/> gpio_put(GREEN_LED, 0);<br \/> gpio_put(YELLOW_LED, 1);<br \/> gpio_put(RED_LED, 0);<br \/>}<br \/> else if(photores_read &gt; 3500 &amp;&amp; photores_read &lt;= 4095){<br \/> gpio_put(GREEN_LED, 0);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 1);<br \/>  }<br \/> else<br \/>  {<br \/> printf(&#8220;Photoresistor error&#8221;);<br \/>  }<\/p>\n<p> bool button_state = gpio_get(BUTTON);<\/p>\n<p> if(button_state == false){ <br \/> adc_select_input(4);<br \/> uint16_t adc_temp = adc_read();<br \/> float temp = 27 &#8211; ((adc_temp * conversion_factor)-0.706)\/0.001721;<br \/> printf(&#8220;Temp = %f C, voltage = %f V\\n&#8221;, temp, (adc_temp * conversion_factor));<br \/>  }<br \/> sleep_ms(500);<br \/>  }<br \/>}<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54af8b5 elementor-widget elementor-widget-text-editor\" data-id=\"54af8b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Da wir nun wissen, dass es n\u00fctzlich ist, Codes, die wir bereits geschrieben haben, noch einmal zu \u00fcberpr\u00fcfen, lassen Sie uns einen Blick auf das Programm werfen, das wir vor einiger Zeit geschrieben haben, und versuchen, ein paar kleine \u00c4nderungen daran vorzunehmen.<\/p>\n<p style=\"font-weight: 400\">Beginnen wir mit der Korrektur der Kaskaden-Bedingungsfunktion, die die LEDs steuert. Wie ich bereits erw\u00e4hnt habe, bestand das Problem darin, dass die Wertebereiche nicht sehr genau beschrieben waren. Man k\u00f6nnte meinen, dass dies kein gro\u00dfes Problem darstellt, da wir wissen, dass der vom Fotowiderstand gelesene Wert nicht kleiner als Null und gr\u00f6\u00dfer als 4095 sein wird. Wir k\u00f6nnen jedoch nicht 100%ig sicher sein, dass im Mikrocontroller kein Problem auftritt und dass ein verirrtes Elektron nicht den in einem der Register gespeicherten Wert ver\u00e4ndert. Selbst wenn dies der Fall w\u00e4re, w\u00fcrde es nat\u00fcrlich kaum einen Unterschied f\u00fcr den Stromkreis auf der Kontaktplatte machen. Es ist jedoch wichtig, daran zu denken, dass nicht jedes Programm nur auf einem Kontaktbrett l\u00e4uft &#8211; in medizinischen oder milit\u00e4rischen Systemen sind Fehler und unvorhersehbares Verhalten im Programm inakzeptabel. Deshalb lohnt es sich, die Bedingungen zu verbessern, selbst bei einem so einfachen Code. Nach der \u00c4nderung bezieht sich jede der if-Funktionen auf einen bestimmten Bereich, und die Bedingungen basieren auf dem bereits erw\u00e4hnten AND-Operator.<\/p>\n<p style=\"font-weight: 400\">Wir k\u00f6nnen uns auch die Funktionen ansehen, die mit dem Auslesen der ADC-Werte aus dem Fotowiderstand und dem Temperatursensor verbunden sind. In beiden F\u00e4llen haben wir die f\u00fcr die Umrechnung ben\u00f6tigte Variable verwendet, in der das Ergebnis der Aktion 3.3\/4095 gespeichert wurde. Die gleiche Berechnung zweimal durchzuf\u00fchren ist eine Verschwendung von Zeit und Ressourcen. Daher k\u00f6nnen wir die Variable conversion_factor am Anfang des Programms verwerfen und sie zu einer Konstanten machen, so dass sie einen entsprechenden Wert annimmt, der nicht ge\u00e4ndert werden kann. Wir definieren eine Konstante, indem wir das Schl\u00fcsselwort const vor der type-Anweisung hinzuf\u00fcgen. Konstanten k\u00f6nnen genau wie Variablen global oder lokal sein. In diesem Fall habe ich die Deklaration conversion_factor oberhalb der Funktion main platziert, so dass sie global ist, was sich sp\u00e4ter als n\u00fctzlich erweisen wird.<\/p>\n<p style=\"font-weight: 400\">Durch das Hinzuf\u00fcgen der Konstante wurden die Berechnungen im Zusammenhang mit den ausgelesenen ADC-Signalen etwas ver\u00e4ndert. Beim Fotowiderstand habe ich nur die Notation 3.3\/4095 in eine Konstantenangabe ge\u00e4ndert, aber bei den Berechnungen im Zusammenhang mit dem Temperatursensor hat sich das Ganze um zwei Zeilen verk\u00fcrzt. Der erste Befehl, der verschwindet, ist nat\u00fcrlich die Bezeichnung conversion_factor, die jetzt korrigiert wurde. Au\u00dferdem verzichtete ich auf die Ermittlung des Wertes result, der innerhalb der Temperaturermittlungsaktion platziert war. Stattdessen wurden die relevanten Variablen unter der Formel ersetzt, was den Befehl temp = 27 &#8211; ((adc_temp * conversion_factor)-0.706)\/0.001721 ergab. Wie Sie sehen, habe ich die Multiplikationsoperation in eine zus\u00e4tzliche Klammer gesetzt, obwohl diese Operation in der Reihenfolge, in der die Operationen ausgef\u00fchrt werden, zuerst ausgef\u00fchrt wird. Es ist zwar \u00fcberfl\u00fcssig, aber ich pers\u00f6nlich mag es, Aktionen genau so aufzuzeichnen, um sozusagen die Abfolge der durchgef\u00fchrten Operationen zu unterstreichen.<\/p>\n<p style=\"font-weight: 400\">Dar\u00fcber hinaus wurde der printf-Befehl ganz am Ende erweitert. Von nun an wird auf dem Computerbildschirm neben dem Temperaturwert auch der vom Temperatursensor gelesene Spannungswert angezeigt. Wie Sie sehen, hat die Variable, die den zweiten %f-Operator ersetzt, tats\u00e4chlich die Form einer mathematischen Operation. In der Sprache C k\u00f6nnen wir erfolgreich diese Art von Konstrukten erstellen, bei denen bestimmte Variablen tats\u00e4chlich die Form anderer Aktionen oder in einigen F\u00e4llen sogar ganzer Funktionen haben. Achten Sie jedoch darauf, dass Sie einige Anweisungen nicht \u00fcberstrapazieren und eine Art &#8216;Bandwurm&#8217; erzeugen. L\u00e4ngere Anweisungen k\u00f6nnen mit der Zeit viel schwerer zu verstehen sein.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69c49d9 elementor-widget elementor-widget-heading\" data-id=\"69c49d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Vorbereitung von eigenen Funktionen<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b4d6165 elementor-widget elementor-widget-text-editor\" data-id=\"b4d6165\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>#include &lt;stdio.h&gt;<br \/>#include &#8220;pico\/stdlib.h&#8221;<br \/>#include &#8220;hardware\/adc.h&#8221;<\/p>\n<p>#define RED_LED 2<br \/>#define YELLOW_LED 1<br \/>#define GREEN_LED 0<br \/>#define BUTTON 16<\/p>\n<p>const float conversion_factor = 3.3\/4095;<\/p>\n<p>void PhotoresRun();<br \/>uint8_t TempSensorRun(bool button_state);<\/p>\n<p>int main() {<br \/> stdio_init_all();<\/p>\n<p> gpio_init(RED_LED);<br \/> gpio_init(YELLOW_LED);<br \/> gpio_init(GREEN_LED);<br \/> gpio_init(BUTTON);<\/p>\n<p> gpio_set_dir(RED_LED, GPIO_OUT);<br \/> gpio_set_dir(YELLOW_LED, GPIO_OUT);<br \/> gpio_set_dir(GREEN_LED, GPIO_OUT);<br \/> gpio_set_dir(BUTTON, GPIO_IN);<\/p>\n<p> gpio_pull_up(BUTTON);<\/p>\n<p> adc_init();<br \/> adc_set_temp_sensor_enabled(true);<br \/> adc_gpio_init(26);<\/p>\n<\/p>\n<p> while(true) {<\/p>\n<p> PhotoresRun();<\/p>\n<p> bool button_state = gpio_get(BUTTON);<br \/> uint8_t return_value = TempSensorRun(button_state);<br \/> printf(&#8220;return_value = %d&#8221;, return_value);<\/p>\n<p> sleep_ms(500);<br \/>  }<br \/>}<\/p>\n<p>void PhotoresRun(){<br \/> adc_select_input(0);<br \/> uint16_t photores_read = adc_read();<br \/> const float voltage_photores = photores_read * conversion_factor;<br \/> printf(&#8220;Photoresistor ADC: value = %d, voltage = %f V\\n&#8221;, photores_read, voltage_photores);<\/p>\n<p> if(photores_read &gt;= 0 &amp;&amp; photores_read &lt;= 2500){<br \/> gpio_put(GREEN_LED, 1);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 0);<br \/>  }<br \/> else if(photores_read &gt; 2500 &amp;&amp; photores_read &lt;= 3500){<br \/> gpio_put(GREEN_LED, 0);<br \/> gpio_put(YELLOW_LED, 1);<br \/> gpio_put(RED_LED, 0);<br \/>  }<br \/> else if(photores_read &gt; 3500 &amp;&amp; photores_read &lt;= 4095){<br \/> gpio_put(GREEN_LED, 0);<br \/> gpio_put(YELLOW_LED, 0);<br \/> gpio_put(RED_LED, 1);<br \/>  }<br \/> else<br \/>  {<br \/> printf(&#8220;Photoresistor error&#8221;);<br \/>  }<br \/>}<\/p>\n<p>uint8_t TempSensorRun(bool button_state){<\/p>\n<p>if(button_state == false){ <br \/> adc_select_input(4);<br \/> uint16_t adc_temp = adc_read();<br \/> float temp = 27 &#8211; ((adc_temp * conversion_factor)-0.706)\/0.001721;<br \/> printf(&#8220;Temp = %f C, voltage = %f V\\n&#8221;, temp, (adc_temp * conversion_factor));<br \/> return 0;<br \/>  }<br \/>return 1;<br \/>}<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a04b26c elementor-widget elementor-widget-text-editor\" data-id=\"a04b26c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Bisher haben wir in unseren Programmen eine einzelne Hauptfunktion main verwendet und einen Bereich dar\u00fcber, in dem wir Variablendeklarationen, Konstanten oder eingebundene Bibliotheken platziert haben. Diesmal werden wir auch versuchen, unsere eigene Funktion vorzubereiten, die wir wie viele der anderen Befehle innerhalb der Hauptfunktion main platzieren k\u00f6nnen. Wir werden den Test mit einem bereits vorbereiteten Programm durchf\u00fchren, das wir in diesem Artikel besprechen. In diesem Beispiel werden wir versuchen, die Codebl\u00f6cke zu extrahieren, die f\u00fcr den Umgang mit dem Fotowiderstand und dem internen Temperatursensor verantwortlich sind, und sie in einer einzigen Funktion zu kapseln.<\/p>\n<p style=\"font-weight: 400\">Lassen Sie uns das obige Beispiel betrachten. Wie Sie sehen k\u00f6nnen, wurde die Hauptfunktion main und insbesondere der Code innerhalb der while-Schleife erheblich verschlankt. Er besteht jetzt nur noch aus f\u00fcnf Anweisungen, und der Code, der eben noch da war, steht jetzt in ziemlich geheimnisvoll beschriebenen Bl\u00f6cken darunter. Genau dies sind unsere eigenen Funktionen namens PhotoresRun und TempSensorRun.<\/p>\n<p style=\"font-weight: 400\">Bei der Ausf\u00fchrung des Codes aus der while-Schleife st\u00f6\u00dft der Mikrocontroller auf den Befehl PhotoresRun();. In diesem Fall springt er zu dem Code, der in dieser Funktion beschrieben wird. Wir definieren Funktionen als &#8211; Typ name(optionale Operanden). In diesem Fall handelt es sich um void PhotoresRun(), eine Funktion vom Typ void namens PhotoresRun, der wir keine Variablen \u00fcbergeben, da die Klammern leer sind. Der Funktionstyp bestimmt auch, was die Funktion an uns zur\u00fcckgibt. Wenn wir zum Beispiel adc_read() verwenden, gibt uns die Funktion die digitale Darstellung des Signals zur\u00fcck, das von einer der ADC-Quellen gelesen wurde. Wenn wir wollen, dass eine Funktion keinen Wert an uns zur\u00fcckgibt, verwenden wir einfach den Typ void. Der Code, der in PhotoresRun ausgef\u00fchrt wird, steht in geschweiften Klammern und ist eine Kopie des Programms, das in den fr\u00fcheren Beispielen den Fotowiderstand bedient hat.<\/p>\n<p style=\"font-weight: 400\">Die zweite Funktion ist TempSensorRun, deren Deklaration schon ein wenig komplizierter aussieht &#8211; uint8_t TempSensorRun(bool button_state). Dies ist eine Funktion, die Daten vom Typ uint8_t mit dem Namen TempSensorRun zur\u00fcckgibt, an die wir eine Variable vom Typ bool mit dem Namen button_state \u00fcbergeben k\u00f6nnen. Es wurde eine Bedingung in die Funktion eingef\u00fcgt, um das Dr\u00fccken der Taste zu unterst\u00fctzen. Wenn die an die Funktion \u00fcbergebene Variable den Wert false annimmt, d.h. wenn die Taste gedr\u00fcckt wird, dann wird der Code ausgef\u00fchrt, den wir bereits f\u00fcr den internen Temperatursensor verwendet haben. Dar\u00fcber hinaus k\u00f6nnen Sie in dieser Funktion Schl\u00fcsselw\u00f6rter return sehen. Sie erm\u00f6glichen es einer Funktion, &#8220;etwas&#8221; zur\u00fcckzugeben. Wenn wir kurz zum Hauptblock main springen, sehen wir, dass eine Variable vom Typ uint8_t namens return_value erstellt wurde, der der von TempSensorRun zur\u00fcckgegebene Wert zugewiesen wird. Wenn die Taste gedr\u00fcckt wird, f\u00fchrt die Funktion den unterst\u00fctzenden Code aus und sendet Temperatur- und Spannungsdaten \u00fcber USB, gibt aber auch einen Wert von Null zur\u00fcck, der return_value zugewiesen wird. Wenn die Taste nicht gedr\u00fcckt wird und am RPI-Ausgang ein High-Status anliegt, gibt die Funktion den Wert Eins zur\u00fcck, der ebenfalls einer Variablen zugewiesen wird.<\/p>\n<p style=\"font-weight: 400\">Auf diese Weise k\u00f6nnen wir unsere eigenen Funktionen erstellen und dabei auch ihre Prototypen ber\u00fccksichtigen, die oberhalb des Blocks main platziert werden m\u00fcssen. Es ist nichts weiter als eine kurze Wiederholung der Funktionsdeklaration mit Typ, Name und optionalen Operanden.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a84925 elementor-widget elementor-widget-image\" data-id=\"7a84925\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ver3_serial\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzczNTUsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wM1wvdmVyM19zZXJpYWwucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"148\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial-1024x190.png\" class=\"attachment-large size-large wp-image-77355\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial-1024x190.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial-300x56.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial-768x142.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/ver3_serial.png 1360w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Von RPI gesendete Daten.<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d3271e elementor-widget elementor-widget-text-editor\" data-id=\"6d3271e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Nachdem Sie den Code ausgef\u00fchrt haben, k\u00f6nnen Sie die vom Raspberry Pi Pico W \u00fcbertragenen Daten des Fotowiderstands und den Wert, der return_value zugewiesen wurde, auf dem Computerbildschirm sehen. Wenn die Taste frei bleibt, wird der Variable eine Eins zugewiesen. Die Schaltung f\u00fchrt die Funktion TempSensorRun aus, aber aufgrund des Zustands der Taste gibt sie sofort die Nummer eins zur\u00fcck und kehrt zur Hauptschleife zur\u00fcck. Die Situation \u00e4ndert sich, wenn die Taste gedr\u00fcckt wird. Dann sehen wir zus\u00e4tzlich zu den Daten des internen Temperatursensors, dass sich der return_value auf Null \u00e4ndert.<\/p>\n<p style=\"font-weight: 400\">Die Erstellung eigener Funktionen ist \u00e4u\u00dferst n\u00fctzlich, insbesondere bei komplexeren Codes. Damit wird main erheblich verschlankt, was die Lesbarkeit des Programms verbessert. Wenn Sie sich eine bestimmte Funktion ansehen m\u00f6chten, m\u00fcssen Sie nur deren Deklaration finden und dann zur Hauptschleife zur\u00fcckkehren. Benutzerdefinierte Funktionen k\u00f6nnen auch in anderen Dateien platziert werden, was die Codes noch optimaler macht, aber wir werden uns mit diesem Thema ein anderes Mal besch\u00e4ftigen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b3532f elementor-widget elementor-widget-heading\" data-id=\"3b3532f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ein paar Worte zum Schluss...<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7cbfc1c elementor-widget elementor-widget-text-editor\" data-id=\"7cbfc1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Im heutigen Material lernen wir einige theoretische Fragen im Zusammenhang mit der Codeoptimierung kennen. Au\u00dferdem habe ich die gute Angewohnheit erw\u00e4hnt, auf bereits geschriebene Programme zur\u00fcckzugreifen. Schlie\u00dflich habe ich Ihnen gezeigt, wie Sie Ihre eigenen Funktionen erstellen k\u00f6nnen, und dieses Wissen wird sich in Zukunft als n\u00fctzlich erweisen. Trotz des eher theoretischen Charakters dieses Materials werden Sie auch lernen, wie Sie den internen Temperatursensor des RP2040 bedienen. Wir haben in den Projekten auch logische Operatoren und Bitverschiebungen verwendet. Im n\u00e4chsten Material werden wir uns mit Unterbrechungen im Mikrocontroller besch\u00e4ftigen.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d62b00 elementor-widget elementor-widget-spacer\" data-id=\"4d62b00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5897caa elementor-widget elementor-widget-text-editor\" data-id=\"5897caa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Quellen:<\/p>\n<ul>\n<li>https:\/\/datasheets.raspberrypi.com\/rp2040\/rp2040-datasheet.pdf<\/li>\n<li>https:\/\/datasheets.raspberrypi.com\/picow\/pico-w-datasheet.pdf<\/li>\n<li>https:\/\/www.raspberrypi.com\/products\/rp2040\/<\/li>\n<li>https:\/\/www.raspberrypi.com\/documentation\/microcontrollers\/raspberry-pi-pico.html<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.<\/p>\n","protected":false},"author":34,"featured_media":77405,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-79018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elektronika","category-programowanie","category-raspberry-pi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland<\/title>\n<meta name=\"description\" content=\"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland\" \/>\n<meta property=\"og:description\" content=\"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" \/>\n<meta property=\"og:site_name\" content=\"Botland\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/Botland\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-20T13:00:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T09:00:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1510\" \/>\n\t<meta property=\"og:image:height\" content=\"755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 Bartoszak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 Bartoszak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"23\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Raspberry Pi Pico Kurs &#8211; #7 &#8211; Code-Korrekturen und eigene Funktionen\",\"datePublished\":\"2024-03-20T13:00:50+00:00\",\"dateModified\":\"2026-04-08T09:00:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/\"},\"wordCount\":4558,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/1-1.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/\",\"name\":\"Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/1-1.png\",\"datePublished\":\"2024-03-20T13:00:50+00:00\",\"dateModified\":\"2026-04-08T09:00:06+00:00\",\"description\":\"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/1-1.png\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/1-1.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/botland.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi Pico Kurs &#8211; #7 &#8211; Code-Korrekturen und eigene Funktionen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"name\":\"Botland\",\"description\":\"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland\",\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botland.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\",\"name\":\"Botland\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"contentUrl\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"width\":250,\"height\":57,\"caption\":\"Botland\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/Botland\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\",\"name\":\"Rafa\u0142 Bartoszak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"caption\":\"Rafa\u0142 Bartoszak\"},\"description\":\"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/author\\\/rafal-bartoszak\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland","description":"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/","og_locale":"de_DE","og_type":"article","og_title":"Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland","og_description":"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.","og_url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-03-20T13:00:50+00:00","article_modified_time":"2026-04-08T09:00:06+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Rafa\u0142 Bartoszak","Gesch\u00e4tzte Lesezeit":"23\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#article","isPartOf":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Raspberry Pi Pico Kurs &#8211; #7 &#8211; Code-Korrekturen und eigene Funktionen","datePublished":"2024-03-20T13:00:50+00:00","dateModified":"2026-04-08T09:00:06+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/"},"wordCount":4558,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/","url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/","name":"Raspberry Pi Pico Kurs - #7 - Code-Korrekturen und eigene Funktionen - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#primaryimage"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png","datePublished":"2024-03-20T13:00:50+00:00","dateModified":"2026-04-08T09:00:06+00:00","description":"In diesem Artikel werden wir die bereits erlernten Funktionen verwenden und mit ihrer Hilfe ein etwas aufwendigeres Programm erstellen, um es sp\u00e4ter unter Beibehaltung seiner Funktionalit\u00e4t zu vereinfachen.","breadcrumb":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#primaryimage","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/03\/1-1.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/botland.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi Pico Kurs &#8211; #7 &#8211; Code-Korrekturen und eigene Funktionen"}]},{"@type":"WebSite","@id":"https:\/\/botland.de\/blog\/#website","url":"https:\/\/botland.de\/blog\/","name":"Botland","description":"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland","publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botland.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/botland.de\/blog\/#organization","name":"Botland","url":"https:\/\/botland.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","contentUrl":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","width":250,"height":57,"caption":"Botland"},"image":{"@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/Botland\/"]},{"@type":"Person","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215","name":"Rafa\u0142 Bartoszak","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","caption":"Rafa\u0142 Bartoszak"},"description":"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.","url":"https:\/\/botland.de\/blog\/author\/rafal-bartoszak\/"}]}},"_links":{"self":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/79018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/comments?post=79018"}],"version-history":[{"count":0,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/79018\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media\/77405"}],"wp:attachment":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media?parent=79018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/categories?post=79018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/tags?post=79018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}