{"id":78852,"date":"2024-02-19T14:00:23","date_gmt":"2024-02-19T13:00:23","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/raspberry-pi-pico-6-pwm-adc-i-komunikacja-z-komputerem\/"},"modified":"2026-04-08T11:01:06","modified_gmt":"2026-04-08T09:01:06","slug":"raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer","status":"publish","type":"post","link":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/","title":{"rendered":"Raspberry Pi Pico Kurs &#8211; #6 &#8211; PWM, ADC und Kommunikation mit dem Computer"},"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\"> 19<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"78852\" class=\"elementor elementor-78852 elementor-75856\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-27cbe3e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"27cbe3e\" 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-0f12413\" data-id=\"0f12413\" 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-eb90f56 elementor-widget elementor-widget-text-editor\" data-id=\"eb90f56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400;\">Im vorherigen Abschnitt haben wir grundlegende Variablen, bedingte Anweisungen und Schleifen kennengelernt. Au\u00dferdem habe ich Ihnen ein wenig \u00fcber die Fehler und die einfache Art, sie zu l\u00f6sen, erz\u00e4hlt. Im heutigen Material werfen wir einen genaueren Blick auf einige der Funktionen des RP2040 Mikrocontrollers. Dazu geh\u00f6ren PWM, USB und ADC. Nat\u00fcrlich werden Sie neben der theoretischen Beschreibung auch etwas \u00fcber die praktische Anwendung dieser Funktionen erfahren, also lassen Sie uns loslegen.<\/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-dce1440 elementor-widget elementor-widget-image\" data-id=\"dce1440\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODMzMzQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvNEdvdG93eS1aZXN0YXctZG8tbmF1a2ktcHJvZ3JhbW93YW5pYS16LVJhc3BiZXJyeS1QaS1QaWNvLVcuanBnIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"109\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg\" class=\"attachment-large size-large wp-image-83334\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-300x41.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/05\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fab667e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fab667e\" 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-af7a99e\" data-id=\"af7a99e\" 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-4dca5e7 elementor-widget elementor-widget-image\" data-id=\"4dca5e7\" 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-0bfefcb\" data-id=\"0bfefcb\" 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-b415e75 elementor-widget elementor-widget-text-editor\" data-id=\"b415e75\" 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-af12def elementor-align-center elementor-widget elementor-widget-button\" data-id=\"af12def\" 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\">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-2037461 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"2037461\" 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-d928989 elementor-widget elementor-widget-text-editor\" data-id=\"d928989\" 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><a href=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-7-code-korrekturen-und-eigene-funktionen\/\" 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-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; Interrupts 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-c263abf elementor-widget elementor-widget-spacer\" data-id=\"c263abf\" 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-b98c326 elementor-widget elementor-widget-heading\" data-id=\"b98c326\" 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-dc7a007 elementor-widget elementor-widget-image\" data-id=\"dc7a007\" 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-ad8abbb elementor-align-center elementor-widget elementor-widget-button\" data-id=\"ad8abbb\" 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-21878d4 elementor-widget elementor-widget-text-editor\" data-id=\"21878d4\" 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-ed85218 elementor-widget elementor-widget-text-editor\" data-id=\"ed85218\" 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-975298d elementor-widget elementor-widget-spacer\" data-id=\"975298d\" 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-e49f196 elementor-widget elementor-widget-heading\" data-id=\"e49f196\" 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\">Impulsbreitenmodulation - PWM <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a2e30a elementor-widget elementor-widget-text-editor\" data-id=\"0a2e30a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Bisher haben die vom <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> gesteuerten LEDs entweder geleuchtet oder nicht, und es gab keine M\u00f6glichkeit, dieses Element auf eine etwas &#8220;fl\u00fcssigere&#8221; Weise zu steuern. Die Gewinnung eines analogen Signals aus digitalen Zust\u00e4nden ist gar nicht so einfach; diese Art von Funktionalit\u00e4t kann nur mit <a href=\"https:\/\/botland.de\/412-a-c-und-c-a-wandler\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Digital-Analog-Wandlern<\/strong><\/a> (DACs) erreicht werden. Es gibt jedoch eine M\u00f6glichkeit, wie wir ein analoges Signal erzeugen und damit die Helligkeit der LED steuern k\u00f6nnen.<\/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-d87f85a elementor-widget elementor-widget-image\" data-id=\"d87f85a\" 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\/02\/Duty_Cycle_Examples.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Duty_Cycle_Examples\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4NjEsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvRHV0eV9DeWNsZV9FeGFtcGxlcy5wbmcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"342\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/Duty_Cycle_Examples.png\" class=\"attachment-large size-large wp-image-75861\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/Duty_Cycle_Examples.png 542w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/Duty_Cycle_Examples-300x189.png 300w\" sizes=\"(max-width: 542px) 100vw, 542px\" \/>\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\">Beispiele f\u00fcr PWM-Signalformen mit 50%, 75% und 25% F\u00fcllung. (https:\/\/en.wikipedia.org\/wiki\/Pulse-width_modulation)<\/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-c25f9c9 elementor-widget elementor-widget-text-editor\" data-id=\"c25f9c9\" 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\"><strong>Pulsweitenmodulation<\/strong> (PWM) ist ein Begriff, der sich auf eine Funktion bezieht, die in den meisten modernen <a href=\"https:\/\/botland.de\/22-mikrocontroller\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Mikrocontrollern<\/strong><\/a> implementiert ist. Wie der Name schon sagt, k\u00f6nnen wir damit die Breite eines einzelnen vom <a href=\"https:\/\/botland.de\/raspberry-pi-mikrocontroller\/19536-raspberry-pi-mikrocontroller-rp2040-sc0914-5904422368371.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>RP2040<\/strong><\/a> erzeugten Impulses manipulieren. In den Beispielen, die wir durchgearbeitet haben, kam es vor, dass die LED jede halbe Sekunde synchron aktiviert wurde. In diesem Fall kann man sagen, dass der gesamte Impuls eine Sekunde dauerte und eine F\u00fcllrate von 50% hatte, da die Diode nur die H\u00e4lfte der verf\u00fcgbaren Zeit arbeitete. F\u00fcr einen Mikrocontroller ist eine Sekunde jedoch fast eine Ewigkeit und er kann erfolgreich Impulse erzeugen, deren Zeit viel k\u00fcrzer ist. Zu diesem Zweck werden spezielle Befehle verwendet, die von den internen Modulen des Prozessors unterst\u00fctzt werden, damit wir das System nicht immer wieder anhalten m\u00fcssen. <\/p>\n<p style=\"font-weight: 400\">Wir werden die F\u00fcllung eines solchen Impulses kontrollieren, d.h. <strong>die Zeit, w\u00e4hrend ein hoher Zustand am Ausgang aufrechterhalten wird<\/strong>. Indem wir die F\u00fcllung \u00e4ndern, erhalten wir eine Art Imitation eines analogen Signals. Die Imitation ist hier die korrekteste Aussage, da es sich immer noch um ein digitales Signal handelt, nur dass es dank der Tr\u00e4gheit des menschlichen Auges so aussieht, als ob wir die Helligkeit der Diode steuern, als ob wir ihre Versorgungsspannung \u00e4ndern. Dar\u00fcber hinaus werden PWM-Signale auch in anderen Schaltungen und Systemen erfolgreich eingesetzt. Es gibt Sensoren, bei denen der gemessene Wert, z.B. der Sauerstoffgehalt in der Luft, genau durch das PWM-Signal am Ausgang des Moduls dargestellt wird. Dar\u00fcber hinaus werden Signale, deren Impulsbreite ver\u00e4ndert wird, zur Steuerung von <a href=\"https:\/\/botland.de\/135-servomechanismen\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Servomechanismen<\/strong><\/a> in der Robotik verwendet.<\/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-19e3923 elementor-widget elementor-widget-code-highlight\" data-id=\"19e3923\" 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#include \"hardware\/pwm.h\"\r\n\r\n#define GREEN_LED 0 \/\/assigning names of sspecyfic values\r\n\r\nuint8_t fill = 0;\r\nuint8_t changes = 1;\r\n\r\nint main() {\r\n    gpio_init(GREEN_LED); \/\/initialization and setting of pin mode\r\n    gpio_set_function(GREEN_LED, GPIO_FUNC_PWM);\r\n\r\n    uint8_t slice_num = pwm_gpio_to_slice_num(GREEN_LED); \/\/assignment of values to variables slice_num and channel\r\n    uint8_t channel = pwm_gpio_to_channel(GREEN_LED);\r\n    \r\n    pwm_set_wrap(slice_num, 255); \/\/set the maximum PWM range (255=100%)\r\n\r\n    pwm_set_enabled(slice_num, true); \/\/PWM signal activation\r\n    \r\n    while (true)\r\n    {\r\n        pwm_set_chan_level(slice_num, channel, fill); \/\/setting the signal filling to the value stored in fill\r\n\r\n        if (fill &lt; 255) \/\/if fill &lt;255 assign value + change\r\n        {\r\n            fill = fill + changes;\r\n        }\r\n        Else \/\/incompatible condition set fill to 0\r\n        {\r\n            fill = 0;\r\n        }\r\n\r\n        sleep_ms(10);\r\n\r\n    }\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-de9d098 elementor-widget elementor-widget-text-editor\" data-id=\"de9d098\" 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\">Kommen wir nun direkt zum Code f\u00fcr die praktische Nutzung des PWM-Signals zur Steuerung der LED. Um diese Funktionalit\u00e4t zu testen, habe ich ein neues Projekt erstellt, das ich pwm_led genannt habe. Die Schaltung selbst, die auf der Kontaktplatte aufgebaut ist, bleibt dagegen unver\u00e4ndert, obwohl wir in diesem Beispiel nur eine LED verwenden werden.<\/p>\n<p style=\"font-weight: 400\">Das vorbereitete Programm erm\u00f6glicht es uns, die LED mit einem PWM-Signal zu steuern, <strong>d. h. wir werden die LED schrittweise aufhellen<\/strong>, indem wir die Impulsf\u00fcllung erh\u00f6hen. Die Zeit, w\u00e4hrend der hohe Zustand auf der Leitung aufrechterhalten wird, wird durch eine Zahl bestimmt, wobei 0 f\u00fcr 0% (die LED leuchtet nicht) und 255 f\u00fcr 100% (die LED leuchtet w\u00e4hrend der gesamten Dauer des Impulses) steht.<\/p>\n<p style=\"font-weight: 400\">Der Start des Programms sieht vertraut aus, obwohl es einige neue Funktionen gibt. Wie Sie sehen k\u00f6nnen, habe ich zum ersten Mal <strong>eine zus\u00e4tzliche Bibliothek hardware\/pwm.h<\/strong> eingebunden. Sie wird ben\u00f6tigt, weil wir die Hardware-Unterst\u00fctzung des Mikrocontrollers bei der Erzeugung des PWM-Signals nutzen werden und die Funktionen, die diesen Prozess beschreiben, in dieser Bibliothek beschrieben sind. Wir m\u00fcssen auch ein zus\u00e4tzliches Anweisungspaket in der Datei CMakeLists.txt hinzuf\u00fcgen, aber darum k\u00fcmmern wir uns sp\u00e4ter. Vor der Hauptfunktion main gab es die bekannte Definition und Deklaration von zwei Variablen vom Typ uint8_t &#8211; fill und changes.<\/p>\n<p style=\"font-weight: 400\">Angesichts dieser Variablen m\u00fcssen wir uns einen Moment zur\u00fcckhalten. In den vorherigen Beispielen wurden die Variablen innerhalb der Hauptfunktion deklariert, normalerweise um die Befehle herum, die sie verwendeten. Dies waren lokale Variablen, die wir nur innerhalb der Funktionen verwenden konnten, in denen sie erzeugt wurden. Variablen, deren Deklarationen oberhalb der Hauptfunktion platziert sind, k\u00f6nnen als <strong>globale<\/strong> Variablen bezeichnet werden, was bedeutet, dass sie im gesamten Programm verwendet werden k\u00f6nnen. Nat\u00fcrlich k\u00f6nnten die Variablen fill und changes, die nacheinander die F\u00fcllung und die \u00c4nderung der F\u00fcllung bei jedem Programmzyklus angeben, weiter unten im Code erstellt werden, aber um das Konzept der lokalen und globalen Variablen zu erkl\u00e4ren, habe ich sie hier platziert. Die Zahlen 0 und 1 neben den Namen dieser Variablen m\u00fcssen ebenfalls erkl\u00e4rt werden. Mit diesen k\u00f6nnen wir den Standardwert festlegen, den die Variablen annehmen, sobald das Programm gestartet wird.<\/p>\n<p style=\"font-weight: 400\">Wir starten die Funktion main mit den bekannten Befehlen, wobei dieses Mal dank GPIO_FUNC_PWM der Pin, der GREEN_LED zugewiesen ist, als Pin fungiert, der die PWM-Funktionalit\u00e4t unterst\u00fctzt. Als n\u00e4chstes deklarieren wir zwei Variablen slice_num und channel, denen wir sofort die Werte zuweisen, die von den Befehlen pwm_gpio_to_slice_num und pwm_gpio_to_channel gelesen werden, deren Argument eine konkrete Anschlussnummer des RP2040 ist. Wir m\u00fcssen nicht dar\u00fcber nachdenken, was in diesen Variablen gespeichert ist. Sie werden ben\u00f6tigt, weil das PWM-Signal, obwohl es einer bestimmten Leitung zugewiesen ist, tats\u00e4chlich durch Slice, Channel und Fill bestimmt wird, die wir bereits deklariert haben.<\/p>\n<p style=\"font-weight: 400\">Mit dem n\u00e4chsten Befehl, pwm_set_wrap, legen wir <strong>den numerischen F\u00fcllbereich des PWM-Signals<\/strong> fest. In die Argumente der Funktion geben wir den zuvor gelesenen Slice und einen Wert ein, der die 100%ige F\u00fcllung eines einzelnen Impulses beschreibt. Im Beispiel ist es 255, aber jeder beliebige Wert kann dort erfolgreich eingef\u00fcgt werden. Beachten Sie jedoch, dass er sich auf die Variable fill bezieht, deren Typ uint8_t mit einem begrenzten Bereich ist. F\u00fcr gr\u00f6\u00dfere Werte sollten Sie Variablentypen mit gr\u00f6\u00dferen Bereichen in Betracht ziehen, wie z.B. uint16_t oder uint32_t. Mit dem n\u00e4chsten Befehl pwm_set_enable aktivieren wir das PWM-Signal auf der Leitung, deren Slice-Wert slice_num zugewiesen ist.<\/p>\n<p style=\"font-weight: 400\">Der Hauptteil des Programms bestand aus einer unendlichen while-Schleife, innerhalb derer wir im ersten Schritt den F\u00fcllwert des PWM-Signals an dem durch slice_num und channel beschriebenen Pin festlegen. Der F\u00fcllwert selbst wird in fill gespeichert, dessen Standardwert Null ist, so dass die Diode beim ersten Start ausgeschaltet wird. Dann wurde eine bedingte Funktion platziert, um den F\u00fcllwert zu \u00fcberpr\u00fcfen. Wenn er kleiner als 255 ist, wird der F\u00fcllwert in sich selbst ge\u00e4ndert und der Wert unter der Variable changes hinzugef\u00fcgt. Mit anderen Worten: Jedes Mal, wenn die bedingte Funktion ausgef\u00fchrt wird, erh\u00f6ht sich der F\u00fcllstand um eins, bis die Bedingung fill &lt; 255 nicht mehr erf\u00fcllt ist. Die F\u00fcllung wird dann wieder auf Null reduziert. Am Ende des Programms gab es eine leichte Verz\u00f6gerung, die das Programm f\u00fcr 10 ms pausierte. In einer kurzen Zusammenfassung der Schleife, die vom Raspberry Pi Pico W ausgef\u00fchrt wird, bis der Strom abgeschaltet wird, kann man also sagen, dass die F\u00fcllung des PWM-Signals alle 10ms um eins erh\u00f6ht wird, bis sie 255 \u00fcberschreitet und dann die Diode ausgeschaltet wird.<\/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-be1d1b3 elementor-widget elementor-widget-image\" data-id=\"be1d1b3\" 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<img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"239\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-pwm_led.png\" class=\"attachment-large size-large wp-image-75865\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-pwm_led.png 504w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-pwm_led-300x142.png 300w\" sizes=\"(max-width: 504px) 100vw, 504px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">CMakeLists.txt f\u00fcr das Projekt pwm_led.<\/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-9ef12fb elementor-widget elementor-widget-text-editor\" data-id=\"9ef12fb\" 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\">Wie ich am Anfang erw\u00e4hnt habe, m\u00fcssen wir, wenn wir die Hardware-Unterst\u00fctzung f\u00fcr PWM-Signale nutzen wollen, die Bibliothek hardware\/pwm.h in die Datei CMakeLists.txt aufnehmen. Ihre Deklaration wird innerhalb des Befehls target_link_libraries platziert, wie in der obigen Grafik zu sehen ist. In Zukunft werden wir aufeinanderfolgende Bibliotheken immer mit Leerzeichen trennen. <\/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-412159f elementor-widget elementor-widget-video\" data-id=\"412159f\" 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\/02\/pwm_led.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-2f97718 elementor-widget elementor-widget-text-editor\" data-id=\"2f97718\" 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 laufende Programm pwm_led sollte sich identisch zu dem im Video verhalten. Die LED wird allm\u00e4hlich heller und wenn sie ihre volle Leistung erreicht hat, erlischt sie und der ganze Zyklus beginnt von vorne. Wie ich bereits erw\u00e4hnt habe, ist die Steuerung der Diode jedoch nicht gleichm\u00e4\u00dfig, sie blinkt mit einer sehr hohen Frequenz, so dass es f\u00fcr das menschliche Auge nicht wahrnehmbar ist. Mit jeder Programmschleife erh\u00f6ht sich auch die Zeitspanne, in der ein einzelner Impuls im hohen Zustand ist, so dass es den Anschein hat, dass die LED immer heller leuchtet. Ich m\u00f6chte Sie ermutigen, zu experimentieren und den Wert der Variable changes und die Zeit, f\u00fcr die das Programm angehalten wird, zu \u00e4ndern. Au\u00dferdem k\u00f6nnen Sie versuchen, den numerischen Bereich der F\u00fcllung zu \u00e4ndern und dabei den Typ der Variablen fill zu ber\u00fccksichtigen.<\/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-634f45b elementor-widget elementor-widget-heading\" data-id=\"634f45b\" 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\">Kommunikation mit dem Computer, d.h. USB<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-676c4e0 elementor-widget elementor-widget-text-editor\" data-id=\"676c4e0\" 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\">Bis jetzt haben wir nur den <strong>Mikrocontroller<\/strong> selbst und die mit ihm verbundenen <strong>elektronischen Komponenten<\/strong> verwendet. Es ist an der Zeit, das zu \u00e4ndern und zum ersten Mal mit einem gr\u00f6\u00dferen Ger\u00e4t wie einem <strong>Computer<\/strong> zu kommunizieren.<\/p>\n<p style=\"font-weight: 400\">In Tutorials, die auf kleinen Embedded-Plattformen basieren, ist die Kommunikation mit dem Computer in der Regel eng mit einer Diskussion \u00fcber die UART-Schnittstelle verbunden. Ich habe den Eindruck, dass dies haupts\u00e4chlich aus Artikeln \u00fcber den <a href=\"https:\/\/botland.de\/234-arduino\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Arduino<\/strong><\/a> stammt, bei dem die Schnittstelle eine Hardware ist, die \u00fcber einen bestimmten Chip mit dem USB-Anschluss des Boards verbunden ist. Die Entwickler des <strong>Raspberry Pi Pico<\/strong> und des RP2040 Mikrocontrollers selbst haben sich jedoch f\u00fcr eine etwas anspruchsvollere L\u00f6sung entschieden. Nat\u00fcrlich verf\u00fcgt der Prozessor \u00fcber Hardware-UART-Unterst\u00fctzung, aber die Kommunikation mit dem Computer kann auch einfacher <strong>\u00fcber USB<\/strong> hergestellt werden. Die auf dem Laminat des RPI sichtbare microUSB-Buchse wird nicht nur f\u00fcr die Stromversorgung und die Programmierung verwendet, sondern \u00fcber sie k\u00f6nnen auch Daten mit dem Computer ausgetauscht werden. Wir werden auf den hier erw\u00e4hnten UART, der eine der einfachsten seriellen Schnittstellen ist, in einem der letzten Artikel dieser Serie zur\u00fcckkommen.<\/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-f007839 elementor-widget elementor-widget-image\" data-id=\"f007839\" 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\/02\/IMG_0740-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0740\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4NzMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvSU1HXzA3NDAtc2NhbGVkLmpwZyJ9\" 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\/02\/IMG_0740-1024x576.jpg\" class=\"attachment-large size-large wp-image-75873\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0740-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0740-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0740-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0740-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0740-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\">MicroUSB-Anschluss auf dem RPI Pico W Board.<\/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-896ac9e elementor-widget elementor-widget-text-editor\" data-id=\"896ac9e\" 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\">Bevor wir jedoch zum Programm \u00fcbergehen, m\u00f6chte ich Ihnen ein wenig \u00fcber USB selbst erz\u00e4hlen. Die erste Assoziation mit USB ist in erster Linie die Art des Anschlusses, den wir in den meisten heute hergestellten Ger\u00e4ten finden k\u00f6nnen. Diese Anschl\u00fcsse gibt es in verschiedenen Standards und Typen, die sich in den physischen Abmessungen, der Anzahl der Anschl\u00fcsse und den elektrischen Parametern unterscheiden. Das Wichtigste f\u00fcr uns ist jedoch <strong>USB <\/strong> (Universal Serial Bus), ein <strong>universeller serieller Bus<\/strong> <strong>ist<\/strong>, mit dem Daten zwischen zwei Ger\u00e4ten \u00fcbertragen werden k\u00f6nnen. Zu diesem Zweck verwendet die Grundkonfiguration ein Paar D+ und D- Signale, die sich zus\u00e4tzlich zu den Stromkabeln im Standard-USB-Kabel befinden. Auf der von uns verwendeten Platine sind die USB-Steckerkabel direkt mit dem Mikrocontroller verbunden. Wenn Sie also das Kabel an den Computer anschlie\u00dfen, stellen Sie eine Verbindung zum Prozessor her, ohne dass etwas dazwischen ist. Der RP2040 unterst\u00fctzt dieses Protokoll hardwareseitig, so dass ich Ihnen gleich einige Beispiele zeigen werde, bei denen wir mit einem einfachen Befehl Nachrichten senden k\u00f6nnen, die auf dem Computerbildschirm erscheinen. Eine solche L\u00f6sung ist f\u00fcr die Programmierung und das Debugging \u00e4u\u00dferst n\u00fctzlich. Bis jetzt waren unsere Programme einfach und es bestand keine Notwendigkeit, darin so genannte &#8216;Flaggen&#8217; zu erstellen, aber gleich werden wir zu komplizierteren Konstruktionen \u00fcbergehen, in denen wir entsprechende Nachrichten platzieren werden. Diese erm\u00f6glichen es uns, in Echtzeit zu erfahren, welcher Teil des Codes vom Mikrocontroller ausgef\u00fchrt wird.<\/p>\n<p style=\"font-weight: 400\">Die Schaltung, die wir vorhin gebaut haben, kann gleich bleiben. Zun\u00e4chst werden wir nur die Platine und das USB-Kabel verwenden, aber in sp\u00e4teren Codes werden wir versuchen, auch die LED zu steuern.<\/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-27fc433 elementor-widget elementor-widget-heading\" data-id=\"27fc433\" 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\">Senden von Nachrichten an den Computer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-703ab8c elementor-widget elementor-widget-code-highlight\" data-id=\"703ab8c\" 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    stdio_init_all(); \/\/initialization of the stdio.h library\r\n    \r\n    while(true) {\r\n        printf(\"RPI Pico W sendet eine Nachricht\\n\");\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-f707769 elementor-widget elementor-widget-text-editor\" data-id=\"f707769\" 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\">F\u00fcr die folgenden Beispiele habe ich ein Projekt namens usb_communication vorbereitet, das ich in diesem und den folgenden Programmen verwenden werde.<\/p>\n<p style=\"font-weight: 400\">Nehmen wir als ersten Schritt einen extrem einfachen Code, dessen Aufgabe es ist, jede Sekunde den Text &#8216;RPI Pico W sendet eine Nachricht&#8217; an den Computer zu senden. Wie Sie sehen k\u00f6nnen, wird diese Aufgabe von der Funktion printf \u00fcbernommen, die zu den grundlegenden Befehlen der Sprache C geh\u00f6rt. Sie erm\u00f6glicht es uns, Nachrichten zu erstellen, die nur aus Text oder aus Text zusammen mit Variablen bestehen, wie ich sp\u00e4ter noch erl\u00e4utern werde. Die Nachricht, die wir an den Computer senden wollen, steht in doppelten Anf\u00fchrungszeichen, und am Ende steht ein mysteri\u00f6ses \u2018\\n\u2019. Dies ist das Zeilenende-Zeichen. Es ist nicht sichtbar, aber es teilt dem Computer mit, dass der n\u00e4chste empfangene Text in einer neuen Zeile angezeigt werden soll.<\/p>\n<p style=\"font-weight: 400\">Damit der printf-Befehl korrekt kompiliert werden kann, m\u00fcssen wir die Bibliothek &lt;stdio.h&gt; einbinden, die eine ganze Reihe grundlegender C-Sprachfunktionen enth\u00e4lt. Au\u00dferdem muss diese Bibliothek initialisiert werden; daf\u00fcr wird das Konstrukt stdio_init_all() verwendet.<\/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-69ae74e elementor-widget elementor-widget-image\" data-id=\"69ae74e\" 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\/02\/cmakelists-usb1.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"cmakelists usb1\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4NzcsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvY21ha2VsaXN0cy11c2IxLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"299\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-usb1.png\" class=\"attachment-large size-large wp-image-75877\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-usb1.png 527w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/cmakelists-usb1-300x170.png 300w\" sizes=\"(max-width: 527px) 100vw, 527px\" \/>\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\">CMakeLists.txt f\u00fcr usb_communication.<\/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-d3f12ed elementor-widget elementor-widget-text-editor\" data-id=\"d3f12ed\" 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 das Projekt korrekt kompiliert wird, m\u00fcssen wir au\u00dferdem drei Befehle in die Datei CMakeLists.txt aufnehmen, von denen einer ein Kommentar ist.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4903c52 elementor-widget elementor-widget-code-highlight\" data-id=\"4903c52\" 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># enable usb output, disable uart output\r\npico_enable_stdio_usb(usb_communication 1) \r\npico_enable_stdio_uart(usb_communication 0)\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-73d7740 elementor-widget elementor-widget-text-editor\" data-id=\"73d7740\" 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 aktivieren wir den so genannten Output Stream am USB-Port und deaktivieren gleichzeitig den UART-Ausgang.<\/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-cc01cff elementor-widget elementor-widget-image\" data-id=\"cc01cff\" 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\/02\/serial-usb1-1024x227-1.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"serial-usb1-1024x227\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Nzk4NTIsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvc2VyaWFsLXVzYjEtMTAyNHgyMjctMS5wbmcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"177\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb1-1024x227-1.png\" class=\"attachment-large size-large wp-image-79852\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb1-1024x227-1.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb1-1024x227-1-300x67.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb1-1024x227-1-768x170.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\">Meldungen, die im Monitor der seriellen Schnittstelle angezeigt werden.<\/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-ce8f62b elementor-widget elementor-widget-text-editor\" data-id=\"ce8f62b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Nachdem Sie das Projekt erstellt und die Datei .uf2 in den RPI-Speicher hochgeladen haben, meldet sich das Board als serielles USB-Ger\u00e4t unter einem der COM-Ports. Details k\u00f6nnen Sie im Ger\u00e4temanager einsehen. Wenn Sie die vom Mikrocontroller gesendeten Nachrichten \u00fcberpr\u00fcfen m\u00f6chten, k\u00f6nnen Sie ein beliebiges Programm verwenden, mit dem Sie die seriellen Schnittstellen verwalten k\u00f6nnen, oder Sie nutzen die in Visual Studio Code integrierte Funktionalit\u00e4t f\u00fcr diesen Zweck. Unten finden Sie den SERIAL MONITOR, den Sie \u00f6ffnen k\u00f6nnen, um verschiedene Optionen zu sehen. Die wichtigste davon ist Port. Hier wird der RPI unter dem Namen USB Serial Device angezeigt, in meinem Fall dem COM3-Port zugewiesen. Da es sich hierbei um einen virtuellen seriellen Anschluss handelt, brauchen wir die anderen Optionen nicht zu beachten. Wenn Sie auf die Schaltfl\u00e4che \u00dcberwachung starten klicken, wird der Anschluss ge\u00f6ffnet und die vom Prozessor gesendete Nachricht &#8220;RPI Pico W sendet Nachricht&#8221; sollte auf dem Bildschirm des Computers erscheinen. Dank der Verwendung eines Zeilenendezeichens (\\n) beginnt jede Nachricht in einer neuen Zeile.<\/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-78adcc8 elementor-widget elementor-widget-heading\" data-id=\"78adcc8\" 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\">Numerische Nachrichten<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f160ae elementor-widget elementor-widget-code-highlight\" data-id=\"0f160ae\" 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\nuint8_t counter = 0;\r\nfloat pi = 3.1415926;\r\n\r\nint main() {\r\n    stdio_init_all(); \/\/initialization of the stdio.h library\r\n    \r\n    while(true) {\r\n        printf(\"RPI Pico W sendet eine Nachricht\\n\");\r\n        printf(\"counter value = %d\\n\", counter); \/\/%d = counter variable\r\n        printf(\"pi = %f\\n\", pi); \/\/%f = pi variable\r\n        counter++;\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-f476d1b elementor-widget elementor-widget-text-editor\" data-id=\"f476d1b\" 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\">Neben den eigentlichen Textnachrichten k\u00f6nnen auch Variablen, genauer gesagt die in ihnen gespeicherten Werte, \u00fcbermittelt werden. Zu diesem Zweck k\u00f6nnen wir auch den Befehl printf verwenden, allerdings in einer leicht ver\u00e4nderten Struktur. Oben sehen Sie eine erweiterte Version des Codes aus dem vorherigen Beispiel. Ich habe zwei Variablen hinzugef\u00fcgt: eine Ganzzahl &#8211; counter, deren Startwert Null ist, und eine Flie\u00dfkommazahl &#8211; pi, die den ungef\u00e4hren Wert der Zahl pi speichert. Ich habe zwei zus\u00e4tzliche printf-Funktionen in den Hauptteil des Programms eingef\u00fcgt, in denen Sie die etwas mysteri\u00f6sen Notationen %d und %f bemerken werden. Sie f\u00fcgt Variablen in die zu erstellende Nachricht ein, die weiter unten nach dem Dezimalpunkt stehen. Mit anderen Worten: %d wird durch den Wert counter ersetzt und pi wird an die Stelle von %f gesetzt. Ganz am Ende habe ich auch eine Erh\u00f6hung des Z\u00e4hlerwerts um eins eingef\u00fcgt, so dass bei jedem Durchlauf der Schleife ein anderer Zustand angezeigt wird.<\/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-a39ac6d elementor-widget elementor-widget-image\" data-id=\"a39ac6d\" 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\/02\/serial-usb2.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"serial usb2\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4ODUsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvc2VyaWFsLXVzYjIucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"281\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb2-1024x360.png\" class=\"attachment-large size-large wp-image-75885\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb2-1024x360.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb2-300x106.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb2-768x270.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb2.png 1364w\" 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\">Meldungen, die im Monitor der seriellen Schnittstelle angezeigt werden.<\/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-1d2b21b elementor-widget elementor-widget-text-editor\" data-id=\"1d2b21b\" 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, sehen wir die aufeinanderfolgenden Nachrichten, die vom Raspberry Pi Pico W gesendet werden. Zus\u00e4tzlich zu dem Text, der bereits aus dem fr\u00fcheren Programm bekannt ist, sehen wir die aufeinanderfolgenden Zust\u00e4nde der Variablen counter, die bei jedem Durchlauf des Programms um eins erh\u00f6ht wird, und den Wert, der unter dem Flie\u00dfkomma-Pi gespeichert ist.<\/p>\n<p style=\"font-weight: 400\">Konstruktionen wie %d und %f sind in der Programmierung \u00e4u\u00dferst n\u00fctzlich, da sie es uns erm\u00f6glichen, die unter einer bestimmten Variablen gespeicherten Daten aufzudecken. Abgesehen davon k\u00f6nnen wir auch %x (f\u00fcr Ganzzahlen im Hex-Format), %c (ASCII-Zeichen, f\u00fcr Variablen vom Typ char) oder %s (sogenannter String, d.h. Zeichenketten aus ASCII-Zeichen) verwenden. Sie fragen sich vielleicht, wie Sie das Prozentzeichen oder den Backslash im Monitor der seriellen Schnittstelle anzeigen k\u00f6nnen. Die Antwort ist einfach: Verwenden Sie es zweimal, d.h. indem Sie den Befehl printf(&#8220;%% \\n&#8221;) erstellen; Sie werden &#8216;% \\n&#8217; im VSC-Fenster sehen.<\/p>\n<p style=\"font-weight: 400\">Ich frage mich, ob Sie bemerkt haben, dass ich in den letzten beiden Beispielen Deutsch verwendet habe. Was ich hier meine, ist &#8220;RPI Pico sendet eine Nachricht&#8221;. Wenn Sie dieses Detail erkannt haben, ist es sehr gut. Ich habe diese Nachricht absichtlich geschrieben, damit ich Sie jetzt an das gute Prinzip des Gebrauchs der englischen Sprache erinnern kann. Deutsch ist akzeptabel, aber es ist eine gute Angewohnheit, alle Nachrichten und Kommentare auf Englisch zu schreiben. <\/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-4139584 elementor-widget elementor-widget-heading\" data-id=\"4139584\" 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\">LED-Steuerung \u00fcber einen Computer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d38a296 elementor-widget elementor-widget-code-highlight\" data-id=\"d38a296\" 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\n#define RED_LED 2\r\nuint8_t led_state = 0;\r\nchar user_input;\r\n\r\nint main() {\r\n    stdio_init_all(); \/\/initialization of the stdio.h library\r\n\r\n    gpio_init(RED_LED);\r\n    gpio_set_dir(RED_LED, GPIO_OUT);\r\n    \r\n    while(true) {\r\n        \r\n        printf(\"Enter 0 or 1 to control the LED\\n\");\r\n        user_input = getchar(); \/\/writing the first received character to a variable\r\n\r\n        if(user_input == '1'){ \/\/condition checking the received sign\r\n            gpio_put(RED_LED, 1);\r\n            printf(\"LED activated\\n\");\r\n        }\r\n        else if(user_input == '0'){\r\n            gpio_put(RED_LED, 0);\r\n            printf(\"LED off\\n\");\r\n        }\r\n        else\r\n        {\r\n            printf(\"Incorrect character entered\\n\");\r\n        }\r\n        \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-cf3398b elementor-widget elementor-widget-text-editor\" data-id=\"cf3398b\" 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 letzte Programm, das wir untersuchen werden, um die USB-Schnittstelle besser kennenzulernen, ist die <strong>bidirektionale Kommunikation<\/strong>. Mit dem oben gezeigten Programm k\u00f6nnen wir die LED-Leuchte \u00fcber den seriellen Monitor steuern. Der RPI Pico W f\u00e4ngt das erste vom Computer gesendete Zeichen ab und entscheidet anhand dieses Zeichens, ob die LED aktiviert oder deaktiviert werden soll.<\/p>\n<p style=\"font-weight: 400\">Das Programm verwendet zwei Variablen led_state, die den Zustand der LED speichern, d.h. Null &#8211; die LED leuchtet nicht und Eins &#8211; der Halbleiter emittiert Photonen. Die zweite Variable ist user_input, in der wir das \u00fcber die Computertastatur eingegebene und an den RP2040 gesendete Zeichen speichern.<\/p>\n<p style=\"font-weight: 400\">Wir k\u00f6nnen den Hauptteil des Programms in zwei Teile unterteilen. Im ersten Teil wird eine Meldung angezeigt, in der Sie aufgefordert werden, eine Null oder eine Eins einzugeben und auf die vom Computer gesendeten Daten zu reagieren. Mit der Funktion getchar() speichern wir das erste vom Mikrocontroller empfangene Zeichen in der Variablen user_input. Die Betonung, dass es sich um das erste Zeichen handelt, ist hier \u00e4u\u00dferst wichtig, denn der Computer kann eine Reihe von Zeichen senden, aber eine solche Situation werde ich am Ende dieses Unterabschnitts beschreiben. Der zweite Teil des Programms umfasste eine <strong>kaskadierte bedingte Anweisung.<\/strong> Bis jetzt haben wir ein einziges ifa in Verbindung mit dem Befehl else verwendet. Diesmal werden wir auch so etwas wie das else if verwenden, ein notwendiges Verfahren, wenn wir zwei Bedingungen \u00fcberpr\u00fcfen, die sich auf dieselbe Variable beziehen. Das Programm in der bedingten Funktion pr\u00fcft den Wert von user_input. Wenn es den Wert 1 speichert, d.h. wenn der Computer ein Zeichen an den Mikrocontroller gesendet hat, dann wird die LED aktiviert. Analog dazu wird die Diode ausgeschaltet, wenn in user_input eine Null gespeichert ist. Der letzte Punkt betrifft die Situation, in der keine der Bedingungen erf\u00fcllt ist. In diesem Fall k\u00f6nnen wir davon ausgehen, dass ein ung\u00fcltiges Zeichen \u00fcber die Computertastatur eingegeben wurde und diese Meldung angezeigt wird.<\/p>\n<p style=\"font-weight: 400\">Auch die Verwendung der Kaskadenfunktion selbst bedarf der Kl\u00e4rung. Kann der Befehl else if durch ein einfaches ifa ersetzt werden? Sie k\u00f6nnen sich wahrscheinlich denken, dass das nicht der Fall ist, und das ist auch die richtige Antwort. Stellen Sie sich jedoch vor, dass dort ein if-Befehl platziert wurde. Wir senden das Zeichen eins an den Mikrocontroller, die erste Bedingung wird gepr\u00fcft und die Diode beginnt zu leuchten. Wir pr\u00fcfen die n\u00e4chste Bedingung, sie ist ung\u00fcltig, und weiter st\u00f6\u00dft der Prozessor auf den Befehl else, den er ausf\u00fchren muss, weil die vorherige Bedingung nicht erf\u00fcllt war. In einer solchen Situation wird die Diode aktiviert und gleichzeitig wird eine Meldung \u00fcber ein falsches Zeichen angezeigt. Genau diese Situationen werden durch die bedingte Kaskadenanweisung verhindert. Wir \u00fcberpr\u00fcfen in Ihr zwei Bedingungen unabh\u00e4ngig voneinander, und es gen\u00fcgt, wenn nur eine der Bedingungen erf\u00fcllt ist und der im else-Block geschriebene Code nicht ausgef\u00fchrt wird. Es wird nur dann eine Meldung \u00fcber ung\u00fcltige Zeichen angezeigt, wenn beide Bedingungen nicht erf\u00fcllt sind.<\/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-dd5e7d0 elementor-widget elementor-widget-image\" data-id=\"dd5e7d0\" 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\/02\/serial-usb3.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"serial usb3\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4ODksInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvc2VyaWFsLXVzYjMucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"161\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3-1024x206.png\" class=\"attachment-large size-large wp-image-75889\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3-1024x206.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3-300x60.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3-768x154.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3-1536x308.png 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-usb3.png 1584w\" 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\">LED-Steuerung aus der Monitor-Serie.<\/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-dcc600c elementor-widget elementor-widget-text-editor\" data-id=\"dcc600c\" 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 Datei .uf2 in den RPI-Speicher hochgeladen wurde, k\u00f6nnen wir den seriellen Monitor starten und versuchen, die LED anzusteuern. Wichtig ist, dass Sie beim ersten Mal, wenn Sie den Code ausf\u00fchren, wahrscheinlich keine Meldung sehen werden, in der Sie aufgefordert werden, eine Null oder eine Eins einzugeben. Der Grund daf\u00fcr ist, dass die Meldung fast sofort nach der Ausf\u00fchrung des Codes gesendet wird. In einer solchen Situation, wenn Sie w\u00e4hrend des Prototypings m\u00f6chten, dass das Programm nicht sofort startet, k\u00f6nnen Sie eine primitive L\u00f6sung wie die Funktion sleep_ms verwenden. Wenn Sie diese Funktion z.B. vor dem Beginn einer unendlichen while-Schleife platzieren und 10s in ihr Argument aufnehmen, haben wir genug Zeit, um den Monitor der seriellen Schnittstelle zu starten, bevor der Hauptteil des Codes beginnt. Sie k\u00f6nnen versuchen, eine solche \u00c4nderung zu implementieren.<\/p>\n<p style=\"font-weight: 400\">Dank der unteren Leiste, die in der Entwicklungsumgebung sichtbar ist, k\u00f6nnen wir einzelne Zeichen oder einen gr\u00f6\u00dferen Text senden. Wenn Sie eine 1 eingeben und auf die Eingabetaste klicken, leuchtet die LED auf. Wenn Sie eine 0 senden, wird die LED ausgeschaltet. Dar\u00fcber hinaus sehen wir auf dem Computerbildschirm die entsprechenden Meldungen \u201eLED activated\u201d oder \u201eLED off\u201d. Wenn wir ein anderes Zeichen senden, informiert uns der Mikrocontroller, dass es ung\u00fcltig ist.<\/p>\n<p style=\"font-weight: 400\">Vorhin habe ich erw\u00e4hnt, dass der Prozessor immer das erste empfangene Zeichen in die Variable user_input schreibt. Aber was passiert, wenn wir versuchen, ihm eine Zeichenfolge zu senden? Senden Sie jetzt zum Beispiel etwas wie: &#8220;501&#8221;. Nach dem Senden leuchtet die Diode auf und Sie sehen etwas Seltsames auf dem Computerbildschirm, n\u00e4mlich eine Meldung, dass das Zeichen nicht korrekt ist und dass die Diode ausgeschaltet und eingeschaltet wird. Lassen Sie uns diesen Fall jedoch genauer analysieren. RP2040 empf\u00e4ngt die Zeichenfolge &#8216;501&#8217;, die in dem entsprechenden Puffer gespeichert wird. Das ausf\u00fchrende Programm liest die F\u00fcnf, die per Definition ein ung\u00fcltiges Zeichen ist, und eine solche Meldung wird angezeigt. Die Schleife kehrt zum Anfang zur\u00fcck, aber es befinden sich noch mehr Daten im Puffer. Die f\u00fcnf wurden bereits vorher entfernt, aber die n\u00e4chste ist Null, also schaltet das Programm die LED aus. Bei der n\u00e4chsten Ausf\u00fchrung der Schleife werden einige Daten in den Puffer eingegeben, so dass der Mikrocontroller denkt, der Benutzer habe weitere Zeichen gesendet. Dies ist eine Eins, was dazu f\u00fchrt, dass die Diode eingeschaltet wird. Erst bei der n\u00e4chsten Ausf\u00fchrung der Schleife ist der Puffer leer und das Programm wartet auf Tastatureingaben. Wenn Sie also einen gr\u00f6\u00dferen Text an den Mikrocontroller senden, wird er dort in seiner Gesamtheit verarbeitet und die Schaltung reagiert auf jedes einzelne Zeichen.<\/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-5854cad elementor-widget elementor-widget-heading\" data-id=\"5854cad\" 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\">ADC-Wandler<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9987602 elementor-widget elementor-widget-image\" data-id=\"9987602\" 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\/02\/adc_uc.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"adc_uc\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4OTMsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvYWRjX3VjLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"851\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/adc_uc-963x1024.png\" class=\"attachment-large size-large wp-image-75893\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/adc_uc-963x1024.png 963w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/adc_uc-282x300.png 282w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/adc_uc-768x817.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/adc_uc.png 972w\" 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 ADC im RP2040. (https:\/\/datasheets.raspberrypi.com\/rp2040\/rp2040-datasheet.pdf)<\/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-ae64401 elementor-widget elementor-widget-text-editor\" data-id=\"ae64401\" 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\">Mit dem PWM-Signal haben wir versucht, das analoge Signal auf unsere Weise zu imitieren, so dass es uns so vorkam, als w\u00fcrde die LED auf sanfte Weise gesteuert. Dies war jedoch nur eine Imitation, denn wie Sie bereits wissen, handelte es sich in Wirklichkeit immer noch um ein 100-prozentig digitales Signal. In diesem Unterabschnitt befassen wir uns mit dem echten analogen Signal, aber wir werden es nicht erzeugen, sondern nur auslesen.<\/p>\n<p><span style=\"font-weight: 400\">In modernen Mikrocontrollern finden wir so etwas wie <\/span><b>einen ADC<\/b>. Genauer gesagt handelt es sich um einen <b>ADC<\/b> (eng. Analog-digital converter), der die Umwandlung eines analogen Signals in eine digitale Form erm\u00f6glicht. Es funktioniert n\u00e4mlich so, dass die Schaltung der an der externen Leitung abgelesenen Spannung einen bestimmten Zahlenwert zuordnet. Wie hoch dieser Wert sein wird, h\u00e4ngt in erster Linie von der Aufl\u00f6sung des Konverters ab. Der Prozessor auf dem RPI Pico W Board ist mit einem 12-Bit-Wandler ausgestattet, so dass das Analogsignal einen Wert von 0 bis 4095 annehmen kann. Es gibt auch 8- oder 16-Bit-Wandler. Die Faustregel lautet: Je h\u00f6her die Aufl\u00f6sung, desto genauer die Messung. Bei 8-Bit-Designs liegt der Lesebereich beispielsweise zwischen 0 und 255, wodurch er kleiner und die Messung weniger genau ist. Sie m\u00fcssen auch bedenken, dass das zu messende Signal spannungsvertr\u00e4glich mit dem Mikrocontroller sein muss. Der RP2040 arbeitet mit einer Logikspannung von 3,3 V. Das gemessene Signal sollte daher diesen Wert niemals \u00fcberschreiten, da sonst die Schaltung besch\u00e4digt werden k\u00f6nnte.<\/p>\n<p style=\"font-weight: 400\">Der Raspberry Pi Pico W verf\u00fcgt \u00fcber f\u00fcnf Eing\u00e4nge, an die wir ein analoges Signal anschlie\u00dfen k\u00f6nnen. Einer davon ist f\u00fcr den internen Temperatursensor reserviert, der sich direkt im Silizium befindet. Die verbleibenden Eing\u00e4nge sind mit den externen Leitungen mit den Nummern 26, 27, 28 und 29 verbunden. Es ist auch erw\u00e4hnenswert, dass der RP2040 tats\u00e4chlich nur einen ADC besitzt, um alle m\u00f6glichen analogen Signalquellen zu verarbeiten. Diese werden durch einen speziellen Multiplexer geschaltet und erst dann wird das Signal umgewandelt. Diese L\u00f6sung wird recht h\u00e4ufig verwendet, vor allem weil die Messwandler recht komplex und teuer in der Herstellung sind.<\/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-ce116aa elementor-widget elementor-widget-image\" data-id=\"ce116aa\" 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\/02\/IMG_0791-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0791\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU4OTcsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvSU1HXzA3OTEtc2NhbGVkLmpwZyJ9\" 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\/02\/IMG_0791-1024x576.jpg\" class=\"attachment-large size-large wp-image-75897\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0791-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0791-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0791-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0791-1536x864.jpg 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0791-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\">Photoresist-Testschaltung.<\/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-31af6b7 elementor-widget elementor-widget-text-editor\" data-id=\"31af6b7\" 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 werden den Betrieb des ADC unter realen Bedingungen testen, und zwar mit Hilfe eines Fotowiderstands, der an den RPI angeschlossen ist und seinen Widerstandswert unter dem Einfluss von Licht, das auf seine Oberfl\u00e4che f\u00e4llt, \u00e4ndert. Er wird jedoch nicht einfach so angeschlossen &#8211; um ein analoges Signal zu erzeugen, m\u00fcssen wir einen Spannungsteiler bauen, der aus dem oben erw\u00e4hnten Element und einem 1,2k\u03a9-Widerstand besteht. Wir schlie\u00dfen eine Leitung des Fotowiderstands an die 3,3 V Spannung an, die an Leitung Nummer 36 anliegt. Ich pers\u00f6nlich habe diese Spannung an den rot markierten Bus auf der Kontaktplatte geleitet. Die zweite Leitung muss mit dem ersten Widerstandsbeinchen verbunden werden, w\u00e4hrend das zweite Widerstandsende mit GND verbunden wird. Wir lesen das Signal am Anschlusspunkt des Widerstands und des Fotowiderstands aus und verbinden sie per Leitung mit Pin GP26, der auf der Platine mit ADC0 bezeichnet ist.<\/p>\n<p style=\"font-weight: 400\">Die L\u00f6sung mit dem Spannungsteiler ist notwendig, denn wenn wir den Fotowiderstand einfach so an den RPI anschlie\u00dfen w\u00fcrden, bek\u00e4men wir eine Spannung nahe 3,3V, unabh\u00e4ngig von dem Lichtstrahl, der auf das Element f\u00e4llt. Der Widerstand und der flie\u00dfende Strom w\u00fcrden sich \u00e4ndern, aber die Spannung bliebe immer die gleiche. Mit einem zus\u00e4tzlichen Widerstand k\u00f6nnen wir jedoch die an den Elementen anliegende Spannung in zwei Teile aufteilen, die von dem Widerstand abh\u00e4ngen. Mehr Licht, das auf den Fotowiderstand f\u00e4llt, bedeutet eine Verringerung seines Widerstands, einen Anstieg des Stroms und eine Verringerung der auf ihm abgelagerten Spannung. Der gr\u00f6\u00dfte Teil der Spannung wird dann von dem Widerstand abgefangen, an dem die Messung tats\u00e4chlich vorgenommen wird. Beachten Sie, dass wir die Spannung in Bezug auf Masse ablesen. Wir messen also tats\u00e4chlich den Widerstand und nicht den Fotowiderstand. Wenn weniger Licht vorhanden ist, erh\u00f6ht sich der Widerstand des Fotowiderstands und es wird eine h\u00f6here Spannung am Widerstand angelegt, wodurch gleichzeitig die Potenzialdifferenz \u00fcber dem Widerstand sinkt. Vielleicht fragt sich jemand, warum ich gerade eine solche Schaltung gebaut habe, und ob man den Widerstand und den Fotowiderstand austauschen kann? Nat\u00fcrlich k\u00f6nnen diese Elemente auch ausgetauscht werden, aber dann w\u00fcrden wir die Funktionsweise der Schaltung umkehren. Bei meiner L\u00f6sung steigt die angezeigte Spannung mit der Anzahl der Photonen, die auf den Fotowiderstand fallen. Nach dem Vertauschen der Elemente w\u00fcrde es umgekehrt funktionieren, was mir weniger intuitiv erscheint.<\/p>\n<p style=\"font-weight: 400\">Nach dieser etwas l\u00e4ngeren Einf\u00fchrung k\u00f6nnen wir mit der Programmierung fortfahren. Zu Testzwecken habe ich ein Projekt namens photoresistor_adc vorbereitet. Seine Aufgabe wird es sein, das Signal vom GP26-Pin zu lesen und den numerischen Wert \u00fcber USB an den Computer zu senden, damit wir ihn auf dem seriellen Monitor sehen k\u00f6nnen.<\/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-50ddb68 elementor-widget elementor-widget-code-highlight\" data-id=\"50ddb68\" 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#include \"hardware\/adc.h\"\r\n\r\nint main() {\r\n    stdio_init_all();\r\n\r\n    adc_init(); \/\/ADC initialization\r\n\r\n    adc_gpio_init(26); \/\/assignment to ADC pin 26 (ADC0)\r\n    adc_select_input(0);\r\n\r\n    while(true) {\r\n        \r\n        uint16_t result = adc_read(); \/\/ADC value reading\r\n        float voltage_value = result * (3.3\/4095); \/\/ADC to voltage conversion\r\n        printf(\"Read ADC: value = %d, voltage = %f V\\n\", result, voltage_value);\r\n        \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-5b3eccc elementor-widget elementor-widget-text-editor\" data-id=\"5b3eccc\" 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 wir gemeinsam besprechen werden, ist recht kurz, aber es enth\u00e4lt einige Neuerungen, die Sie gleich kennenlernen werden. Da wir eine weitere eingebaute Funktion des Mikrocontrollers verwenden werden, m\u00fcssen wir die entsprechende Bibliothek einbinden, und das ist hardware\/adc.h. Vergessen Sie nicht, sie in die Datei CMakeLists.txt einzutragen. Au\u00dferdem verwendet das Projekt auch einen USB-Ausgabe-Stream und auch dieser sollte in dieser Datei aktiviert werden, wie in den vorherigen Beispielen.<\/p>\n<p style=\"font-weight: 400\">Im ersten Teil des Programms initialisieren wir den ADC mit Hilfe des Befehls adc_init() und w\u00e4hlen den verwendeten Port aus. Die erste Funktion w\u00e4hlt die entsprechende GPxx-Nummer aus, w\u00e4hrend adc_select_input f\u00fcr die Auswahl des ADC-Signals verantwortlich ist, das \u00fcber den bereits erw\u00e4hnten Multiplexer an den Konverter weitergeleitet wird.<\/p>\n<p style=\"font-weight: 400\">Im Hauptteil des Programms erstellen wir eine Variable result, die dank der Verwendung der Funktion adc_read() den numerischen Wert des vom GP26-Pin gelesenen ADC-Signals speichern wird. Im n\u00e4chsten Schritt generieren wir den Flie\u00dfkomma voltage_value, denn neben dem numerischen Wert des ADC w\u00e4re es auch n\u00fctzlich, die spezifische Spannung zu kennen, die am Ausgang des RPI Pico W erscheint. Wir k\u00f6nnen die Potentialdifferenz anhand einer einfachen Beziehung berechnen:<\/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-33f6b0c elementor-widget elementor-widget-text-editor\" data-id=\"33f6b0c\" 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\">4095 = 3,3V<\/p>\n<p style=\"font-weight: 400\">1 = xV<\/p>\n<p style=\"font-weight: 400\">4095x = 3,3V<\/p>\n<p style=\"font-weight: 400\">x = 3,3V\/4095 = 0,000805V<\/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-548987e elementor-widget elementor-widget-text-editor\" data-id=\"548987e\" 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 wissen wir, dass jede Erh\u00f6hung des ADC-Werts um eins tats\u00e4chlich einer Spannungserh\u00f6hung von etwa 0,000805V entspricht. Die Sprache C kann erfolgreich alle Arten von mathematischen Operationen erstellen. Damit der RP2040 uns den entsprechenden Wert zur weiteren Anzeige sendet, werden wir eine einfache mathematische Berechnung vorbereiten. Um den Spannungswert zu erhalten, der dem ADC entspricht, multiplizieren wir ihn einfach mit dem soeben berechneten Wert. Dies wird durch den Sternchen-Operator (*) erm\u00f6glicht, der den Wert der Variablen result mit (3,3\/4095) multipliziert. Nat\u00fcrlich k\u00f6nnten Sie hier auch einfach 0,000805 eingeben, aber nichts hindert den Mikrocontroller daran, den entsprechenden Wert selbst zu bestimmen. Dank des Operators (\/) dividieren wir also 3,3 durch 4095. Beachten Sie, dass die Operation in Klammern steht. W\u00fcrden die Klammern fehlen, w\u00fcrde das System zuerst die Multiplikation und erst dann die Division durchf\u00fchren, was zu einem falschen Ergebnis f\u00fchren w\u00fcrde. Es ist wissenswert, dass C die aus der Mathematik bekannte und durch Klammern realisierte Reihenfolge der Operationen unterst\u00fctzt.<\/p>\n<p style=\"font-weight: 400\">Im letzten Punkt senden wir dank der bekannten printf-Funktion die entsprechende Nachricht mit der Variablen result und voltage_value an den Computer.<\/p>\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-153ffab elementor-widget elementor-widget-image\" data-id=\"153ffab\" 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\/02\/serial-adc.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"serial adc\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU5MDYsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvc2VyaWFsLWFkYy5wbmcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"249\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc-1024x319.png\" class=\"attachment-large size-large wp-image-75906\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc-1024x319.png 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc-300x94.png 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc-768x239.png 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc-1536x479.png 1536w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/serial-adc.png 1585w\" 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\">ADC-Werte und Spannungen, die \u00fcber RPI \u00fcbertragen werden.<\/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-f640fa3 elementor-widget elementor-widget-text-editor\" data-id=\"f640fa3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\">Nach dem Start des Programms und dem \u00d6ffnen des seriellen Monitors k\u00f6nnen wir die sich \u00e4ndernde numerische Darstellung des ADC und der Spannung auf dem Bildschirm unseres Computers beobachten. Diese Werte steigen mit der Menge des auf den Fotowiderstands einfallenden Lichts.<\/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-4f4e167 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4f4e167\" 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-9a554f5\" data-id=\"9a554f5\" 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-4428e0c elementor-widget elementor-widget-image\" data-id=\"4428e0c\" 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\/02\/RPP130-FOTOREZYSTOR-0001.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"RPP130 FOTOREZYSTOR 0001\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU5MTAsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvUlBQMTMwLUZPVE9SRVpZU1RPUi0wMDAxLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"852\" src=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/RPP130-FOTOREZYSTOR-0001.jpg\" class=\"attachment-large size-large wp-image-75910\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/RPP130-FOTOREZYSTOR-0001.jpg 800w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/RPP130-FOTOREZYSTOR-0001-282x300.jpg 282w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/RPP130-FOTOREZYSTOR-0001-768x818.jpg 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\">Besch\u00e4digter RPP130-Fotoresist aus den 1980er Jahren. (http:\/\/www.cemi.cba.pl\/fotorezystor.html)<\/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-e7617fb\" data-id=\"e7617fb\" 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-2d1f947 elementor-widget elementor-widget-image\" data-id=\"2d1f947\" 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\/02\/IMG_0792.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0792\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU5MTQsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvSU1HXzA3OTIuanBnIn0%3D\" 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\/02\/IMG_0792-1024x576.jpg\" class=\"attachment-large size-large wp-image-75914\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0792-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0792-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0792-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0792.jpg 1299w\" 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\">Zeitgen\u00f6ssischer Photoresist.<\/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<div class=\"elementor-element elementor-element-f3b1c3a elementor-widget elementor-widget-text-editor\" data-id=\"f3b1c3a\" 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 zwei interessante Fotos zum Thema Fotowiderstand zeigen. Diese optoelektronischen Komponenten bestehen aus d\u00fcnnen Halbleiterbahnen, die auf ein dielektrisches Substrat aufgebracht sind. Das verwendete Halbleitermaterial h\u00e4ngt von der spezifischen Art des Fotowiderstands und seinen spektralen Eigenschaften ab. \u00dcbliche Materialien sind Cadmiumsulfid (CdS), Bleisulfid (PbS), Bleiselenid (PbSe) oder Indiumantimon (InSb). Jeder Fotowiderstand muss, wie andere elektronische Komponenten auch, unter sterilen Bedingungen hergestellt werden, aber Fehler k\u00f6nnen immer passieren. Auf dem Foto rechts sehen Sie einen gew\u00f6hnlichen, korrekt hergestellten Fotowiderstand. Das linke Foto zeigt jedoch ein w\u00e4hrend der Produktion besch\u00e4digtes Element mit der Kennzeichnung RPP130 aus der inzwischen stillgelegten Unitra TOMI Fabrik in Toru\u0144. Die Ursache f\u00fcr das Versagen war wahrscheinlich Wasserdampf, der sich auf der Fotowiderstandstruktur abgesetzt hatte, bevor er in das hermetische Geh\u00e4use gelegt wurde.<\/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-808a094 elementor-widget elementor-widget-image\" data-id=\"808a094\" 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\/02\/IMG_0794.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0794\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NzU5MTgsInVybCI6Imh0dHBzOlwvXC9ib3RsYW5kLmRlXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMlwvSU1HXzA3OTQuanBnIn0%3D\" 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\/02\/IMG_0794-1024x576.jpg\" class=\"attachment-large size-large wp-image-75918\" alt=\"\" srcset=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0794-1024x576.jpg 1024w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0794-300x169.jpg 300w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0794-768x432.jpg 768w, https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/IMG_0794.jpg 1383w\" 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\">Defekter Photoresist.<\/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-0c86489 elementor-widget elementor-widget-text-editor\" data-id=\"0c86489\" 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\">Diese Art des Versagens ist jedoch nicht nur eine Dom\u00e4ne der uralten Fotowiderst\u00e4nde aus den 1980er Jahren. Auf dem Foto oben sehen Sie einen interessanten Fall eines modernen Fotowiderstands mit einem \u00e4hnlichen Defekt. Dank seiner ungew\u00f6hnlichen Struktur hat er einen viel h\u00f6heren Widerstand als die im Katalog angegebenen 15k\u03a9.<\/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-f43ad06 elementor-widget elementor-widget-heading\" data-id=\"f43ad06\" 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-a1834dc elementor-widget elementor-widget-text-editor\" data-id=\"a1834dc\" 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\">Mehr Raspberry Pi Pico W Material ist hinter uns. Diesmal haben wir etwas \u00fcber die Pulsweitenmodulation (PWM) gelernt und diese Funktionalit\u00e4t zur Steuerung einer LED verwendet. Au\u00dferdem habe ich Ihnen erkl\u00e4rt, wie Sie die Kommunikation mit dem Computer herstellen, so dass wir in zuk\u00fcnftigen Programmen die vom RP2040 gesendeten Informationen einfach auf dem Bildschirm anzeigen k\u00f6nnen. Dar\u00fcber hinaus haben wir einen Fotowiderstand mit einem ADC betrieben. Im n\u00e4chsten Artikel werden wir die bisher gewonnenen Erkenntnisse nutzen und gemeinsam ein etwas gr\u00f6\u00dferes Programm erstellen.<\/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-fd3350f elementor-widget elementor-widget-spacer\" data-id=\"fd3350f\" 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-3bc6aa8 elementor-widget elementor-widget-text-editor\" data-id=\"3bc6aa8\" 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<li>https:\/\/en.wikipedia.org\/wiki\/Pulse-width_modulation<\/li>\n<li>http:\/\/www.cemi.cba.pl\/fotorezystor.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 Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.<\/p>\n","protected":false},"author":34,"featured_media":76281,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-78852","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 - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland<\/title>\n<meta name=\"description\" content=\"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.\" \/>\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-6-pwm-adc-und-kommunikation-mit-dem-computer\/\" \/>\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 - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland\" \/>\n<meta property=\"og:description\" content=\"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/\" \/>\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-02-19T13:00:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T09:01:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1510\" \/>\n\t<meta property=\"og:image:height\" content=\"755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 Bartoszak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 Bartoszak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"33\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-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Raspberry Pi Pico Kurs &#8211; #6 &#8211; PWM, ADC und Kommunikation mit dem Computer\",\"datePublished\":\"2024-02-19T13:00:23+00:00\",\"dateModified\":\"2026-04-08T09:01:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/\"},\"wordCount\":5728,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/1.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/\",\"name\":\"Raspberry Pi Pico Kurs - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/1.png\",\"datePublished\":\"2024-02-19T13:00:23+00:00\",\"dateModified\":\"2026-04-08T09:01:06+00:00\",\"description\":\"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/1.png\",\"contentUrl\":\"https:\\\/\\\/botland.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/1.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\\\/#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; #6 &#8211; PWM, ADC und Kommunikation mit dem Computer\"}]},{\"@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 - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland","description":"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.","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-6-pwm-adc-und-kommunikation-mit-dem-computer\/","og_locale":"de_DE","og_type":"article","og_title":"Raspberry Pi Pico Kurs - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland","og_description":"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.","og_url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-02-19T13:00:23+00:00","article_modified_time":"2026-04-08T09:01:06+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Rafa\u0142 Bartoszak","Gesch\u00e4tzte Lesezeit":"33\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#article","isPartOf":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Raspberry Pi Pico Kurs &#8211; #6 &#8211; PWM, ADC und Kommunikation mit dem Computer","datePublished":"2024-02-19T13:00:23+00:00","dateModified":"2026-04-08T09:01:06+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/"},"wordCount":5728,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/","url":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/","name":"Raspberry Pi Pico Kurs - #6 - PWM, ADC und Kommunikation mit dem Computer - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#primaryimage"},"image":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png","datePublished":"2024-02-19T13:00:23+00:00","dateModified":"2026-04-08T09:01:06+00:00","description":"In diesem Teil des Kurses werden wir uns einige Funktionen des RP2040 Mikrocontrollers genauer ansehen: PWM, USB und ADC. Neben der theoretischen Beschreibung werden Sie auch die praktische Anwendung dieser Funktionen kennenlernen.","breadcrumb":{"@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#primaryimage","url":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png","contentUrl":"https:\/\/botland.de\/blog\/wp-content\/uploads\/2024\/02\/1.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.de\/blog\/raspberry-pi-pico-kurs-6-pwm-adc-und-kommunikation-mit-dem-computer\/#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; #6 &#8211; PWM, ADC und Kommunikation mit dem Computer"}]},{"@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\/78852","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=78852"}],"version-history":[{"count":0,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/posts\/78852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media\/76281"}],"wp:attachment":[{"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/media?parent=78852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/categories?post=78852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.de\/blog\/wp-json\/wp\/v2\/tags?post=78852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}