{"id":81971,"date":"2024-05-30T14:00:03","date_gmt":"2024-05-30T12:00:03","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-9-teoria-wskaznikow-i-timery\/"},"modified":"2026-04-08T10:57:00","modified_gmt":"2026-04-08T08:57:00","slug":"raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer","status":"publish","type":"post","link":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/","title":{"rendered":"Raspberry Pi Pico Kurs &#8211; #9 &#8211; Indikatorentheorie und Timer"},"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\"> 13<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"81971\" class=\"elementor elementor-81971 elementor-80390\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-55aba11 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"55aba11\" 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-8d07f31\" data-id=\"8d07f31\" 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-af5cf09 elementor-widget elementor-widget-text-editor\" data-id=\"af5cf09\" 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 j\u00fcngsten Material \u00fcber den Raspberry Pi Pico haben wir uns eine der einfachsten Arten von Unterbrechungen, die auf dem Mikrocontroller verf\u00fcgbar sind, genauer angesehen. Au\u00dferdem habe ich Ihnen von der recht interessanten Alarmfunktion und dem Problem der vibrierenden Tastenkontakte erz\u00e4hlt und kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.<\/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-dc10acc elementor-widget elementor-widget-image\" data-id=\"dc10acc\" 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-1.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%3DeyJpZCI6ODgwNjgsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvNEdvdG93eS1aZXN0YXctZG8tbmF1a2ktcHJvZ3JhbW93YW5pYS16LVJhc3BiZXJyeS1QaS1QaWNvLVctMS5qcGcifQ%3D%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-1-1024x139.jpg\" class=\"attachment-large size-large wp-image-88068\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1-1024x139.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1-300x41.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1-768x104.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1.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-cf68f2a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cf68f2a\" 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-0a51ae3\" data-id=\"0a51ae3\" 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-32137c2 elementor-widget elementor-widget-image\" data-id=\"32137c2\" 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-bd2fe07\" data-id=\"bd2fe07\" 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-7ebbc8d elementor-widget elementor-widget-text-editor\" data-id=\"7ebbc8d\" 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-467bb66 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"467bb66\" 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-5066b4f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"5066b4f\" 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-1ee434f elementor-widget elementor-widget-text-editor\" data-id=\"1ee434f\" 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=\"font-size: 16px; 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\"><span style=\"font-weight: bolder;\">Raspberry 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> &#8211; Codekorrekturen und eigene Funktionen <\/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\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #8<\/span> &#8211; Unterbrechungen und Alarme<\/a><\/li>\n<li style=\"font-size: 16px;\"><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-9c8383d elementor-widget elementor-widget-spacer\" data-id=\"9c8383d\" 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-c7a7b7b elementor-widget elementor-widget-heading\" data-id=\"c7a7b7b\" 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-6d0e536 elementor-widget elementor-widget-image\" data-id=\"6d0e536\" 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-600f221 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"600f221\" 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\">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-c4916ba elementor-widget elementor-widget-text-editor\" data-id=\"c4916ba\" 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-2defe8f elementor-widget elementor-widget-text-editor\" data-id=\"2defe8f\" 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-40046ff elementor-widget elementor-widget-spacer\" data-id=\"40046ff\" 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-c188983 elementor-widget elementor-widget-heading\" data-id=\"c188983\" 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\">Sind Indikatoren wirklich schwierig?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72a425a elementor-widget elementor-widget-text-editor\" data-id=\"72a425a\" 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 hat sich herumgesprochen, dass Indikatoren in der Sprache C ein \u00e4u\u00dferst schwieriges Thema sind, das selbst erfahrenen Programmierern viele Schwierigkeiten bereitet. Angesichts der Menge an Material, in dem dieser Aspekt der Programmierung diskutiert wird, sowie der st\u00e4ndig auftauchenden Threads in den Foren, k\u00f6nnen wir daraus schlie\u00dfen, dass dies tats\u00e4chlich der Fall ist. Meiner Meinung nach sollten die Indikatoren jedoch nicht zu sehr verteufelt werden, wie es oft der Fall ist, selbst in Artikeln, in denen der Autor versucht, sie so verst\u00e4ndlich wie m\u00f6glich zu beschreiben. Nach meinen Beobachtungen besteht der h\u00e4ufigste Fehler vieler Tutorials darin, dass sie sich ausschlie\u00dflich auf das Code-Thema konzentrieren. Die Verwendung geeigneter Operatoren und deren grunds\u00e4tzliche Verwendung, ohne dass zuvor erkl\u00e4rt wird, was Indikatoren eigentlich sind. Deshalb werden wir mit diesem Thema beginnen.<\/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-31864fc elementor-widget elementor-widget-image\" data-id=\"31864fc\" 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\/05\/tabela-pamiec.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"tabela-pamiec\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODgwNzQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvdGFiZWxhLXBhbWllYy5qcGcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"333\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/tabela-pamiec.jpg\" class=\"attachment-large size-large wp-image-88074\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/tabela-pamiec.jpg 697w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/tabela-pamiec-300x143.jpg 300w\" sizes=\"(max-width: 697px) 100vw, 697px\" \/>\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\">Beispiel einer Speicherstruktur in einem Mikrocontroller.<\/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-719b01b elementor-widget elementor-widget-text-editor\" data-id=\"719b01b\" 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 den Programmen, die wir bisher durchgef\u00fchrt haben, haben wir verschiedene Arten von Variablen verwendet. Jede hatte einen Typ und, mehr als einmal, einen Anfangswert. Aus der Sicht des Mikrocontrollers sind sie jedoch alle nur eine Folge von Einsen und Nullen, die im Speicher abgelegt sind. Sie k\u00f6nnen diese Art von Situation in der ersten Tabelle in der Grafik oben sehen. Ich habe eine Beispiel-Speicherstruktur angelegt, in der die Variablen A, B, C und D gespeichert sind. Jede dieser Variablen hat einen Wert, aber was uns im Zusammenhang mit Indikatoren am meisten interessieren wird, sind ihre Adressen. Wie Geb\u00e4ude in der realen Welt m\u00fcssen auch die im Speicher des Mikrocontrollers verborgenen Variablen eine eindeutige Adresse haben. Ohne sie w\u00e4re der Speicher nur eine Sammlung von Zufallswerten und wir m\u00fcssten raten, ob 0x05 die Variable A, B oder etwas ganz anderes ist.<\/p>\n<p style=\"font-weight: 400;\">Sobald wir wissen, dass Adressen eine sehr wichtige Rolle spielen, k\u00f6nnen wir uns die zweite Tabelle ansehen, die den Speicher symbolisiert. Sie speichert die gleichen Variablen A, B, C und D, aber abgesehen davon habe ich auch so etwas wie &#8216;Indikator auf C&#8217; und &#8216;Indikator auf B&#8217; dort hineingeschrieben. Der erste befindet sich unter der Adresse 0x00 und speichert den Wert 0x1C. Wie Sie leicht erkennen k\u00f6nnen, ist dieser Wert identisch mit der Adresse der Variablen C. In \u00e4hnlicher Weise speichert der &#8220;Indikator auf B&#8221; unter der Adresse 0x1D den Wert 0x03, der mit der Adresse der Variablen B identisch ist. Vielleicht wissen Sie jetzt, was es mit Indikatoren auf sich hat. Dies sind spezifische Variablen, die wir als <strong>Indikatorvariablen<\/strong> bezeichnen. Auch sie haben einen Typ, der Indikatortyp genannt wird, und speichern Werte, die den Adressen anderer Variablen entsprechen, man k\u00f6nnte sagen, dass sie in gewisser Weise auf diese indizieren. In dem Beispiel in der obigen Grafik zeigt der &#8220;Indikator auf C&#8221; also auf den Speicherplatz, an dem die Variable C gespeichert ist. In \u00e4hnlicher Weise speichert der &#8220;Indikator auf B&#8221; die Adresse der Variablen B.<\/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-d943e16 elementor-widget elementor-widget-image\" data-id=\"d943e16\" 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\/05\/wskaznik-na-wskaznik.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"wskaznik-na-wskaznik\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODgwNzgsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvd3NrYXpuaWstbmEtd3NrYXpuaWsuanBnIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"339\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaznik-na-wskaznik.jpg\" class=\"attachment-large size-large wp-image-88078\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaznik-na-wskaznik.jpg 447w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaznik-na-wskaznik-300x228.jpg 300w\" sizes=\"(max-width: 447px) 100vw, 447px\" \/>\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\">Speicherstruktur mit mehreren Indikatoren.<\/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-ff6fa29 elementor-widget elementor-widget-text-editor\" data-id=\"ff6fa29\" 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 wichtig zu wissen, dass Indikatoren selbst auch einen bestimmten Platz im Speicher des Mikrocontrollers belegen und ihre eigene eindeutige Adresse haben. Daher steht der Erstellung von Indikatoren, die auf einen anderen Indikator verweisen, der wiederum auf einen anderen Indikator verweisen kann, wie in der obigen Grafik, nichts im Wege. In der Realit\u00e4t werden solche Konstruktionen jedoch recht selten verwendet, meist reicht ein einzelner Indikator, der eine Variable aufruft, bereits aus.<\/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-880e829 elementor-widget elementor-widget-heading\" data-id=\"880e829\" 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\">Indikatoren in der Realit\u00e4t<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-12e0281 elementor-widget elementor-widget-text-editor\" data-id=\"12e0281\" 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 wir mehr oder weniger wissen, was &#8216;physische&#8217; Indikatoren sind, k\u00f6nnen wir dazu \u00fcbergehen, sie tats\u00e4chlich zu verwenden und zu sehen, wie sie funktionieren. Zu diesem Zweck habe ich ein Projekt namens Pointers erstellt. Die Schaltung, die wir f\u00fcr das vorherige Material verwendet haben, kann unver\u00e4ndert bleiben. In diesem Fall werden wir in erster Linie den in Visual Studio Code integrierten seriellen Monitor verwenden. Denken Sie also daran, die entsprechenden Befehle zur Aktivierung des so genannten USB-Ausgabestroms in die Datei CMakeLists.txt aufzunehmen. Im ersten Programm, das wir gleich besprechen werden, erstellen wir einen einzelnen Indikator, um die Adresse einer typischen Variablen zu speichern.<\/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-1bbf11c elementor-widget elementor-widget-code-highlight\" data-id=\"1bbf11c\" 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 word-wrap\">\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 \r\n#include \"pico\/stdlib.h\"\r\n\r\nuint8_t variable = 167;\r\nuint8_t *pointer;\t\/\/declaration of pointer\r\n\r\nint main() {\r\n    stdio_init_all();\r\n\r\n    pointer = &amp;variable;\t\/\/address assignment to the pointer\r\n\r\n    while(true) {\r\n        printf(\"variable value: 0x%X, variable addr: %p \\n\\r\", variable, pointer);\r\n        sleep_ms(1000);\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-3fea25e elementor-widget elementor-widget-text-editor\" data-id=\"3fea25e\" 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;\">Dieses Mal erstellen wir im Code eine typische Variable vom Typ uint8_t mit dem Namen variable und dem Anfangswert 167. Aus diesem Element werden wir im folgenden Abschnitt versuchen, die Adresse zu extrahieren. Als n\u00e4chstes erstellen wir einen Indikator namens pointer. Diese Art von Konstrukt wird erstellt, indem ein Sternchen &#8216;*&#8217; vor den Namen gesetzt wird. Au\u00dferdem stand, wie Sie sehen k\u00f6nnen, ein Typ uint8_t vor der Indikatordefinition &#8220;*pointer&#8221;, und doch habe ich gerade eben geschrieben, dass Indikatoren ihren eigenen Typ haben, der einfach ein Indikatortyp ist. Woher kommt dann die f\u00fcr Variablen typische uint8_t? Bei Indikatoren bestimmt der Typ, der dem Indikator vorangestellt ist, auf welchen Datentyp er zeigen wird. In unserem Fall wollen wir die Adresse einer Variablen vom Typ uint8_t extrahieren, weshalb dieser Typ vor dem Indikator stehen sollte. Es kommt h\u00e4ufig vor, dass man auf eine gedankliche Abk\u00fcrzung st\u00f6\u00dft wie &#8220;wir erstellen einen Indikator vom Typ uint16_t&#8221;. Dabei ist zu beachten, dass es sich nicht um den Typ des Indikators handelt, da diese ihren eigenen Typ haben, sondern nur um die Information, welche Art von Daten der Indikator anzeigen wird.<\/p>\n<p style=\"font-weight: 400;\">Sobald wir eine geeignete Variable und einen Indikator erstellt haben, k\u00f6nnen wir ihr eine Adresse zuweisen. Dieser Vorgang wird innerhalb der Hauptfunktion main ausgef\u00fchrt. Dem Indikator weisen wir dank des so genannten Adressenextraktionsoperators &#8220;&amp;&#8221; den der Variablen zugewiesenen Speicherplatz zu.<\/p>\n<p style=\"font-weight: 400;\">In einer unendlichen while-Schleife werden wir den printf-Befehl verwenden, den wir bereits gelernt haben und der die Daten vom RP2040 an den Computerbildschirm senden wird. Diese Funktion bedarf jedoch einer Erkl\u00e4rung, da ich hier zwei bisher nicht verwendete Spezifizierer verwendet habe. Der erste ist &#8216;%X&#8217;, an seine Stelle kommt die variable, aber bisher haben wir, wenn wir den Wert einer Variablen anzeigen wollten, &#8216;%d&#8217; oder &#8216;%f&#8217; verwendet. Hier k\u00f6nnten wir auch &#8216;%d&#8217; einf\u00fcgen. In diesem Fall w\u00fcrde 167, der Wert der variable, im seriellen Monitor erscheinen. Dank der Angaben &#8216;%x&#8217; und &#8216;%X&#8217; wird die Variable jedoch als hexadezimaler Wert dargestellt. Die Differenz zwischen dem kleinen und dem gro\u00dfen &#8216;x&#8217; definiert die Form dieses Wertes. 167 in Hexadezimal ist 0xA7 und so sollte die Variable auf dem Computerbildschirm angezeigt werden. Wenn ein kleines &#8216;%x&#8217; in den Code eingef\u00fcgt w\u00fcrde, w\u00fcrde der Variablenwert als 0xa7 angezeigt. Der zweite Spezifizierer, das &#8220;%p&#8221;, ist ebenfalls neu. Dies ist eine spezielle Notation, die sich genau auf Zeiger oder, allgemeiner, Adressen im Speicher bezieht. Der im pointer gespeicherte Wert wird an dessen Stelle eingef\u00fcgt.<\/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-df16173 elementor-widget elementor-widget-image\" data-id=\"df16173\" 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\/05\/wskazniki1_png.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"wskazniki1_png\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODA0MDQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvd3NrYXpuaWtpMV9wbmcucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"143\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki1_png.png\" class=\"attachment-large size-large wp-image-80404\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki1_png.png 636w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki1_png-300x67.png 300w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/>\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\">\u00dcberwachen Sie das serielle Fenster, nachdem der Code ausgef\u00fchrt wurde.<\/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-bfe93c9 elementor-widget elementor-widget-text-editor\" data-id=\"bfe93c9\" 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 den Code ausgef\u00fchrt und den seriellen Monitor ge\u00f6ffnet haben, k\u00f6nnen wir sehen, dass das RPI die gesammelten Informationen \u00fcber die Variablen sendet. Ihren Wert in hexadezimaler Form &#8211; 0xA7 &#8211; und die Adresse, an der diese Variable im Speicher des Mikrocontrollers platziert wurde, d.h. 20000BB0.<\/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-fdde43f elementor-widget elementor-widget-heading\" data-id=\"fdde43f\" 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\">Indikatoren auf Indikatoren <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b454587 elementor-widget elementor-widget-text-editor\" data-id=\"b454587\" 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\">Lassen Sie uns versuchen, das Programm, das wir gerade gestartet haben, ein wenig zu erweitern. Wir f\u00fcgen einen weiteren Indikator hinzu, mit dem wir \u00fcberpr\u00fcfen k\u00f6nnen, wo unser urspr\u00fcnglicher Indikator platziert wurde. Au\u00dferdem f\u00fcgen wir noch eine Konstante hinzu, und auch hier pr\u00fcfen wir, wo die Speicherung stattgefunden hat.<\/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-942c1a5 elementor-widget elementor-widget-code-highlight\" data-id=\"942c1a5\" 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 word-wrap\">\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 \r\n#include \"pico\/stdlib.h\"\r\n\r\nuint8_t variable = 167;\r\nuint8_t *pointer;\t\/\/declaration of pointer\r\nuint8_t **pointer_to_pointer;\t\/\/declaration of pointer to pionter\r\n\r\nconst float conversion_factor = 3.3\/4095;\r\nconst float *conversion_factor_pointer; \/\/declaration of pointer\r\n\r\nint main() {\r\n    stdio_init_all();\r\n\r\n    \/\/address assignment to the pointer\r\n    pointer = &amp;variable;\r\n    pointer_to_pointer = &amp;pointer;\r\n    conversion_factor_pointer = &amp;conversion_factor;\r\n\r\n    while(true) {\r\n        printf(\"variable value: 0x%X, variable addr: %p \\n\\r\", variable, pointer);\r\n        printf(\"pointer addr: %p \\n\\r\", pointer_to_pointer);\r\n        printf(\"conversion_factor value: %f, conversion_factor addr: %p\\n\\r\", conversion_factor, conversion_factor_pointer);\r\n        sleep_ms(1000);\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-90a5dea elementor-widget elementor-widget-text-editor\" data-id=\"90a5dea\" 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\">Diesmal ist der Code etwas l\u00e4nger, und ich habe die Deklaration eines zweiten Zeigers hinzugef\u00fcgt, der auf den zuvor erstellten Zeiger verweisen wird. Dies ist die Zeiger-zu-Zeiger-Konstruktion, d.h. der erste Zeiger &#8220;pointer&#8221; speichert die Adresse der Variablen variable, w\u00e4hrend unter dem zweiten Zeiger &#8220;pointer_to_pointer&#8221; die Adresse des ersten Zeigers versteckt wird. Wir deklarieren eine solche Kreation, die wir als Zeiger zweiter Ebene bezeichnen k\u00f6nnen, indem wir ein zweites Sternchen neben dem Zeigernamen &#8220;**pointer_to_pointer&#8221; hinzuf\u00fcgen. Dar\u00fcber hinaus habe ich die Konstante conversion_factor in den Code eingef\u00fcgt, die wir bereits in fr\u00fcheren Artikeln verwendet haben. Sie speichert das Flie\u00dfkomma-Ergebnis der Operation 3.3\/4095. Der Zeiger, der die Adresse dieser Variablen enth\u00e4lt, wird wie zuvor deklariert. Zu beachten ist nur, dass im Falle von Konstanten der Zeiger auch das Schl\u00fcsselwort &#8220;const&#8221; enthalten muss.<\/p>\n<p style=\"font-weight: 400\">Im ersten Teil der Hauptfunktion weisen wir den folgenden Zeigern mit Hilfe des Adress-Chunking-Operators Werte zu. Zun\u00e4chst weisen wir dem pointer die Adresse der Variablen variable zu, dann speichern wir in pointer_to_pointer die Adresse des pointers und schlie\u00dflich weisen wir conversion_factor_pointer den Speicherplatz zu, an dem die Variable conversion_factor gespeichert ist.<\/p>\n<p style=\"font-weight: 400\">In der Hauptschleife while werden dank des printf-Befehls die in den Variablen und Zeigern gespeicherten Werte nacheinander angezeigt. Die erste Anweisung ist uns bereits bekannt; sie sendet die in der variable und dem pointer versteckten Werte an den Computerbildschirm. Wir zeigen dann die Zeigeradresse von pointer und im letzten Schritt die in conversion_factor und conversion_factor_pointer gespeicherten Daten an.<\/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-3c7251c elementor-widget elementor-widget-image\" data-id=\"3c7251c\" 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\/05\/wskazniki2_png.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"wskazniki2_png\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODA0MDgsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvd3NrYXpuaWtpMl9wbmcucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"695\" height=\"119\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki2_png.png\" class=\"attachment-large size-large wp-image-80408\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki2_png.png 695w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskazniki2_png-300x51.png 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/>\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\">Adressen von Variablen und Zeigern aus dem zweiten Beispiel.<\/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-9d14b57 elementor-widget elementor-widget-text-editor\" data-id=\"9d14b57\" 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 den Code ausgef\u00fchrt haben, sehen wir die numerische Darstellung der Speicherpl\u00e4tze, an denen die Variablen und der Zeiger gespeichert sind. Wie Sie sehen k\u00f6nnen, ist die Adresse von variable unver\u00e4ndert geblieben und lautet immer noch 20000BB0. Interessanterweise wurde der pointer in seiner N\u00e4he an der Adresse 200017E4 gespeichert. Die Konstante aus unserem Programm wurde dagegen in einem ganz anderen Teil des Speichers an der Adresse 10006E0C abgelegt.<\/p>\n<p style=\"font-weight: 400\">Damit haben wir die erste Verwendung von Zeigern ge\u00fcbt, indem wir uns die Adressen im RP2040-Speicher angesehen haben. Diese Art von Programmen ist jedoch nur ein Kuriosum und sch\u00f6pft das volle Potenzial der Indikatoren nicht aus. In den meisten Codes schaut sich niemand die Adressen an, an denen die Variablen platziert wurden, da dieses Wissen f\u00fcr den potenziellen Benutzer des Ger\u00e4ts unn\u00f6tig ist. Wenden wir uns daher dem eher praktischen Aspekt der Indikatoren zu.<\/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-b30a36e elementor-widget elementor-widget-heading\" data-id=\"b30a36e\" 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\">Was kann mit den Indikatoren getan werden?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e7194a6 elementor-widget elementor-widget-text-editor\" data-id=\"e7194a6\" 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 wissen bereits, dass ein Zeiger ein spezieller Variablentyp ist, der eine Adresse im Speicher speichern kann, an der sich andere Daten befinden k\u00f6nnen. Auf diese Weise k\u00f6nnen Operationen sowohl mit der gespeicherten Adresse als auch mit dem Wert, auf den die Adresse zeigt, durchgef\u00fchrt werden. <\/p>\n<p style=\"font-weight: 400\">Betrachten wir zun\u00e4chst die Operationen, die wir mit der Adresse des Zeigers selbst durchf\u00fchren k\u00f6nnen, denn im Grunde genommen k\u00f6nnen wir damit nur sehr wenig tun. Wir k\u00f6nnen nur Adressdaten addieren und subtrahieren, und das ist nicht ganz die \u00fcbliche Addition und Subtraktion. Dar\u00fcber hinaus, und das ist wahrscheinlich nicht \u00fcberraschend, k\u00f6nnen wir auch anderen Variablen Adressen zuweisen. Lassen Sie uns jedoch f\u00fcr einen Moment bei den &#8216;ungew\u00f6hnlichen&#8217; Operationen der Addition und Subtraktion stehen bleiben. Lassen Sie uns zum Beispiel eine Situation wie die folgende analysieren. Wir haben drei Zeiger, die auf verschiedene Datentypen zeigen, denen wir einen geben. Der Einfachheit halber nehmen wir an, dass die Adresse jedes Zeigers Null ist.<\/p>\n<p>uint8_t *pointer1;<br \/>uint16_t *pointer2;<br \/>uint32_t *pointer3;<\/p>\n<p>pointer1 ++;<br \/>Zeiger2 ++;<br \/>pointer3 ++;<\/p>\n<p style=\"font-weight: 400\">Wie werden die Adressen nach einer solchen Operation aussehen? Es mag etwas \u00fcberraschen, aber der Wert von pointer1 ist gleich 0x01, pointer2 = 0x02 und pointer3 = 0x04. Schon auf den ersten Blick k\u00f6nnen Sie erkennen, dass hier etwas nicht stimmt.<\/p>\n<p>pointer1 ++; \/\/0x00 + 1 = 0x01<br \/>pointer2 ++; \/\/0x00 + 1 = 0x02<br \/>pointer3 ++; \/\/0x00 + 1 = 0x04<\/p>\n<p style=\"font-weight: 400\">Obwohl diese Ergebnisse eher unintuitiv sind, sind sie doch so korrekt wie m\u00f6glich, da wir daran denken m\u00fcssen, dass wir Operationen mit Adressen und nicht mit gew\u00f6hnlichen Zahlen durchf\u00fchren. Auch die Art der Daten, auf die sich der Zeiger bezieht, muss beachtet werden. Eine einzelne Variable vom Typ uint8_t wird im Speicher an einer einzigen Adresse abgelegt, schlie\u00dflich besteht sie aus acht einzelnen Bits. Allerdings ist uint16_t bereits aus sechzehn Bits aufgebaut, so dass wir, um eine Adresse zu \u00fcberspringen, eigentlich zwei Schritte durchlaufen m\u00fcssen. In \u00e4hnlicher Weise wird ein einzelnes uint32_t an vier Adressen im Speicher abgelegt. Indem wir also eine Eins hinzuf\u00fcgen, springen wir vier Zellen im Speicher, so dass die Zeigervariable auf die j\u00fcngsten acht Bits der n\u00e4chsten Variablen zeigt.<\/p>\n<p style=\"font-weight: 400\">Wir gewinnen viel mehr Potenzial, wenn wir Indikatoren verwenden, um uns auf die Daten zu beziehen, die der Indikator anzeigt. Lassen Sie uns nun ein einfaches Beispiel untersuchen, in dem wir uns auf den Wert einer Variablen auf genau solch eine umst\u00e4ndliche Weise beziehen. Wir k\u00f6nnen den Code verwenden, der zuvor ausgef\u00fchrt wurde, werden aber nat\u00fcrlich einige \u00c4nderungen daran vornehmen.<\/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-c5dd9de elementor-widget elementor-widget-code-highlight\" data-id=\"c5dd9de\" 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 word-wrap\">\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 \r\n#include \"pico\/stdlib.h\"\r\n\r\nuint8_t variable = 167;\r\nuint8_t *pointer;\t\/\/declaration of pointer\r\nuint8_t **pointer_to_pointer;\t\/\/declaration of pointer to pointer\r\n\r\nconst float conversion_factor = 3.3\/4095;\r\nconst float *conversion_factor_pointer;\t\/\/declaration of pointer\r\n\r\nint main() {\r\n    stdio_init_all();\r\n\r\n    \/\/address assignment to the pointer\r\n    pointer = &amp;variable;\r\n    pointer_to_pointer = &amp;pointer;\r\n    conversion_factor_pointer = &amp;conversion_factor;\r\n\r\n    while(true) {\r\n        printf(\"variable value: 0x%X, variable addr: %p \\n\\r\", variable, pointer);\r\n        (*pointer)++;\r\n        printf(\"variable value: 0x%X, variable addr: %p \\n\\r\", variable, pointer);\r\n        printf(\"pointer addr: %p \\n\\r\", pointer_to_pointer);\r\n        printf(\"conversion_factor value: %f, conversion_factor addr: %p\\n\\r\", conversion_factor, conversion_factor_pointer);\r\n        sleep_ms(1000);\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-e8b20dd elementor-widget elementor-widget-text-editor\" data-id=\"e8b20dd\" 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\">Zuvor haben wir den Wert und die Adresse der Variablen angezeigt. In diesem Programm werden wir bei jedem Durchlauf der unendlichen while-Schleife der Variablen einen Wert hinzuf\u00fcgen. Wir k\u00f6nnten diese Art von Funktionalit\u00e4t nat\u00fcrlich auch \u00fcber den Befehl variable++; implementieren, aber da wir \u00fcber Zeiger sprechen, sollten wir uns die Variable mit ihrer Hilfe ansehen. Im Code wurde der Befehl (*pointer)++; hinzugef\u00fcgt, der genau genommen nichts anderes ist als ein Verweis auf eine Variable und die Erh\u00f6hung ihres Wertes um eins. Hier verwenden wir einen Zeiger, der dank des Adress-Chunking-Operators die Adresse einer Variablen speichert. Daher haben wir die Daten auf einem Umweg \u00fcber eine Indikatorvariable herangezogen. Au\u00dferdem habe ich den printf-Befehl im Code verdoppelt, damit ich den vorherigen und den aktuellen Wert der Variablen auf dem Monitor der seriellen Schnittstelle untereinander sehen 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-223d33b elementor-widget elementor-widget-image\" data-id=\"223d33b\" 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\/05\/wskaxniki3_png.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"wskaxniki3_png\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODA0MTIsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvd3NrYXhuaWtpM19wbmcucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"315\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaxniki3_png.png\" class=\"attachment-large size-large wp-image-80412\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaxniki3_png.png 888w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaxniki3_png-300x118.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/wskaxniki3_png-768x303.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\">Steigender Wert variable aus dem Beispiel.<\/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-6100112 elementor-widget elementor-widget-text-editor\" data-id=\"6100112\" 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 den Code ausgef\u00fchrt und den Monitor der seriellen Schnittstelle ge\u00f6ffnet haben, k\u00f6nnen wir sehen, wie sich der Wert der Variablen variable \u00e4ndert: von 0xB7 auf 0xB8, von 0xB8 auf 0xB9 und so weiter. Nat\u00fcrlich gibt es noch viele weitere Operationen, die wir mit Daten unter einem Zeiger durchf\u00fchren k\u00f6nnen, und tats\u00e4chlich sind das alle Operationen, die wir bisher gelernt haben, denn eine Referenz \u00fcber einen Zeiger auf Daten kann genauso behandelt werden wie eine Referenz auf eine gew\u00f6hnliche Variable.<\/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-ec7423d elementor-widget elementor-widget-heading\" data-id=\"ec7423d\" 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\">Timer im RPI Pico W<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-774f2a1 elementor-widget elementor-widget-text-editor\" data-id=\"774f2a1\" 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 RP2040 ist, wie jeder moderne Mikrocontroller, mit Hardware-Timern ausgestattet. Mit ihrer Hilfe k\u00f6nnen wir pr\u00e4zise Zeitintervalle erzeugen und Funktionen, so genannte <strong>Callbacks<\/strong>, aufrufen. Wir haben diese Art von Funktion bereits beim Aufruf von Unterbrechungen und Alarmen kennengelernt. Der Raspberry Pi Pico verf\u00fcgt \u00fcber mehrere Timer, die haupts\u00e4chlich f\u00fcr die Zeitmessung verwendet werden. Wenn wir in dem zu erstellenden Projekt eine bestimmte Funktion zyklisch ausf\u00fchren m\u00f6chten, k\u00f6nnen wir einen Timer verwenden. Dies k\u00f6nnte z.B. eine synchrone Temperaturmessung sein, von der die Geschwindigkeit des an das RPI angeschlossenen L\u00fcfters abh\u00e4ngt. Im vorigen Artikel haben wir bereits die Alarmfunktion kennengelernt, die ein St\u00fcck Code aufruft, das einmal ausgef\u00fchrt wird. In dieser Hinsicht sind Timer recht \u00e4hnlich, au\u00dfer dass sie den entsprechenden Callback zyklisch zu jeder angegebenen Zeit aufrufen.<\/p>\n<p style=\"font-weight: 400;\">Wir werden die Funktion des Timers mit einem einfachen Programm \u00fcberpr\u00fcfen, bei dem wir die LED blinken lassen, \u00e4hnlich wie bei dem ersten Programm, das wir ausgef\u00fchrt haben. Damals haben wir die prozessorsperrende Funktion sleep_ms verwendet, aber dieses Mal wird der Wechsel zwischen dem Einschalten und nur der LED pr\u00e4ziser sein. Ich habe ein neues Projekt namens blink_timer zum Testen vorbereitet.<\/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-b5fb42a elementor-widget elementor-widget-code-highlight\" data-id=\"b5fb42a\" 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 word-wrap\">\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 \r\n#include \"pico\/stdlib.h\"\r\n\r\n#define GREEN_LED 0\r\nbool led_status = false;\r\n\r\n\/\/function called after an interrupt from the timer\r\nvoid tCallback(repeating_timer_t *timer){\r\n    led_status = !led_status;\r\n    gpio_put(GREEN_LED, led_status);\r\n}\r\n\r\nint main() {\r\n    stdio_init_all();\r\n\r\n    gpio_init(GREEN_LED);\r\n    gpio_set_dir(GREEN_LED, GPIO_OUT);\r\n    gpio_put(GREEN_LED, false);\r\n\r\n    struct repeating_timer timer;\t\/\/structure declaration\r\n    add_repeating_timer_ms(500,tCallback,NULL,&amp;timer);\t\/\/starting the timer\r\n    \r\n\r\n    while(true) {\r\n        tight_loop_contents(); \/\/do nothing functions\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-c517004 elementor-widget elementor-widget-text-editor\" data-id=\"c517004\" 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;\">Um zu verstehen, wie Timer funktionieren, sollten Sie sich das oben gezeigte Programm ansehen. Es erinnert ein wenig an den Code, der bei der Er\u00f6rterung von Unterbrechungen ausgef\u00fchrt wurde, und das ist auch nicht weiter verwunderlich, da seine Struktur recht \u00e4hnlich ist. Es lohnt sich zu wissen, dass sie tats\u00e4chlich auf Unterbrechungen beruhen. Wenn dieses Modul eine vom Benutzer festgelegte Zeit \u00fcberschreitet, wird eine Unterbrechung erzeugt, die zum Aufruf eines Callbacks f\u00fchrt, in dem der entsprechende Code platziert werden sollte, um auf die entstandene Situation zu reagieren.<\/p>\n<p style=\"font-weight: 400;\">Der erste Teil des Programms umfasst wie \u00fcblich Bibliotheksdeklarationen, die Definition der gr\u00fcnen LED und die Erstellung der Variable led_status, die, wie der Name schon sagt, den Zustand speichert, in dem sich die LED gerade befinden sollte. Der Standardwert dieser Variable ist false, was einem low Status entspricht.<\/p>\n<p style=\"font-weight: 400;\">Anschlie\u00dfend erstellen wir einen Callback, der ausgel\u00f6st wird, wenn der Timer \u00fcberl\u00e4uft. Mit anderen Worten, es wird ein Wert erreicht, der einer bestimmten, vom Benutzer festgelegten Zeiteinheit entspricht. Im Argument dieser Funktion \u00fcbergeben wir einen Zeiger auf *timer, der Teil einer bestimmten Struktur ist, die ich gleich noch n\u00e4her erl\u00e4utern werde. Innerhalb des Callbacks befindet sich der Code, der den Status der LED \u00e4ndert. Im ersten Schritt \u00e4ndern wir den Zustand der Variable led_status in das Gegenteil und weisen sie dann der LED zu.<\/p>\n<p style=\"font-weight: 400;\">In der Hauptfunktion main finden Sie neben den bereits bekannten Befehlen f\u00fcr die Initialisierung der LED auch die Deklaration der Struktur repeating_timer und die Funktion, die den Timer startet. Strukturen sind ein ganz spezielles Konzept in der Sprache C und wir werden uns an dieser Stelle nicht mit ihnen befassen. Das liegt vor allem daran, dass sie hier auf eine ganz bestimmte Weise verwendet wurde. Alles, was Sie zu diesem Zeitpunkt wissen m\u00fcssen, ist, dass Strukturen es Ihnen erm\u00f6glichen, bestimmte Variablen in gr\u00f6\u00dferen &#8216;Paketen&#8217; zu gruppieren und in diesem Fall enth\u00e4lt die Struktur nur eine einzige namens Timer. Seine Verwendung ist hier leider unverzichtbar, daher werden wir im n\u00e4chsten Artikel darauf zur\u00fcckkommen, wenn ich Ihnen eine Einf\u00fchrung in die Strukturen in einem etwas breiteren Spektrum geben werde.<\/p>\n<p style=\"font-weight: 400;\">Der Befehl, der den Timer startet, hei\u00dft add_repeating_timer_ms. In den Argumenten geben wir der Reihe nach an: die Zeit, die der Timer laufen soll, in diesem Fall 500ms, den Namen der Funktion Callback, die aufgerufen werden soll, nachdem der Timer heruntergez\u00e4hlt hat, das n\u00e4chste Argument k\u00f6nnen die so genannten Benutzerdaten sein, aber wir \u00fcbergeben sie nicht, also f\u00fcgen wir hier das Null-Argument NULL ein. Das letzte Argument ist die Adresse des Elements der zuvor genannten Struktur. Erstellt durch den Adress-Chunking-Operator.<\/p>\n<p style=\"font-weight: 400;\">Auf diese Weise ist der Code fertig, aber damit er in der unendlichen while-Schleife richtig funktioniert, m\u00fcssen Sie den &#8216;do nothing&#8217;-Befehl einf\u00fcgen, den Sie bereits gelernt haben, d.h. tight_loop_contents.<\/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-e9be9ee elementor-widget elementor-widget-video\" data-id=\"e9be9ee\" 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\/05\/IMG_1294.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-c1f66e8 elementor-widget elementor-widget-text-editor\" data-id=\"c1f66e8\" 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 Ausf\u00fchrung des Programms k\u00f6nnen wir sehen, dass die gr\u00fcne LED alle 500 ms synchron ein- und ausgeschaltet wird, genau wie wir es in dem Befehl zum Starten des Timers angegeben haben. Es ist erw\u00e4hnenswert, dass der Prozessor in diesem Fall nicht blockiert wird, wenn der Timer abgelaufen ist. Wenn wir wollten, k\u00f6nnten wir auch andere Aufgaben in der while-Schleife ausf\u00fchren. Ich w\u00fcrde Sie zu einem solchen Experiment ermutigen. Sie k\u00f6nnten versuchen, die interne Kerntemperatur des Prozessors zu messen und auf den Bildschirm zu \u00fcbertragen, um zu sehen, ob dies das Blinken der LED beeinflusst.<\/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-28e2769 elementor-widget elementor-widget-heading\" data-id=\"28e2769\" 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-41ec322 elementor-widget elementor-widget-text-editor\" data-id=\"41ec322\" 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 diesem Ratgeber haben wir zum ersten Mal Indikatoren verwendet. Bisher waren es einfache Tests, aber dank ihnen wissen wir bereits ein wenig dar\u00fcber, wie sie funktionieren. Wir werden in zuk\u00fcnftigen Ratgebern wieder auf sie zur\u00fcckkommen. Au\u00dferdem haben wir das klassische blink led eingef\u00fchrt, allerdings in einem etwas anderen Gewand. Wir haben einen Timer verwendet, damit die Funktion sleep_ms den Prozessor nicht mehr blockiert. Dar\u00fcber hinaus habe ich auch so etwas wie Strukturen erw\u00e4hnt, aber wir werden uns mit diesem Konzept in einem sp\u00e4teren Artikel besch\u00e4ftigen. Au\u00dferdem werde ich mich im n\u00e4chsten Tutorial mit dem Thema &#8216;Zustandsautomat&#8217; befassen.<\/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-987177c elementor-widget elementor-widget-spacer\" data-id=\"987177c\" 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-44c1542 elementor-widget elementor-widget-text-editor\" data-id=\"44c1542\" 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 den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.<\/p>\n","protected":false},"author":34,"featured_media":81294,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-81971","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 - #9 - Indikatorentheorie und Timer - Botland<\/title>\n<meta name=\"description\" content=\"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.\" \/>\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-9-indikatorentheorie-und-timer\/\" \/>\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 - #9 - Indikatorentheorie und Timer - Botland\" \/>\n<meta property=\"og:description\" content=\"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/\" \/>\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-05-30T12:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T08:57:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.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=\"21\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-9-indikatorentheorie-und-timer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Raspberry Pi Pico Kurs &#8211; #9 &#8211; Indikatorentheorie und Timer\",\"datePublished\":\"2024-05-30T12:00:03+00:00\",\"dateModified\":\"2026-04-08T08:57:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/\"},\"wordCount\":3660,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/pico_9.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/\",\"name\":\"Raspberry Pi Pico Kurs - #9 - Indikatorentheorie und Timer - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/pico_9.png\",\"datePublished\":\"2024-05-30T12:00:03+00:00\",\"dateModified\":\"2026-04-08T08:57:00+00:00\",\"description\":\"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/pico_9.png\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/pico_9.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\\\/#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; #9 &#8211; Indikatorentheorie und Timer\"}]},{\"@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 - #9 - Indikatorentheorie und Timer - Botland","description":"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.","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-9-indikatorentheorie-und-timer\/","og_locale":"de_DE","og_type":"article","og_title":"Raspberry Pi Pico Kurs - #9 - Indikatorentheorie und Timer - Botland","og_description":"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.","og_url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-05-30T12:00:03+00:00","article_modified_time":"2026-04-08T08:57:00+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Rafa\u0142 Bartoszak","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#article","isPartOf":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Raspberry Pi Pico Kurs &#8211; #9 &#8211; Indikatorentheorie und Timer","datePublished":"2024-05-30T12:00:03+00:00","dateModified":"2026-04-08T08:57:00+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/"},"wordCount":3660,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/","url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/","name":"Raspberry Pi Pico Kurs - #9 - Indikatorentheorie und Timer - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#primaryimage"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.png","datePublished":"2024-05-30T12:00:03+00:00","dateModified":"2026-04-08T08:57:00+00:00","description":"In den letzten Materialien habe ich kurz so etwas wie Indikatoren erw\u00e4hnt. Damit werden wir uns im ersten Teil dieses Materials befassen, und dann werden wir zu den Aspekten der Timer \u00fcbergehen.","breadcrumb":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#primaryimage","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.png","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/pico_9.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-9-indikatorentheorie-und-timer\/#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; #9 &#8211; Indikatorentheorie und Timer"}]},{"@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\/81971","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=81971"}],"version-history":[{"count":0,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/81971\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media\/81294"}],"wp:attachment":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media?parent=81971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/categories?post=81971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/tags?post=81971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}