{"id":78599,"date":"2024-01-28T14:00:53","date_gmt":"2024-01-28T13:00:53","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/raspberry-pi-pico-4-zaczynamy-programowac\/"},"modified":"2026-04-08T11:01:24","modified_gmt":"2026-04-08T09:01:24","slug":"raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung","status":"publish","type":"post","link":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/","title":{"rendered":"Raspberry Pi Pico Kurs &#8211; #4 &#8211; Erste Schritte in der Programmierung"},"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\"> 15<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"78599\" class=\"elementor elementor-78599 elementor-74920\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-df48a81 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"df48a81\" 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-9f9db80\" data-id=\"9f9db80\" 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-8b2b2a4 elementor-widget elementor-widget-text-editor\" data-id=\"8b2b2a4\" 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;\"><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-3-erstes-programm\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Im vorherigen Material<\/strong><\/a> haben wir gemeinsam die Visual Studio Code-Umgebung vorbereitet und das erste Beispielprogramm ausgef\u00fchrt, um zu pr\u00fcfen, ob alles korrekt funktioniert. In diesem Artikel <strong>werden wir die Vorbereitung unseres eigenen Projekts \u00fcben<\/strong>, und ich werde Sie auch \u00fcber die grundlegenden Abh\u00e4ngigkeiten und Regeln, die in der Sprache C auftreten, informieren.<\/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-3b2ac8d elementor-widget elementor-widget-image\" data-id=\"3b2ac8d\" 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=\"1429\" height=\"194\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg\" class=\"attachment-full size-full wp-image-83334\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w, 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-1024x139.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w\" sizes=\"(max-width: 1429px) 100vw, 1429px\" \/>\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-ce642ef elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ce642ef\" 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-724e89b\" data-id=\"724e89b\" 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-7dfbef0 elementor-widget elementor-widget-image\" data-id=\"7dfbef0\" 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-57243f6\" data-id=\"57243f6\" 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-50cf5d7 elementor-widget elementor-widget-text-editor\" data-id=\"50cf5d7\" 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-2fb2866 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"2fb2866\" 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\">BESUCHE BOTLAND!<\/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-eb9d0ce elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"eb9d0ce\" 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-4ecee73 elementor-widget elementor-widget-text-editor\" data-id=\"4ecee73\" 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\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #1<\/span> &#8211; Einstieg<\/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\"><span style=\"font-weight: bolder;\">Raspberry 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\"><span style=\"font-weight: bolder;\">Raspberry 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\"><span style=\"font-weight: bolder;\">Raspberry 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\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #5<\/span> &#8211; Schleifen, Variablen und bedingte Anweisungen<\/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\"><strong>Raspberry Pi Pico &#8211; #6<\/strong> &#8211; PWM, ADC und Kommunikation mit dem Computer<\/a><\/li>\n<li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" target=\"_blank\" rel=\"noopener\" data-wplink-edit=\"true\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #7<\/span> &#8211; Codekorrekturen und eigene Funktionen <\/a><\/li>\n<li><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\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #9<\/span> &#8211; Indikatorentheorie und Timer<\/a><\/li>\n<li><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-10-arrays-strukturen-und-zustandsautomaten\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico &#8211; #10<\/strong> &#8211; Arrays, Strukturen und Zustandsautomaten<\/a><\/li>\n<\/ol>\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-0b1da80 elementor-widget elementor-widget-spacer\" data-id=\"0b1da80\" 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-9c1d2a1 elementor-widget elementor-widget-heading\" data-id=\"9c1d2a1\" 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-9542c46 elementor-widget elementor-widget-image\" data-id=\"9542c46\" 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-1087493 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"1087493\" 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-d198105 elementor-widget elementor-widget-text-editor\" data-id=\"d198105\" 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;\">fertiger Bausatz<\/span><\/a> erh\u00e4ltlich, der 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-c87dd06 elementor-widget elementor-widget-text-editor\" data-id=\"c87dd06\" 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-34cfc5b elementor-widget elementor-widget-spacer\" data-id=\"34cfc5b\" 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-a6b797e elementor-widget elementor-widget-heading\" data-id=\"a6b797e\" 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\">Ganz neue LED-Blinkfunktion, Projekterstellung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c1792a elementor-widget elementor-widget-image\" data-id=\"6c1792a\" 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\/obwod_blink_rozbudowany-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"obwod_blink_rozbudowany\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ5MjUsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvb2J3b2RfYmxpbmtfcm96YnVkb3dhbnktc2NhbGVkLmpwZyJ9\" 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\/01\/obwod_blink_rozbudowany-1024x576.jpg\" class=\"attachment-large size-large wp-image-74925\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/obwod_blink_rozbudowany-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/obwod_blink_rozbudowany-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/obwod_blink_rozbudowany-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/obwod_blink_rozbudowany-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/obwod_blink_rozbudowany-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\">Blinkschaltung, erweitert um weitere LEDs.<\/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-6988527 elementor-widget elementor-widget-text-editor\" data-id=\"6988527\" 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;\">Der zuvor ausgef\u00fchrte Code stammt aus einem Beispiel der Raspberry Pi Foundation namens <strong>blink<\/strong>. Dieses Programm schaltete die an den <a href=\"https:\/\/botland.de\/module-und-sets-fuer-raspberry-pi-pico\/21574-raspberry-pi-pico-w-rp2040-arm-cortex-m0-cyw43439-wlan-5056561803173.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico W<\/strong><\/a> angeschlossene LED synchron ein und aus. Blink-Projekte sind in allen Programmier-Tutorials, die auf kleinen Hardware-Plattformen basieren, sehr verbreitet. Deshalb zeige ich Ihnen auch, wie Sie diese Art von Programm selbst schreiben k\u00f6nnen, allerdings in einer etwas aufw\u00e4ndigeren Version, da wir hier eine etwas gr\u00f6\u00dfere Anzahl von Leuchtdioden verwenden werden. Zun\u00e4chst sollten wir jedoch die notwendige Ausr\u00fcstung vorbereiten. Bisher war nur <strong>eine <a href=\"https:\/\/botland.de\/led-dioden\/19994-led-5mm-grun-10st-justpi-5904422328825.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\">gr\u00fcne LED<\/a><\/strong> mit dem RPI Pico W verbunden, die an die Leitung <strong>GP0<\/strong> angeschlossen ist. Die n\u00e4chsten beiden Dioden sollten an die n\u00e4chstfolgenden Pins angeschlossen werden, n\u00e4mlich <strong>GP1 und GP2<\/strong>, die sich direkt daneben befinden. Und vergessen Sie nicht <a href=\"https:\/\/botland.de\/50-widerstande-widerstande\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>die Widerst\u00e4nde<\/strong><\/a>mit einem Wert von 330 \u03a9. Wie Sie auf dem Foto oben sehen k\u00f6nnen, habe ich die Anordnung der ersten Diode leicht ver\u00e4ndert, so dass die Kathoden aller Leuchtelemente durch den <strong>blau markierten Bus (-)<\/strong> verbunden sind.<\/p>\n\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-1e96748 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1e96748\" 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-53e9dfe\" data-id=\"53e9dfe\" 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-50d572d elementor-widget elementor-widget-text-editor\" data-id=\"50d572d\" 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;\">Sobald die Schaltung f\u00fcr k\u00fcnftige Experimente fertig ist, k\u00f6nnen wir zum VSC zur\u00fcckkehren und versuchen, <strong>unseren eigenes Projekt<\/strong> zur Steuerung von drei LEDs zu erstellen. Bevor wir jedoch dazu kommen, m\u00fcssen einige organisatorische Fragen gekl\u00e4rt werden.<\/p>\n<p style=\"font-weight: 400;\">Standardm\u00e4\u00dfig ist unter Visual Studio Code der Ordner <strong>pico-examples<\/strong> angeh\u00e4ngt, der von der Raspberry Pi Foundation bereitgestellte Beispiele enth\u00e4lt. Wenn Sie Ihre eigenen Projekte vorbereiten wollen, lohnt es sich, einen separaten Speicherplatz vorzubereiten oder den oben erw\u00e4hnten Beispielordner zu verwenden. Es spricht nichts dagegen, dass wir unsere k\u00fcnftigen Projekte genau dort platzieren. Abgesehen davon ist pico-examples ein Ort, an dem es sich einfach lohnt, einen Blick darauf zu werfen. Hier gibt es viele Beispielprogramme, und wenn Sie Ihren eigenen Code erstellen, k\u00f6nnen Sie die dort ver\u00f6ffentlichten Informationen nutzen.<\/p>\n<p style=\"font-weight: 400;\">Sie k\u00f6nnen die Struktur des Ordners pico-examples in der nebenstehenden Abbildung, aber auch auf Ihrem eigenen Computerbildschirm sehen. Die darin enthaltenen Dateien und Ordner sind recht zahlreich und haben jeweils eine andere Funktion. Betrachten wir zun\u00e4chst die Ausnahmen, die keine Projekte sind. Ordner wie <strong>.github, .vscode und cmake<\/strong> stehen im Zusammenhang mit der Organisation des gesamten Bereichs. Ersteres ist darauf zur\u00fcckzuf\u00fchren, dass das Ganze aus der Ferne von GitHub heruntergeladen wurde, .vscode steht im Zusammenhang mit der Visual Studio Code-Umgebung, die dort relevante Informationen speichert, w\u00e4hrend cmake Dateien im Zusammenhang mit dem Kompilierungsprozess enth\u00e4lt. <\/p>\n<p style=\"font-weight: 400;\">In pico-examples gibt es auch eine Reihe von separaten Dateien, von denen die meisten f\u00fcr uns nicht von Interesse sind, da sie Informationen \u00fcber die Ordnerkonfiguration oder die Lizenzierung enthalten. Im Moment ist die einzige Datei, der wir etwas mehr Aufmerksamkeit schenken werden, <strong>CMakeLists.txt.<\/strong> Sie enth\u00e4lt eine Liste von Projekten in pico-examples, die wir nach und nach erweitern werden, indem wir unsere eigenen Konstruktionen hinzuf\u00fcgen. Da wir gerade von Projekten sprechen: Es gibt eine ganze Reihe davon, die in verschiedenen Ordnern untergebracht sind, von denen einige weitere Ordner verbergen. So umfasst das Innere des adc nicht weniger als sieben Projekte, die sich auf diese Art von Funktionalit\u00e4t beziehen. Der letzte Ordner, auf den wir achten m\u00fcssen, ist <strong>build<\/strong>, den wir bereits in einem fr\u00fcheren Artikel verwendet haben, indem wir die .uf2-Datei kopiert haben. Hier befinden sich alle resultierenden Kompilierungsdateien in bestimmten Ordnern, die mit dem Namen der Projektdefinition \u00fcbereinstimmen.<\/p>\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<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-bca3c9f\" data-id=\"bca3c9f\" 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-42a1456 elementor-widget elementor-widget-image\" data-id=\"42a1456\" 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\/struk_pico_examples.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"struk_pico_examples\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ5MjksInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvc3RydWtfcGljb19leGFtcGxlcy5wbmcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"336\" height=\"983\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/struk_pico_examples.png\" class=\"attachment-large size-large wp-image-74929\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/struk_pico_examples.png 336w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/struk_pico_examples-103x300.png 103w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/>\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\">Struktur des Ordners pico-examples.<\/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\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-1937953 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1937953\" 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-557f021\" data-id=\"557f021\" 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-52e057d elementor-widget elementor-widget-image\" data-id=\"52e057d\" 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\/expanded_blink_folder.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"expanded_blink_folder\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ5MzMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvZXhwYW5kZWRfYmxpbmtfZm9sZGVyLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"333\" height=\"982\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/expanded_blink_folder.png\" class=\"attachment-large size-large wp-image-74933\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/expanded_blink_folder.png 333w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/expanded_blink_folder-102x300.png 102w\" sizes=\"(max-width: 333px) 100vw, 333px\" \/>\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\">pico-examples, nachdem Sie den Ordner extended_blink erstellt haben.<\/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\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-545b590\" data-id=\"545b590\" 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-b44197b elementor-widget elementor-widget-text-editor\" data-id=\"b44197b\" 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;\">Es ist nun an der Zeit, unser erstes Projekt in VSC zu erstellen. Es handelt sich um eine <strong>erweiterte Version des klassischen Blinks<\/strong> <strong>der mit drei LEDs arbeitet.<\/strong> Zun\u00e4chst m\u00fcssen wir uns nat\u00fcrlich einen Namen f\u00fcr das Projekt ausdenken, der auch der Name des Ordners sein wird, in dem unsere Dateien gespeichert werden. Sie m\u00fcssen wissen, dass auch die Nomenklatur auf bestimmten Grunds\u00e4tzen beruht. Die Projektnamen sollten <strong>einfach<\/strong> sein, vorzugsweise<strong> englische<\/strong> Begriffe verwenden und keine deutschen Zeichen oder Sonderzeichen verwenden. Das Design des erweiterten LED-Blinkens kann einfach als <strong>&#8220;expanded blink&#8221;<\/strong> bezeichnet werden, aber vor allem der Schreibstil selbst hat auch eine gewisse Bedeutung und spiegelt sich gut in dem folgenden Text wider, den ich einmal in einem Forum gesehen habe.<\/p>\n<p style=\"font-weight: 400;\">IfYouLikeReadingStuffLikeThisThenUseCamelCase.<\/p>\n<p style=\"font-weight: 400;\">if_you_like_reading_stuff_like_this_then_use_snake_case.<\/p>\n<p style=\"font-weight: 400;\">So k\u00f6nnen wir unser Projekt als ExpandedBlink oder expanded_blink speichern. Welche Version Sie w\u00e4hlen, bleibt Ihnen \u00fcberlassen, ich habe mich f\u00fcr expanded_blink entschieden, da in pico-examples Projekte nach dieser Konvention gespeichert werden.<\/p>\n<p style=\"font-weight: 400;\">In der obigen Abbildung k\u00f6nnen Sie auch den Ordner TestCode sehen, der, wie der Name schon sagt, eine Art Test war, bevor ich die Artikel schrieb, und wie Sie sehen k\u00f6nnen, habe ich ihn reflexartig gem\u00e4\u00df CamelCase benannt.<\/p>\n<p style=\"font-weight: 400;\">Wenn Sie den Mauszeiger \u00fcber den Explorer-Bereich bewegen, sehen Sie neben dem Pico-Beispiel Piktogramme, mit denen Sie neue Dateien und Ordner erstellen k\u00f6nnen. Damit sollte der Ordner expanded_blink erzeugt werden und zwei Dateien darin hinzugef\u00fcgt werden: expanded_blink.c und CMakeLists.txt. Im ersten Fall wird der Code in C geschrieben, w\u00e4hrend die Textdatei Informationen \u00fcber den Kompilierungsprozess enth\u00e4lt. Wenn in Ihrem Fall beide Dateien nach der Erstellung rot hervorgehoben sind, besteht kein Grund zur Sorge. An diesem Punkt haben wir die Struktur des Ordners pico-examples mit roher Gewalt manipuliert, und um den \u00c4nderungen Rechtskraft zu verleihen, muss die Datei CMakeLists.txt, die sich auf die gesamten pico-examples bezieht, leicht ge\u00e4ndert werden. Sie finden sie am unteren Rand der Datei-Explorer-Ansicht.<\/p>\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-7bda6b9 elementor-widget elementor-widget-image\" data-id=\"7bda6b9\" 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\/cmakelists_add_project.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"cmakelists_add_project\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ5MzcsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvY21ha2VsaXN0c19hZGRfcHJvamVjdC5wbmcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"398\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/cmakelists_add_project.png\" class=\"attachment-large size-large wp-image-74937\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/cmakelists_add_project.png 994w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/cmakelists_add_project-300x150.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/cmakelists_add_project-768x382.png 768w\" 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\">Der Inhalt von CMakeLists.txt f\u00fcr pico-Beispiele.<\/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-7d3d6c8 elementor-widget elementor-widget-text-editor\" data-id=\"7d3d6c8\" 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\">Damit unser neuer Ordner und damit das expended_blink Projekt akzeptiert wird, m\u00fcssen wir ihn in der Datei CMakeLists.txt hinzuf\u00fcgen. Am Ende finden Sie eine Liste in der die Namen aller beispielhaften Projekte in Klammern angegeben sind. An Ihrem Ende f\u00fcgen wir hinzu:<\/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-fda6b5f elementor-widget elementor-widget-code-highlight\" data-id=\"fda6b5f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>add_ subdirectory(expanded_blink)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\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-a69f4f4 elementor-widget elementor-widget-text-editor\" data-id=\"a69f4f4\" 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 der \u00c4nderung k\u00f6nnen wir die Datei speichern. Nach einer Weile wird der Ordner pico-examples neu geladen und die kurz zuvor hinzugef\u00fcgten Dateien leuchten gr\u00fcn auf. Dies bedeutet, dass wir erfolgreich ein neues Projekt zu pico-examples hinzugef\u00fcgt haben. Nat\u00fcrlich ist er im Moment noch leer, aber das wird sich bald \u00e4ndern.<\/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-46db236 elementor-widget elementor-widget-heading\" data-id=\"46db236\" 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 des Programmcodes<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb98075 elementor-widget elementor-widget-text-editor\" data-id=\"fb98075\" 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 Programm, das unsere leuchtenden Elemente steuern soll, beginnt mit einem leeren Skript. Wie ich bereits erw\u00e4hnt habe, besteht jedes Programm, das von einem Mikrocontroller, einem Prozessor oder einer anderen digitalen Maschine ausgef\u00fchrt wird, aus sequentiell geschriebenen Anweisungen. Der Programmierer erstellt einen Code, der Schritt f\u00fcr Schritt ausgef\u00fchrt wird. Werden wir in diesem Fall den Code einfach Anweisung f\u00fcr Anweisung schreiben? Nicht ganz. Dies w\u00e4re der Fall, wenn wir das Programm in Maschinencode schreiben wollten, aber das w\u00e4re \u00e4u\u00dferst kompliziert. In dieser Hinsicht ist die Sprache C einfacher und intuitiver, d. h. sie ist eher f\u00fcr Menschen als f\u00fcr Maschinen geeignet.<\/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-646e2e1 elementor-widget elementor-widget-code-highlight\" data-id=\"646e2e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>\/\/comment\r\n\/\/program area before main function\r\n\r\nint main(){\r\n    \/*lengthy comment,\r\n    here we will place\r\n    single commands*\/\r\n}\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\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-31a0bed elementor-widget elementor-widget-text-editor\" data-id=\"31a0bed\" 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;\">Wir k\u00f6nnen den Programmbereich zun\u00e4chst <strong>in zwei Teile<\/strong> unterteilen, n\u00e4mlich in den Bereich oberhalb der Funktion main und den Bereich innerhalb der Funktion. In der Sprache C werden alle Anweisungen, die wir ausf\u00fchren wollen, in der <strong>Funktion main<\/strong> untergebracht. Eine Funktion ist nichts anderes als eine Art von <strong>Befehl<\/strong>, der bei der Kompilierung in eine Reihe von Maschinenbefehlen umgewandelt wird, die die Form von Nullen und Einsen haben und im Speicher abgelegt werden. Funktionen k\u00f6nnen in Form <strong>eines einzelnen Befehls<\/strong> oder<strong> einer Reihe von Befehlen<\/strong> ausgef\u00fchrt werden. Es ist auch gut zu wissen, dass wir die Funktionen <strong>selbstst\u00e4ndig<\/strong> schreiben k\u00f6nnen; es ist recht einfach, sich ein Skript vorzustellen, das unabh\u00e4ngig von \u00e4u\u00dferen Faktoren immer wieder die gleiche Aufgabe ausf\u00fchrt. Anstatt einen extrem aufw\u00e4ndigen Code zu schreiben, k\u00f6nnen bestimmte feste Elemente des Programms in einer Funktion gekapselt werden, der von Zeit zu Zeit aufgerufen wird, um anzuzeigen: &#8220;F\u00fchre jetzt diesen Teil des Codes aus und kehre zur Hauptaufgabe zur\u00fcck&#8221;. Die Funktion main ist genau so etwas, sie ist die Hauptfunktion des Programms, innerhalb derer wir andere Befehle platzieren werden.<\/p>\n<p style=\"font-weight: 400;\">Vor dem Schl\u00fcsselwort <strong>main<\/strong> steht das geheimnisvolle <strong>int<\/strong>. Es ist einer der grundlegenden Datentypen in der Sprache C, und seine Platzierung ist auf die Tatsache zur\u00fcckzuf\u00fchren, dass Funktionen sowohl Daten empfangen als auch zur\u00fcckgeben k\u00f6nnen. Wenn wir zum Beispiel eine Funktion schreiben, die die Addition von zwei Zahlen durchf\u00fchrt, muss sie einige Argumente aufnehmen, eine mathematische Operation durchf\u00fchren und dann das Ergebnis zur\u00fcckgeben. int ist genau der Datentyp, den die Hauptfunktion zur\u00fcckgibt. Wir wollen hier nicht n\u00e4her darauf eingehen, welche Daten das sind, werden aber in Zukunft auf dieses Thema zur\u00fcckkommen.<\/p>\n<p style=\"font-weight: 400;\">Es gibt auch eine <strong>Klammer<\/strong> neben der Funktion main, in der die Daten stehen, die die Funktion aufnehmen kann. Dies k\u00f6nnten die bereits erw\u00e4hnten Argumente f\u00fcr die Additionsoperation sein. In diesem Fall akzeptiert main jedoch keine Daten, so dass die Klammer leer ist.<\/p>\n<p style=\"font-weight: 400;\">Zus\u00e4tzlich zu den \u00fcblichen Klammern k\u00f6nnen Sie auch <strong>geschweifte Klammern<\/strong> sehen. Darin werden weitere Befehle platziert, die vom Prozessor ausgef\u00fchrt werden sollen. Im obigen Beispiel wird dort ein Kommentar eingef\u00fcgt. In der Sprache C wird der Operator &#8216;\/\/&#8217; verwendet, um den Kommentar hinzuzuf\u00fcgen, alles was danach eingegeben wird, wird vom Compiler ignoriert. Wenn Sie einen l\u00e4ngeren Kommentar, der sich \u00fcber mehrere Zeilen erstreckt, hinzuf\u00fcgen m\u00f6chten, k\u00f6nnen Sie dies mit der Konstruktion \u201e\/* lengthy comment *\/\u201d tun. Kommentare im Code dienen als Information f\u00fcr den Programmierer, der den Code liest, und diese sind selbst bei den einfachsten Programmen sinnvoll. Eine gute Praxis ist es, den <strong>Code auf Englisch zu kommentieren<\/strong> &#8211; man wei\u00df nie, wer sich unsere Programme zuf\u00e4llig anschaut. Zu beachten ist auch, wie der Code formatiert ist. Wie Sie sehen k\u00f6nnen, ist der lange Kommentar leicht versetzt; genauer gesagt, wird am Anfang jeder Zeile ein Tabulatorzeichen eingef\u00fcgt. Ein solches Vorgehen soll die Lesbarkeit des Codes erleichtern; f\u00fcr den Compiler hat die zus\u00e4tzliche Unterteilung keine Bedeutung. In der Regel wird ein zus\u00e4tzlicher Tabulator verwendet, wenn Anweisungen innerhalb von Funktionen, bedingten Anweisungen, Schleifen und anderen spezifischen Konstrukten im Code stehen. Es ist recht intuitiv und wird sich mit der Zeit bestimmt einpr\u00e4gen. Au\u00dferdem f\u00fcgt das Programm beim Schreiben von Codes in VSC automatisch ein Tabulatorzeichen in eine neue Zeile ein, entsprechend einem zuvor geschriebenen Befehl.<\/p>\n<p style=\"font-weight: 400;\">Wie ich bereits erw\u00e4hnt habe, gibt es oberhalb der Funktion main auch einen Programmbereich, in dem wir bestimmte Konstrukte wie Konstanten, Definitionen, Deklarationen oder Direktiven unterbringen werden. Wir werden sie im Laufe der Zeit anhand von praktischen Beispielen kennenlernen.<\/p>\n<p style=\"font-weight: 400;\">Nachdem Sie wissen, wie der Aufbau eines Programms in der Sprache C in aussieht, <strong>k\u00f6nnen wir uns daran machen, es zu schreiben.<\/strong> Damit dies m\u00f6glich ist, m\u00fcssen wir jedoch definieren, was unser Programm konkret tun soll. Dies wird eine erweiterte Version des Skripts f\u00fcr das Blinken der LED sein. Wir k\u00f6nnen auch ein Programm vorbereiten, das in einem bestimmten Zeitraum mehrere LEDs ausl\u00f6st, w\u00e4hrend die vorherige erlischt. Etwa so: gr\u00fcne LED einschalten, eine halbe Sekunde warten, gelbe LED einschalten, gr\u00fcne LED ausschalten, eine halbe Sekunde warten, rote LED einschalten, gelbe LED ausschalten und so weiter.<\/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-3595884 elementor-widget elementor-widget-code-highlight\" data-id=\"3595884\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>#include \"pico\/stdlib.h\"\r\n\r\nint main() {\r\n    gpio_init(0); \/\/initialization of GP0, GP1 and GP2 pins\r\n    gpio_init(1);\r\n    gpio_init(2);\r\n\r\n    gpio_set_dir(0, GPIO_OUT); \/\/setting GP0, GP1 and GP2 as outputs\r\n    gpio_set_dir(1, GPIO_OUT);\r\n    gpio_set_dir(2, GPIO_OUT);\r\n\r\n    gpio_put(0, 1); \/\/set state 1 on pin 0\r\n    sleep_ms(500); \/\/wait 500ms\r\n    gpio_put(0, 0); \/\/set state 0 on pin 0\r\n    gpio_put(1, 1); \/\/set state 1 on pin 1\r\n    sleep_ms(500);\r\n    gpio_put(1, 0);\r\n    gpio_put(2, 1);\r\n    sleep_ms(500);\r\n    gpio_put(2, 0);\r\n    sleep_ms(500);\r\n}\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\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-281c2f3 elementor-widget elementor-widget-text-editor\" data-id=\"281c2f3\" 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 erste Programm, das wir ausf\u00fchren werden, ist das Programm, dessen Code Sie oben sehen k\u00f6nnen. Im Moment sieht es vielleicht noch etwas geheimnisvoll aus, aber in K\u00fcrze, wenn ich Ihnen seine Struktur erkl\u00e4re, wird alles klar werden. Das Ganze besteht eigentlich aus vier Arten von Befehlen, die mehrmals mit unterschiedlichen Parametern wiederholt werden. Beginnen wir unsere Analyse mit dem Kern des Codes, d. h. mit den Anweisungen innerhalb der Hauptfunktion.<\/p>\n<p style=\"font-weight: 400;\">Die ersten drei Befehle sind <strong>gpio_init<\/strong>, und wenn man sie betrachtet, ist ihre Bedeutung leicht zu verstehen &#8211; <strong>init<\/strong> steht f\u00fcr <strong> initialization<\/strong>, w\u00e4hrend <strong>gpio<\/strong> f\u00fcr <strong>general purpose input\/output<\/strong> steht. gpio_init ist also nichts anderes als ein Initialisierungsbefehl f\u00fcr Ein-\/Ausgabeanschl\u00fcsse (I\/O), mit dem der Mikrocontroller bestimmte externe Leitungen f\u00fcr den Betrieb vorbereitet. Die Zahl in den Klammern bestimmt, welche Leitungen dies sind. 0, 1, 2 sind die Anschl\u00fcsse GP0, GP1 und GP2, an die wir zuvor die LEDs angeschlossen haben. Es w\u00e4re auch n\u00fctzlich, anzugeben, in welchem Modus wir diese Ports verwenden werden. Derzeit wei\u00df der RP2040 nur, dass wir drei Pins verwenden wollen, aber ihr Zweck bleibt ein Geheimnis. Um dies zu \u00e4ndern, verwendet man gpio_set_dir, diese Art von Befehl ist auch recht einfach zu entwickeln. Sie kennen bereits die Bedeutung von gpio, set ist einfach set, w\u00e4hrend dir die Abk\u00fcrzung f\u00fcr direction ist. Die im Projekt verwendeten Pins werden die Leuchtdioden steuern, daher m\u00fcssen sie als Ausg\u00e4nge konfiguriert werden, d. h. die Schaltung wird diese Leitungen steuern, indem der entsprechende logische Zustand an ihnen eingestellt wird. Um GP0, GP1 und GP2 als Ausg\u00e4nge zu setzen, geben Sie die Pin-Nummern 0, 1, 2 und das Schl\u00fcsselwort GPIO_OUT in den Parametern der Funktion gpio_set_dir an. Beachten Sie, dass alle bisher besprochenen Befehle mit <strong>einem Semikolon<\/strong> enden. Ein solches Verfahren ist beabsichtigt, da es dem Compiler mitteilt, dass ein bestimmter Befehl an dieser Stelle endet.<\/p>\n<p style=\"font-weight: 400;\">Sobald die Leitungen konfiguriert sind, k\u00f6nnen wir damit beginnen, sie zu steuern. Dazu verwenden wir <strong>gpio_put<\/strong>, das es erm\u00f6glicht, den Ausgang auf Null oder Eins zu setzen. Dieser wird innerhalb der Klammern angegeben, wie der zweite Parameter, der durch die Zahl 0 oder 1 beschrieben wird. Die erste Ziffer in Klammern ist die Pin-Nummer, so dass gpio_put(0, 1); als Setzen des Zustands Eins am Pin-Null beschrieben werden kann.<\/p>\n<p style=\"font-weight: 400;\">Der letzte im Programm verwendete Befehl ist sleep_ms, die Bedeutung dieser Funktion ist ebenfalls recht vorhersehbar. Sie bewirkt einfach, dass der Mikrocontroller f\u00fcr eine bestimmte Zeitspanne pausiert, in diesem Fall Millisekunden, deren Wert in Klammern angegeben ist. Die Zahl 500 steht f\u00fcr 500 ms, also das Warten einer halben Sekunde.<\/p>\n<p style=\"font-weight: 400;\">Programme in der Sprache C werden Schritt f\u00fcr Schritt, Anweisung f\u00fcr Anweisung ausgef\u00fchrt. Beachten Sie, dass wir zu Beginn die an GP0 angeschlossene Diode einschalten, dann 500 ms warten und in den n\u00e4chsten Schritten die Diode, die eine halbe Sekunde lang eingeschaltet war, ausschalten und gleichzeitig ein anderes Lichtelement einschalten. Dann warten wir ein zweites Mal 500 ms, und der Zyklus des Ein- und Ausschaltens der LEDs wiederholt sich, nur dass wir jetzt die Pins GP1 und GP2 steuern. Auf diese Weise k\u00f6nnen wir die Programme analysieren und den Code in aufeinanderfolgende Schritte zerlegen, die vom Mikrocontroller ausgef\u00fchrt werden.<\/p>\n<p style=\"font-weight: 400;\">Am Anfang des Programms finden Sie auch die mysteri\u00f6se Zeile #include &#8220;pico\/stdlib.h&#8221;. Wie ich bereits erw\u00e4hnt habe, werden wir oberhalb der Hauptfunktion des Programms bestimmte Konstrukte, wie z. B. Anh\u00e4nge, platzieren, im Code k\u00f6nnen Sie genau so etwas sehen. Dies ist mehr eine Information f\u00fcr den Compiler als ein Teil des vom Chip implementierten Programms. Dank der Bibliothek, die im Code enthalten ist, k\u00f6nnen wir spezifische Funktionen und Parameter verwenden, die von der Raspberry Pi Foundation vorbereitet wurden. Wenn wir beispielsweise die Einbindung der stdlib-Bibliothek aufheben, meldet VSC einen Fehler und teilt uns mit, dass ihr etwas wie GPIO_OUT unbekannt ist. Dank einer externen Bibliothek waren wir in der Lage, den Ausgangsanschluss auf diese Weise zu deklarieren. Auch die Schreibweise dieser Direktive ist erkl\u00e4rungsbed\u00fcrftig: Am Anfang steht das Schl\u00fcsselwort #include, gefolgt vom Pfad zur so genannten Header-Datei (Erweiterung .h) die Prototypen der Funktion enth\u00e4lt, die im Code verwendet werden k\u00f6nnen, vorausgesetzt nat\u00fcrlich, dass der entsprechende Anhang am Anfang der Datei steht. Externe Bibliotheken gibt es eine ganze Reihe, und in den folgenden Beispielen werden wir sie praktisch immer verwenden, zus\u00e4tzlich zur Vorbereitung unserer eigenen Bibliothek in der Zukunft.<\/p>\n<p style=\"font-weight: 400;\">Damit ist unser erster Code fertig, aber ich m\u00f6chte schon jetzt darauf hinweisen, dass es sich nicht um die endg\u00fcltige Form handelt und wir im weiteren Verlauf des Artikels noch einige \u00c4nderungen daran vornehmen werden. Sie k\u00f6nnen den Code nat\u00fcrlich kopieren, aber ich empfehle, ihn selbst neu zu schreiben. Auf diese Weise kann das erworbene Wissen viel besser aufgenommen 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-82cdf28 elementor-widget elementor-widget-heading\" data-id=\"82cdf28\" 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\">Vervollst\u00e4ndigung der CMakeLists Datei<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bcc6a5 elementor-widget elementor-widget-code-highlight\" data-id=\"7bcc6a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>add_executable(expanded_blink\r\n        expanded_blink.c\r\n        )\r\n\r\n# pull in common dependencies\r\ntarget_link_libraries(expanded_blink pico_stdlib)\r\n\r\n# create map\/bin\/hex file etc.\r\npico_add_extra_outputs(expanded_blink)\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\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-7c1efe8 elementor-widget elementor-widget-text-editor\" data-id=\"7c1efe8\" 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 einzige Element, das uns daran hindert, das erweiterte blink-Projekt auszuf\u00fchren, ist die Datei <strong>CMakeLists.txt<\/strong> und ihr Inhalt, der noch nicht vorhanden ist. Die Erstellung von so genannten &#8220;make&#8221; Dateien, die den Prozess der Kompilierung und Erstellung von Software automatisieren sollen, kann ein \u00e4u\u00dferst komplexer Prozess sein. Daher werde ich nicht zu tief in dieses Thema eindringen, denn im Internet gibt es eine ganze Reihe von Inhalten, die das allgemeine Konzept von &#8220;make&#8221;-Dateien vorstellen.<\/p>\n<p style=\"font-weight: 400;\">Im Fall von RPI Pico ist CMakeLists.txt in drei Teile unterteilt. Im ersten Teil, dank des add_executable Befehls, f\u00fcgen wir die ausf\u00fchrbare Datei expended_blink.c zum expended_blink Projekt hinzu, wenn es mehr Dateien gibt, und wenn solche Situationen in der Zukunft auftreten, sollten sie hier aufgenommen werden. Als N\u00e4chstes muss angegeben werden, welche Bibliotheken im Projekt verwendet wurden. Dies wird durch target_link_libraries erm\u00f6glicht, wobei wir den Projektnamen und die enthaltenen Bibliotheken in Klammern setzen. Die letzte Regel in CMakeLists ist pico_add_extra_outputs, die sicherstellt, dass alle Bin\u00e4rdateien w\u00e4hrend des Kompilierungsprozesses erzeugt 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-401aa7a elementor-widget elementor-widget-heading\" data-id=\"401aa7a\" 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\">Erster Start von expanded_blink<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c7ccbc elementor-widget elementor-widget-video\" data-id=\"4c7ccbc\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;mute&quot;:&quot;yes&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\/01\/IMG_0565.mov\" controls=\"\" preload=\"metadata\" muted=\"muted\" 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-5835d44 elementor-widget elementor-widget-text-editor\" data-id=\"5835d44\" 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;\">Es ist nun an der Zeit, das Projekt expanded_blink zum ersten Mal auszuf\u00fchren. Wenn alle Dateien gespeichert sind, k\u00f6nnen wir zur Registerkarte CMake gehen, die wir bereits im vorherigen Material verwendet haben. W\u00e4hlen Sie dort wie zuvor das entsprechende Projekt in der Option Build aus und f\u00fchren Sie dann die Kompilierung aus.<\/p>\n<p style=\"font-weight: 400;\">Sobald diese erfolgreich ist, k\u00f6nnen Sie, wie beim ersten Blink-Projekt, die Datei expended_blink.uf2 auf den RPI-RP2 hochladen. Vergessen Sie nicht, beim Anschlie\u00dfen des Boards die Taste auf dem Board zu dr\u00fccken, damit der Raspberry Pi Pico W in den Programmiermodus bootet.<\/p>\n<p style=\"font-weight: 400;\">Sobald die Daten gespeichert sind, sollte ein Effekt wie im obigen Video zu sehen sein &#8211; <strong>jede LED leuchtet abwechselnd f\u00fcr eine halbe Sekunde auf, danach erlischen sie alle<\/strong>. Aber ist das der Effekt, den wir erwartet haben? Nun, nicht ganz. Die gesamte Sequenz sollte immer wieder ausgef\u00fchrt werden, unterliegt der vorbereitete Code in diesem Fall einem Fehler? Nein, alles wurde wie geplant ausgef\u00fchrt und der Code funktioniert einwandfrei. Schauen Sie sich das Programm an, das wir geschrieben haben. Wir initialisieren die drei Pins, w\u00e4hlen ihre Funktionalit\u00e4t aus und steuern dann mit ein paar Befehlen, die einen bestimmten logischen Zustand einstellen und den RP2040 pausieren, die LEDs. Was passiert jedoch, wenn der Chip den letzten Befehl sleep_ms(500); ausf\u00fchrt? Die richtige Antwort ist: nichts, das Programm wurde ausgef\u00fchrt, der Chip hat keine Ahnung, dass es sich aus unserer Sicht lohnen w\u00fcrde, den gesamten Vorgang des Ein- und Ausschaltens der LEDs zu wiederholen. <\/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-4056038 elementor-widget elementor-widget-heading\" data-id=\"4056038\" 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\">Endlose Lichteffekte<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0d58e3b elementor-widget elementor-widget-code-highlight\" data-id=\"0d58e3b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>#include \"pico\/stdlib.h\"\r\n\r\nint main() {\r\n    gpio_init(0); \/\/initialization of GP0, GP1 and GP2 pins\r\n    gpio_init(1);\r\n    gpio_init(2);\r\n\r\n    gpio_set_dir(0, GPIO_OUT); \/\/setting GP0, GP1 and GP2 as outputs\r\n    gpio_set_dir(1, GPIO_OUT);\r\n    gpio_set_dir(2, GPIO_OUT);\r\n\r\n    while (true) { \/\/infinite while loop\r\n        gpio_put(0, 1);\r\n        sleep_ms(500);\r\n        gpio_put(0, 0);\r\n        gpio_put(1, 1);\r\n        sleep_ms(500);\r\n        gpio_put(1, 0);\r\n        gpio_put(2, 1);\r\n        sleep_ms(500);\r\n        gpio_put(2, 0);\r\n        sleep_ms(500);\r\n    }\r\n}\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\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-a34ad26 elementor-widget elementor-widget-text-editor\" data-id=\"a34ad26\" 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;\">Wenn wir wollen, dass der RP2040 die LEDs st\u00e4ndig synchron ein- und ausschaltet, m\u00fcssen wir <strong>den Teil des Codes, der diese Aufgabe ausf\u00fchrt, irgendwie in eine Schleife bringen<\/strong>. Die ersten beiden Befehlss\u00e4tze sind f\u00fcr die Konfiguration der Anschl\u00fcsse zust\u00e4ndig und es ist nicht sinnvoll, sie wiederholt auszuf\u00fchren, da die einmal als Ausg\u00e4nge konfigurierten Ausg\u00e4nge auch als solche erhalten bleiben. Damit der Code, der die LEDs steuert, unbegrenzt ausgef\u00fchrt werden kann, und zwar so lange, bis der Strom abgeschaltet wird, <strong>m\u00fcssen wir ihn in eine Schleife einbauen.<\/strong> In der Sprache C sind Schleifen spezielle Konstrukte, die es erm\u00f6glichen, den darin enthaltenen Code wiederholt auszuf\u00fchren. Dar\u00fcber hinaus k\u00f6nnen Schleifen mit bestimmten Bedingungen verkn\u00fcpft werden, so dass wir ihre Ausf\u00fchrung steuern k\u00f6nnen. Eine Schleife kann nur wenige Male ausgef\u00fchrt werden, sie kann \u00fcberhaupt nicht ausgef\u00fchrt werden oder sie kann unendlich oft ausgef\u00fchrt werden.<\/p>\n<p style=\"font-weight: 400;\">In unserem Code werden wir eine <strong>while-Schleife<\/strong> verwenden, die so lange l\u00e4uft, bis die in Klammern gesetzte Bedingung erf\u00fcllt ist. Mit anderen Worten: Der Code innerhalb der Schleife wird ausgef\u00fchrt, solange die Bedingung in den Klammern erf\u00fcllt ist. Wenn der Code innerhalb der Schleife ausgef\u00fchrt wird, kehrt der Schaltkreis zum Anfang der Schleife zur\u00fcck und f\u00fchrt sie erneut aus.<\/p>\n<p style=\"font-weight: 400;\">So etwas wie eine Endlosschleife kommt in der Programmierung immer wieder vor. Normalerweise wollen wir, dass das Programm die ganze Zeit l\u00e4uft, egal ob wir nur die Leuchtdioden steuern oder z. B. Daten vom Temperatursensor lesen und den Wert auf einem Display anzeigen. Der Code muss ohne Unterbrechung ausgef\u00fchrt werden, da sonst die Temperatur nur einmal abgelesen wird und nur ein Wert auf dem Bildschirm zu sehen ist.<\/p>\n<p style=\"font-weight: 400;\">Was sollte in diesem Fall in die Bedingung der while-Schleife aufgenommen werden, damit sie unbegrenzt ausgef\u00fchrt wird? Die Antwort ist einfach: Wahrheit, oder einfach <strong>true<\/strong>. In der Sprache C k\u00f6nnen wir etwas wie true als eine immer erf\u00fcllte Bedingung behandeln. Auf diese Weise kann eine st\u00e4ndig laufende Schleife erstellt werden. Nat\u00fcrlich k\u00f6nnen wir auch kompliziertere Bedingungen in Klammern setzen, aber damit werden wir uns in sp\u00e4teren Materialien 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-9559291 elementor-widget elementor-widget-video\" data-id=\"9559291\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;mute&quot;:&quot;yes&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\/01\/IMG_0577.mov\" controls=\"\" preload=\"metadata\" muted=\"muted\" 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-c70aa92 elementor-widget elementor-widget-text-editor\" data-id=\"c70aa92\" 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 wir die neue Datei extended_blink.uf2 kompiliert und auf den <strong>Raspberry Pi Pico W<\/strong> hochgeladen haben, k\u00f6nnen wir sehen, dass die LEDs dieses Mal wiederholt ein- und ausgeschaltet werden, d.h. unsere Endlosschleife funktioniert korrekt. Damit ist die Gestaltung des erweiterten Programms zur LED-Steuerung abgeschlossen, aber ich m\u00f6chte Sie ermutigen, zu experimentieren. Sie k\u00f6nnen versuchen, die Anschl\u00fcsse zu \u00e4ndern, an die die Leuchtelemente angeschlossen sind, die Timing-Werte zu \u00e4ndern oder die gpio_put Funktionen komplett zu \u00e4ndern, so dass die LEDs jetzt synchron ausgeschaltet werden statt einzuschalten. Mit diesen wenigen Anweisungen, die ich in diesem Artikel beschrieben habe, k\u00f6nnen Sie recht interessante Lichteffekte vorbereiten. <strong>Abschlie\u00dfend<\/strong> m\u00f6chte ich sagen, dass Sie sich <strong>nicht scheuen sollten, Ihre eigenen Projekte zu erstellen, denn dadurch lernen Sie tats\u00e4chlich das Programmieren. <\/strong> <\/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-59e24ca elementor-widget elementor-widget-heading\" data-id=\"59e24ca\" 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\">Das Problem von sleep_ms und anderen blockierenden Funktionen <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-00fc3d3 elementor-widget elementor-widget-image\" data-id=\"00fc3d3\" 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\/rpi_2040_chip_04.webp\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"rpi_2040_chip_04\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzQ5NDksInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvcnBpXzIwNDBfY2hpcF8wNC53ZWJwIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"534\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/rpi_2040_chip_04-1024x683.webp\" class=\"attachment-large size-large wp-image-74949\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/rpi_2040_chip_04-1024x683.webp 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/rpi_2040_chip_04-300x200.webp 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/rpi_2040_chip_04-768x512.webp 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/rpi_2040_chip_04.webp 1200w\" 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\">Der Kern eines der RP2040-Chip-Prototypen. (https:\/\/forbot.pl\/blog\/jak-powstawal-mikrokontroler-raspberry-pi-rp2040-id47544)<\/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-7a9e7d3 elementor-widget elementor-widget-text-editor\" data-id=\"7a9e7d3\" 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;\">Zum Schluss m\u00f6chte ich Ihnen noch etwas anderes sagen. Im heutigen Projekt haben wir die Funktion sleep_ms verwendet, die, wie andere so genannte blockierende Funktionen, aus bestimmten Gr\u00fcnden problematisch ist. Auf den ersten Blick mag diese Funktion sehr praktisch und n\u00fctzlich erscheinen, denn sie erm\u00f6glicht es, das Programm f\u00fcr eine bestimmte Zeit zu unterbrechen, aber genau darin liegt leider ihr gr\u00f6\u00dftes Problem. Was passiert mit dem RP2040-Chip, wenn er auf den Befehl sleep_ms trifft? Der Chip wartet, bis die angegebene Zeit verstrichen ist, f\u00fchrt dann aber keine Aufgaben aus und kann, was noch schlimmer ist, nicht auf externe Faktoren reagieren. Auf den ersten Blick mag dies unbedeutend erscheinen, aber sobald wir uns mit so etwas wie Unterbrechungen vertraut gemacht haben, wird deutlich, dass es h\u00f6chst unratsam ist, ein Programm zu pausieren. Wenn ein Mikrocontroller einfach nur wartet, wird seine Leistung verschwendet.<\/p>\n<p style=\"font-weight: 400;\">Ich m\u00f6chte, dass Sie sich daran erinnern, dass jede blockierende Funktion, auch wenn sie verlockend ist, in der Programmierung unerw\u00fcnscht ist. Es gibt bessere M\u00f6glichkeiten, das Programm scheinbar &#8220;anzuhalten&#8221;, die wir nat\u00fcrlich in Zukunft erforschen werden. Die Funktion sleep_ms geh\u00f6rt nicht zu den verbotenen Befehlen, aber wenn Sie sich entscheiden, sie in Ihren Code einzubauen, m\u00fcssen Sie dies sorgf\u00e4ltig durchdenken und sich ihrer Grenzen bewusst 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-6e5de0b elementor-widget elementor-widget-heading\" data-id=\"6e5de0b\" 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-6207777 elementor-widget elementor-widget-text-editor\" data-id=\"6207777\" 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 erste Projekt, das von Grund auf neu erstellt wurde, liegt hinter uns. <strong>Wir haben drei LEDs zum Laufen gebracht<\/strong> und ich hoffe, dass Sie nach dem Erlernen des Codes einige \u00c4nderungen daran vorgenommen haben, mit anderen Worten, Sie haben experimentiert, denn das Spielen mit dem Code ist das Wesentliche am Programmieren. Meine Aufgabe besteht lediglich darin, ein paar einfache Funktionen zu beschreiben, wie sie funktionieren, was sie bewirken und wie man sie in praktischen Beispielen einsetzt, aber die Magie der Wissenschaft liegt im Prototyping. Au\u00dferdem habe ich Ihnen etwas \u00fcber Make-Konfigurationsdateien erz\u00e4hlt, und wir haben auch etwas \u00fcber die erste Art von Schleifen gelernt, die es in der Programmierung gibt. Schlie\u00dflich erfuhren wir etwas \u00fcber die Problematik der so genannten<strong> Blockierfunktionen<\/strong>. In den folgenden Materialien werden Sie viele Neuigkeiten erfahren, wir werden mehr \u00fcber Schleifentypen und bedingte Funktionen lernen, alles anhand von praktischen Projekten.<\/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-ea972a0 elementor-widget elementor-widget-spacer\" data-id=\"ea972a0\" 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-9aecc5a elementor-widget elementor-widget-text-editor\" data-id=\"9aecc5a\" 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>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 Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.<\/p>\n","protected":false},"author":34,"featured_media":75193,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-78599","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 - #4 - Erste Schritte in der Programmierung - Botland<\/title>\n<meta name=\"description\" content=\"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.\" \/>\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-4-erste-schritte-in-der-programmierung\/\" \/>\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 - #4 - Erste Schritte in der Programmierung - Botland\" \/>\n<meta property=\"og:description\" content=\"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/\" \/>\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-01-28T13:00:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T09:01:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.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=\"25\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-4-erste-schritte-in-der-programmierung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Raspberry Pi Pico Kurs &#8211; #4 &#8211; Erste Schritte in der Programmierung\",\"datePublished\":\"2024-01-28T13:00:53+00:00\",\"dateModified\":\"2026-04-08T09:01:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/\"},\"wordCount\":4473,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-3.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/\",\"name\":\"Raspberry Pi Pico Kurs - #4 - Erste Schritte in der Programmierung - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-3.png\",\"datePublished\":\"2024-01-28T13:00:53+00:00\",\"dateModified\":\"2026-04-08T09:01:24+00:00\",\"description\":\"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-3.png\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-3.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\\\/#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; #4 &#8211; Erste Schritte in der Programmierung\"}]},{\"@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 - #4 - Erste Schritte in der Programmierung - Botland","description":"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.","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-4-erste-schritte-in-der-programmierung\/","og_locale":"de_DE","og_type":"article","og_title":"Raspberry Pi Pico Kurs - #4 - Erste Schritte in der Programmierung - Botland","og_description":"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.","og_url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-01-28T13:00:53+00:00","article_modified_time":"2026-04-08T09:01:24+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Rafa\u0142 Bartoszak","Gesch\u00e4tzte Lesezeit":"25\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#article","isPartOf":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Raspberry Pi Pico Kurs &#8211; #4 &#8211; Erste Schritte in der Programmierung","datePublished":"2024-01-28T13:00:53+00:00","dateModified":"2026-04-08T09:01:24+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/"},"wordCount":4473,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/","url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/","name":"Raspberry Pi Pico Kurs - #4 - Erste Schritte in der Programmierung - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#primaryimage"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.png","datePublished":"2024-01-28T13:00:53+00:00","dateModified":"2026-04-08T09:01:24+00:00","description":"In diesem Artikel werden wir die Vorbereitung unseres eigenen Projekts \u00fcben und die grundlegenden Abh\u00e4ngigkeiten und Regeln beschreiben, die in der Sprache C auftreten.","breadcrumb":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#primaryimage","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.png","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/01\/1-3.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-4-erste-schritte-in-der-programmierung\/#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; #4 &#8211; Erste Schritte in der Programmierung"}]},{"@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\/78599","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=78599"}],"version-history":[{"count":0,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/78599\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media\/75193"}],"wp:attachment":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media?parent=78599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/categories?post=78599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/tags?post=78599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}