{"id":75086,"date":"2024-01-29T14:00:26","date_gmt":"2024-01-29T13:00:26","guid":{"rendered":"https:\/\/homebook.click\/blog\/?p=75086"},"modified":"2026-04-08T11:01:23","modified_gmt":"2026-04-08T09:01:23","slug":"raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe","status":"publish","type":"post","link":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/","title":{"rendered":"Kurs Raspberry Pi Pico &#8211; #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\"> 12<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"75086\" class=\"elementor elementor-75086\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1f44a40 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1f44a40\" 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-2285c33\" data-id=\"2285c33\" 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-489a829 elementor-widget elementor-widget-text-editor\" data-id=\"489a829\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"font-weight: 400\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-4-zaczynamy-programowac\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>W poprzednim poradniku<\/strong><\/a> skupili\u015bmy si\u0119 na przygotowaniu od zera pierwszego projektu, kt\u00f3rego zadaniem by\u0142o sterowa\u0107 trzema diodami LED. Dzi\u0119ki niemu poznali\u015bcie pierwsze funkcje, pozwalaj\u0105ce sterowa\u0107 wyprowadzeniami RPI Pico W oraz zarz\u0105dza\u0107 dzia\u0142aniem realizowanego programu. Poza tym, poznali\u015bcie pierwszy rodzaj p\u0119tli spotykanej w j\u0119zyku C, a tak\u017ce tak zwane funkcje blokuj\u0105ce i to jakie zagro\u017cenia nios\u0105 ze sob\u0105. Tematami przewodnimi tego artyku\u0142u b\u0119d\u0105 bardziej teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Dzi\u0119ki niemu poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Oczywi\u015bcie mimo bardziej teoretycznego tematu, wszystkie programistyczne konstrukcje uruchomimy w rzeczywisto\u015bci.<\/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-5b5b8a9 elementor-widget elementor-widget-image\" data-id=\"5b5b8a9\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/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%3DeyJpZCI6Ijc2MTU2IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvNEdvdG93eS1aZXN0YXctZG8tbmF1a2ktcHJvZ3JhbW93YW5pYS16LVJhc3BiZXJyeS1QaS1QaWNvLVcuanBnIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1429\" height=\"194\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg\" class=\"attachment-full size-full wp-image-76156\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-300x41.jpg 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg 1024w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w\" sizes=\"(max-width: 1429px) 100vw, 1429px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-8614b20 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8614b20\" 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-c0eb79c\" data-id=\"c0eb79c\" 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-c94e6ca elementor-widget elementor-widget-image\" data-id=\"c94e6ca\" 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:\/\/homebook.click\/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%3DeyJpZCI6Ijc2MTYwIiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvMjQxMzZfMy5qcGcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"273\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg\" class=\"attachment-medium size-medium wp-image-76160\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/24136_3-1024x933.jpg 1024w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/24136_3-768x700.jpg 768w, https:\/\/homebook.click\/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-fcd6b3b\" data-id=\"fcd6b3b\" 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-05aaf9b elementor-widget elementor-widget-text-editor\" data-id=\"05aaf9b\" 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\">Kup zestaw do nauki programowania z Raspberry Pi Pico W i skorzystaj z kursu dost\u0119pnego na Blog Botland!<\/span><\/p><p>W zestawie: modu\u0142 Raspberry Pi Pico W, p\u0142ytka stykowa, przewody, diody LED, rezystory, przyciski, fotorezystory, cyfrowe czujniki \u015bwiat\u0142a, temperatury, wilgotno\u015bci i ci\u015bnienia, wy\u015bwietlacz OLED i przew\u00f3d USB-microUSB.<\/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-666f5e4 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"666f5e4\" 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:\/\/homebook.click\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.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\">SPRAWD\u0179 W 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-4f6b29d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4f6b29d\" 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-dcd6c61 elementor-widget elementor-widget-text-editor\" data-id=\"dcd6c61\" 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><strong>Spis tre\u015bci:<\/strong><\/p>\n<ol style=\"background-color: #ffffff;\">\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-1-zaczynamy\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #1<\/span>&nbsp;&#8211; zaczynamy&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-2-slow-kilka-o-programowaniu\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #2<\/span>&nbsp;&#8211; s\u0142\u00f3w kilka o programowaniu<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-3-pierwszy-program\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #3<\/span>&nbsp;&#8211; pierwszy program<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-4-zaczynamy-programowac\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #4<\/span>&nbsp;&#8211; zaczynamy programowa\u0107<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico &#8211; #5<\/span>&nbsp;&#8211; p\u0119tle, zmienne i instrukcje warunkowe&nbsp;<\/a><\/li>\n<li style=\"font-size: 16px;\"><a href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-6-pwm-adc-i-komunikacja-z-komputerem\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico \u2013 #6<\/strong> \u2013 PWM, ADC i komunikacja z komputerem<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-7-poprawki-w-kodzie-i-wlasne-funkcje\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico \u2013 #7 <\/span>&nbsp;\u2013 Poprawki w kodzie i w\u0142asne funkcje&nbsp;<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico \u2013 #8<\/strong> \u2013 Przerwania i alarmy<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-9-teoria-wskaznikow-i-timery\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico \u2013 #9<\/span>&nbsp;\u2013 Teoria wska\u017anik\u00f3w i timery<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-10-tablice-struktury-i-maszyna-stanow\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico \u2013 #10<\/strong>&nbsp;\u2013 Tablice, struktury i maszyna stan\u00f3w<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-11-uruchomienie-cyfrowego-czujnik-swiatla-czyli-i2c\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico \u2013 #11<\/span>&nbsp;&#8211; Uruchomienie cyfrowego czujnika \u015bwiat\u0142a, czyli I2C<\/a><\/li>\n<li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-12-przygotowujemy-biblioteke-dla-cyfrowego-czujnika-swiatla-1-2\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico \u2013 #12 \u2013<\/strong> Przygotowujemy bibliotek\u0119 dla cyfrowego czujnika \u015bwiat\u0142a 1\/2<\/a><\/li><li><a href=\"https:\/\/homebook.click\/blog\/kurs-raspberry-pi-pico-13-biblioteka-dla-cyfrowego-czujnika-swiatla-2-2-dma\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>Raspberry Pi Pico \u2013 #13<\/strong> \u2013 Biblioteka dla cyfrowego czujnika \u015bwiat\u0142a 2\/2, DMA<\/a><\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-175f31c elementor-widget elementor-widget-spacer\" data-id=\"175f31c\" 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-c5f3071 elementor-widget elementor-widget-heading\" data-id=\"c5f3071\" 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\">Przed wyruszeniem w drog\u0119 nale\u017cy zebra\u0107 dru\u017cyn\u0119<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc5908f elementor-widget elementor-widget-image\" data-id=\"bc5908f\" 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:\/\/homebook.click\/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%3DeyJpZCI6Ijc0Nzk3IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvSU1HXzA2NDctc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg\" class=\"attachment-large size-large wp-image-74797\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg 1024w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-300x169.jpg 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-768x432.jpg 768w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1536x864.jpg 1536w, https:\/\/homebook.click\/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\">Zestaw element\u00f3w do kursu Raspberry Pi Pico.<\/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-b5bdd11 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"b5bdd11\" 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:\/\/homebook.click\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.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\">SPRAWD\u0179<\/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-8ad6b77 elementor-widget elementor-widget-text-editor\" data-id=\"8ad6b77\" 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>Chc\u0105c uczy\u0107 si\u0119 programowania, bazuj\u0105c na rzeczywistych projektach, potrzebny b\u0119dzie oczywi\u015bcie odpowiedni sprz\u0119t, ale bez obaw &#8211; nie musisz teraz skaka\u0107 mi\u0119dzy kolejnymi artyku\u0142ami i przygotowywa\u0107 list\u0119 niezb\u0119dnych elektronicznych element\u00f3w. W sklepie\u00a0<a style=\"background-color: #ffffff\" href=\"https:\/\/homebook.click\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">Botland<\/span><\/a>\u00a0dost\u0119pny jest\u00a0<a style=\"background-color: #ffffff\" href=\"https:\/\/homebook.click\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">gotowy zestaw<\/span><\/a>, zawieraj\u0105cy wszystkie komponenty niezb\u0119dne do wykonania projekt\u00f3w opisanych w serii poradnik\u00f3w o Raspberry Pi Pico.\u00a0<\/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-ade982d elementor-widget elementor-widget-text-editor\" data-id=\"ade982d\" 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>W\u00a0<a href=\"https:\/\/homebook.click\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder\">gotowym zestawie<\/span><\/a>\u00a0element\u00f3w znajdziecie:<\/p><ul style=\"font-size: 16px;background-color: #ffffff\"><li style=\"font-size: 16px\">Raspberry Pi Pico W,<\/li><li style=\"font-size: 16px\">Przew\u00f3d microUSB,<\/li><li style=\"font-size: 16px\">P\u0142ytk\u0119 stykow\u0105,<\/li><li style=\"font-size: 16px\">Zestaw przewod\u00f3w po\u0142\u0105czeniowych w trzech rodzajach,<\/li><li style=\"font-size: 16px\">Zestaw diod LED w trzech kolorach,<\/li><li style=\"font-size: 16px\">Zestaw najczciej stosowanych w elektronice rezystor\u00f3w,<\/li><li style=\"font-size: 16px\">Przyciski Tact Switch,<\/li><li style=\"font-size: 16px\">Fotorezystory,<\/li><li style=\"font-size: 16px\">Cyfrowy czujnik \u015bwiat\u0142a,<\/li><li style=\"font-size: 16px\">Cyfrowy czujnik wilgotno\u015bci, temperatury i ci\u015bnienia,<\/li><li style=\"font-size: 16px\">Wy\u015bwietlacz OLED.<\/li><\/ul>\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-96fe5bc elementor-widget elementor-widget-spacer\" data-id=\"96fe5bc\" 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-89932f8 elementor-widget elementor-widget-heading\" data-id=\"89932f8\" 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\">Rozbudowa obwodu i nowy projekt<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ce2acc elementor-widget elementor-widget-image\" data-id=\"7ce2acc\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0580\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc1MDg4IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvSU1HXzA1ODAtc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-1024x576.jpg\" class=\"attachment-large size-large wp-image-75088\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-1024x576.jpg 1024w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-300x169.jpg 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-768x432.jpg 768w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-1536x864.jpg 1536w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/IMG_0580-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\">Rozbudowany obw\u00f3d z poprzedniego projektu.<\/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-331d0ea elementor-widget elementor-widget-text-editor\" data-id=\"331d0ea\" 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\">Naturalnym jest, \u017ce w bardziej rozbudowanych projektach <a href=\"https:\/\/homebook.click\/22-mikrokontrolery\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>mikrokontroler<\/strong><\/a> nie tylko steruje peryferiami, ale potrafi te\u017c reagowa\u0107 na sygna\u0142y z zewn\u0105trz. Jednym z najprostszych sposob\u00f3w, aby tego typu sygna\u0142 wygenerowa\u0107 b\u0119dzie pod\u0142\u0105czenie do <a href=\"https:\/\/homebook.click\/moduly-i-zestawy-do-raspberry-pi-pico\/21574-raspberry-pi-pico-w-rp2040-arm-cortex-m0-cyw43439-wifi-5056561803173.html\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>RPI Pico W<\/strong><\/a> niewielkiego przycisku. W kolejnych kodach b\u0119dziemy bazowa\u0107 na, tak samo, jak poprzednio, pod\u0142\u0105czonych diodach LED oraz dodatkowym <strong>switchu<\/strong> po\u0142\u0105czonym z pinem GP16. Gdy przycisk zostanie wci\u015bni\u0119ty, pin RP2040 zostanie po\u0142\u0105czony z mas\u0105, dlatego jego drug\u0105 n\u00f3\u017ck\u0119 nale\u017cy pod\u0142\u0105czy\u0107 do GND.\u00a0<\/p><p style=\"font-weight: 400\">Poza nieco zmodyfikowanym obwodem potrzebny b\u0119dzie te\u017c nowy projekt. Tworzymy go identycznie jak w czwartym materiale, a jedyn\u0105 r\u00f3\u017cnic\u0105 b\u0119dzie nazwa \u2013 loops_and_if. Pami\u0119tajcie, aby nazwa\u0107 w ten sam spos\u00f3b plik z kodem oraz utworzy\u0107 CMakeLists.<\/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-cf89134 elementor-widget elementor-widget-image\" data-id=\"cf89134\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/make-loops-adn-if.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"make loops adn if\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc1MDkyIiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvbWFrZS1sb29wcy1hZG4taWYucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"273\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/make-loops-adn-if.png\" class=\"attachment-large size-large wp-image-75092\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/make-loops-adn-if.png 464w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/make-loops-adn-if-300x177.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/>\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 w projekcie loops_and_if.<\/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-840243d elementor-widget elementor-widget-text-editor\" data-id=\"840243d\" 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\">Tak jak wcze\u015bniej oba wygenerowane pliki s\u0105 puste. Kodem zajmiemy si\u0119 za chwil\u0119, ale ju\u017c teraz warto uzupe\u0142ni\u0107 plik make. Jego struktura, jest na razie niezmienna, dlatego mo\u017cecie spr\u00f3bowa\u0107 napisa\u0107 go samodzielnie, bazuj\u0105c na wersji z poprzedniego projektu, pami\u0119taj\u0105c jednocze\u015bnie o poprawno\u015bci nazw. Na koniec mo\u017cecie por\u00f3wna\u0107 go z moim plikiem, kt\u00f3rego kod widoczny jest na obrazku powy\u017cej. Na koniec trzeba te\u017c doda\u0107 projekt w pliku CMakeLists.txt, kt\u00f3ry obs\u0142uguje ca\u0142y folder pico-examples, tutaj r\u00f3wnie\u017c procedura wygl\u0105da identycznie jak w poprzednim materiale.\u00a0<\/p><p style=\"font-weight: 400\">Warto jest prze\u0107wiczy\u0107 sobie proces tworzenia nowych projekt\u00f3w kilkukrotnie, mo\u017cecie spr\u00f3bowa\u0107 doda\u0107 w\u0142asne, na ten moment nawet puste projekty. W przysz\u0142o\u015bci nie b\u0119d\u0119 ju\u017c wspomina\u0107 jak wykona\u0107 ca\u0142\u0105 procedur\u0119, chyba \u017ce pojawi\u0105 si\u0119 w niej jakie\u015b zmiany.<\/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-e6ba2bc elementor-widget elementor-widget-heading\" data-id=\"e6ba2bc\" 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\">Instrukcja warunkowa if, czyli reagowanie na przycisk <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-941c6a4 elementor-widget elementor-widget-code-highlight\" data-id=\"941c6a4\" 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 GREEN_LED 0 \/\/assigning names to specific values\r\n#define SW_PIN 16\r\n\r\nint main() {\r\n    gpio_init(SW_PIN); \/\/initialization and setting of pin mode\r\n    gpio_init(GREEN_LED);\r\n\r\n    gpio_set_dir(SW_PIN, GPIO_IN);\r\n    gpio_set_dir(GREEN_LED, GPIO_OUT);\r\n    \r\n    gpio_pull_up(SW_PIN); \/\/SW_PIN pull-up to power supply\r\n    \r\n    while (true) {\r\n        bool state = gpio_get(SW_PIN); \/\/SW_PIN value reading\r\n\r\n        if (state == true) \/\/check the state of the state variable\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n        }\r\n        else \/\/if the state variable has a value other than true\r\n        {\r\n            gpio_put(GREEN_LED, 0);\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-150e40a elementor-widget elementor-widget-text-editor\" data-id=\"150e40a\" 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\">Programy<strong> w j\u0119zyku C<\/strong> to nie tylko realizowane po kolei instrukcje. Niezwykle cz\u0119stym przypadkiem jest sytuacja, w kt\u00f3rej chcieliby\u015bmy, aby tylko <strong>konkretny fragment kodu<\/strong> zosta\u0142 wykonany, zale\u017cnie od czynnik\u00f3w zewn\u0119trznych. Tego typu sytuacj\u0119 mo\u017cemy prze\u0107wiczy\u0107 w tym przyk\u0142adzie, stosuj\u0105c po raz pierwszy <strong>instrukcj\u0119 warunkow\u0105<\/strong>, kt\u00f3rej zadaniem b\u0119dzie na podstawie sygna\u0142u z przycisku zdecydowa\u0107, czy dioda LED b\u0119dzie \u015bwieci\u0107, czy te\u017c nie. W tym przyk\u0142adzie spr\u00f3bujemy wysterowa\u0107 diod\u0119 \u015bwiec\u0105c\u0105 zgodnie ze stanem GP16, <strong>czyli je\u015bli pojawi si\u0119 tam stan wysoki, dioda b\u0119dzie \u015bwieci\u0107 i analogicznie przy braku napi\u0119cia dioda \u015bwieci\u0107 nie b\u0119dzie<\/strong>.\u00a0<\/p><p style=\"font-weight: 400\">Przypomnijcie sobie na moment kod, kt\u00f3ry napisali\u015bmy przy okazji poprzedniego projektu. Dzia\u0142a\u0142 on poprawnie, ale szczerze m\u00f3wi\u0105c, nie wygl\u0105da\u0142 zbyt dobrze. Je\u015bli chcieliby\u015bmy zmieni\u0107 w nim wyprowadzenie, do kt\u00f3rego pod\u0142\u0105czana by\u0142a jedna z diod, musieliby\u015bmy r\u0119cznie edytowa\u0107 kilka linijek kodu. W przypadku, gdy program by\u0142by jeszcze bardziej rozbudowany, modyfikacji by\u0142oby jeszcze wi\u0119cej, dlatego, aby u\u0142atwi\u0107 sobie p\u00f3\u017aniejsze zmiany, warto pisa\u0107 kod nieco inaczej. Rozwi\u0105zaniem jest tutaj <strong>detektywa #define<\/strong>. Dzi\u0119ki niej nie b\u0119dziemy musieli ju\u017c korzysta\u0107 we wszystkich funkcjach z numerycznego oznaczenia konkretnego wyprowadzenia. Od teraz GP0 reprezentowane jest jako GREEN_LED, natomiast GP16, do kt\u00f3rego pod\u0142\u0105czony jest przycisk, ma nazw\u0119 SW_PIN. Je\u015bli chcieliby\u015bmy zmieni\u0107 wyprowadzenie, do kt\u00f3rego pod\u0142\u0105czone jest dane peryferie, wystarczy, \u017ce zmienimy numer przy dyrektywie #define.<\/p><p style=\"font-weight: 400\">Pocz\u0105tek g\u0142\u00f3wnej funkcji main jest ju\u017c nam znany, mamy tutaj inicjalizacj\u0119 i ustawienie trybu wykorzystanych wyprowadze\u0144. Zauwa\u017ccie jednak, \u017ce teraz nie musimy ju\u017c stosowa\u0107 ich cyfrowych oznacze\u0144, jest to mo\u017cliwe dzi\u0119ki wspomnianemu wy\u017cej poleceniu #define. Warto zwr\u00f3ci\u0107 te\u017c uwag\u0119 na tryb SW_PIN, jako \u017ce tym razem wyprowadzenie to b\u0119dzie wej\u015bciem dla sygna\u0142u pochodz\u0105cego z przycisku, musimy zastosowa\u0107 opis GPIO_IN. Nowo\u015bci\u0105 w tym fragmencie kodu jest instrukcja gpio_pull_up. Dzi\u0119ki, kt\u00f3rej GP16 zostanie podci\u0105gni\u0119te wewn\u0119trznie do napi\u0119cia zasilania.<\/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-1f8af48 elementor-widget elementor-widget-image\" data-id=\"1f8af48\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"pullup_resistor\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc1MDk2IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvcHVsbHVwX3Jlc2lzdG9yLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"429\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-1024x549.png\" class=\"attachment-large size-large wp-image-75096\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-1024x549.png 1024w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-300x161.png 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-768x412.png 768w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-1536x824.png 1536w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/pullup_resistor-2048x1098.png 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\">Modu\u0142 obs\u0142uguj\u0105cy wyprowadzenia w 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-1cf1155 elementor-widget elementor-widget-text-editor\" data-id=\"1cf1155\" 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\">W sytuacji, gdy wyprowadzenie RP2040 pe\u0142ni rol\u0119 wej\u015bcia sygna\u0142u musimy okre\u015bli\u0107 stan, w jakim b\u0119dzie si\u0119 ono znajdowa\u0107, gdy b\u0119dzie ono po prostu wolne. W momencie, gdy przycisk nie b\u0119dzie wci\u015bni\u0119ty, do <strong>RPI Pico W<\/strong> nie dociera, \u017caden sygna\u0142, wej\u015bcie znajduje si\u0119 tak naprawd\u0119 w stanie nieustalonym. Nie wiemy, co zostanie z niego odczytane i jak zareaguje na to program, dlatego musimy okre\u015bli\u0107 domy\u015blny stan tego pinu. Nasz przycisk zwiera wej\u015bcie do masy, dlatego podci\u0105gniemy je programowo do napi\u0119cia zasilania tak, aby gdy przycisk nie jest wci\u015bni\u0119ty, znajdowa\u0142o si\u0119 ono w stanie wysokim. Do tego s\u0142u\u017cy w\u0142a\u015bnie polecenie gpio_pull_up, gdyby\u015bmy chcieli skorzysta\u0107 z podci\u0105gni\u0119cia w d\u00f3\u0142, do masy, u\u017cyliby\u015bmy polecenia gpio_pull_down.<\/p><p style=\"font-weight: 400\">Ciekawym aspektem podci\u0105gania sygna\u0142\u00f3w do konkretnych stan\u00f3w jest sam spos\u00f3b realizacji tego procesu w mikrokontrolerze. W elektronice s\u0142u\u017c\u0105 do tego <a href=\"https:\/\/homebook.click\/50-rezystory-oporniki\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><strong>rezystory<\/strong><\/a> o odpowiedniej warto\u015bci, jednak we wn\u0119trzu RP2040, jak i innych mikrokontroler\u00f3w stosuje si\u0119 <strong>tranzystory MOS<\/strong>, kt\u00f3rych z\u0142\u0105cze dren-\u017ar\u00f3d\u0142o pe\u0142ni zadanie w\u0142a\u015bnie takiego rezystora.<\/p><p style=\"font-weight: 400\">Wr\u00f3\u0107my jednak do naszego kodu. W niesko\u0144czonej p\u0119tli while, kt\u00f3r\u0105 poznali\u015bcie ostatnio, umieszczone jest tajemnicze polecenie zaczynaj\u0105ce si\u0119 od s\u0142owa kluczowego <strong>bool<\/strong>. Instrukcja ta przypisuje do zmiennej state stan sygna\u0142u SW_PIN. W j\u0119zyku C zmienne wykorzystywane s\u0105 bardzo cz\u0119sto i mo\u017cna okre\u015bli\u0107 jej jako uniwersalne pude\u0142ka na dane, kt\u00f3rymi mog\u0105 by\u0107 stany logiczne, liczby czy te\u017c znaki. To, czym jest dana zmienna, okre\u015bla s\u0142owo kluczowe znajduj\u0105ce si\u0119 przed ni\u0105. W tym przypadku bool to w\u0142a\u015bnie <strong>zmienna<\/strong>, kt\u00f3ra mo\u017ce przyj\u0105\u0107 stan logiczny prawda lub fa\u0142sz. Po powo\u0142aniu zmiennej dzi\u0119ki operatorowi przypisania \u201e=\u201d przyjmuje ona od razu stan odczytany przez funkcj\u0119 gpio_get. Tak wi\u0119c po wykonaniu tej instrukcji w zmiennej state znajduje si\u0119 zapisany stan wyprowadzenia SW_PIN, je\u015bli przycisk by\u0142 wci\u015bni\u0119ty i pin ten by\u0142\u00a0zwarty do masy, to do zmiennej zapisany zostanie fa\u0142sz. W przeciwnym przypadku zmienna przyjmie stan prawda.<\/p><p style=\"font-weight: 400\">Zmiennych, kt\u00f3re mo\u017cemy u\u017cywa\u0107 w kodzie, jest ca\u0142kiem sporo. Wi\u0119kszo\u015b\u0107 z nich odwo\u0142uje si\u0119 do danych liczbowych, ale s\u0105 te\u017c takie, w kt\u00f3rych zapisa\u0107 mo\u017cemy znaki alfanumeryczne i stany logiczne. Cho\u0107 pami\u0119ta\u0107 trzeba, \u017ce z technicznego punktu widzenia dla mikrokontrolera, ka\u017cda zmienna jest tak naprawd\u0119 identycznym ci\u0105giem zer i jedynek. W naszych kodach korzysta\u0107 b\u0119dziemy g\u0142\u00f3wnie ze zmiennych umo\u017cliwiaj\u0105cych zapis liczb ca\u0142kowitych ze znakiem lub bez, do kt\u00f3rych zapisu s\u0142u\u017cy int i uint. Ka\u017cda zmienna mo\u017ce by\u0107 8, 16, 32 lub 64 bitowa, wi\u0119ksza liczba bit\u00f3w to wi\u0119kszy zakres liczb, kt\u00f3ry zmienna obejmuje. Ale wi\u0119cej bit\u00f3w to te\u017c wi\u0119cej miejsca w pami\u0119ci, a ta jest ograniczona, dlatego warto wybiera\u0107 w miar\u0119 mo\u017cliwo\u015bci jak najmniejsze zmienne.<\/p><ul><li>int8_t \u2013 8 bitowa zmienna ca\u0142kowita (-128, +127),<\/li><li>int16_t \u2013 16 bitowa zmienna ca\u0142kowita (-16384, 16383),<\/li><li>int32_t \u2013 32 bitowa zmienna ca\u0142kowita (-2^31, 2^31-1),<\/li><li>int64_t \u2013 64 bitowa zmienna ca\u0142kowita (-2^63, 2^63-1),<\/li><li>uint8_t \u2013 8 bitowa zmienna ca\u0142kowita bez znaku (0, 255),<\/li><li>uint16_t \u2013 16 bitowa zmienna ca\u0142kowita bez znaku (0,65535),<\/li><li>uint32_t \u2013 32 bitowa zmienna ca\u0142kowita bez znaku (0, 2^32-1),<\/li><li>uint64_t \u2013 64 bitowa zmienna ca\u0142kowita bez znaku (0, 2^64-1).<\/li><\/ul><p style=\"font-weight: 400\">Poza zmiennymi dla liczb ca\u0142kowitych wyr\u00f3\u017cni\u0107 mo\u017cemy te\u017c poznany ju\u017c wcze\u015bniej bool, char, w kt\u00f3rym zapisywane s\u0105 znaki oraz typy stosowane do przechowywania liczb zmiennoprzecinkowych \u2013 float i double.<\/p><ul><li>bool \u2013 8 bitowa zmienna dla stan\u00f3w logicznych (prawda albo fa\u0142sz),<\/li><li>char \u2013 8 bitowa zmienna dla znak\u00f3w (-128, +127),<\/li><li>float \u2013 32 bitowa zmienna dla liczb zmiennoprzecinkowych (2^-38, 2^38-1),<\/li><li>double \u2013 64 bitowa zmienna dla liczb zmiennoprzecinkowych (2^-308, 2^308-1).<\/li><\/ul>\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-44f67b1 elementor-widget elementor-widget-code-highlight\" data-id=\"44f67b1\" 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>if (state == true)\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n        }\r\nelse\r\n        {\r\n            gpio_put(GREEN_LED, 0);\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-2049bc9 elementor-widget elementor-widget-text-editor\" data-id=\"2049bc9\" 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\">Przeanalizujmy teraz istot\u0119 wrzuconego wy\u017cej kodu, czyli <strong>instrukcj\u0119 warunkow\u0105\u00a0if<\/strong>. Jak ju\u017c wspomnia\u0142em, dzi\u0119ki niej mo\u017cliwe jest wykonanie tylko konkretnej cz\u0119\u015bci kodu, zale\u017cnie od sytuacji. W tym wypadku\u00a0if\u00a0zale\u017cy od stanu zmiennej state. Por\u00f3wnywana jest ona dzi\u0119ki operatorowi \u201e==\u201d ze stanem logicznym\u00a0true. Je\u015bli zmienna ma w\u0142a\u015bnie taki stan, wykonane zostanie polecenie umieszczone wewn\u0105trz nawias\u00f3w klamrowych, czyli zielona dioda LED zostanie uruchomiona. W przeciwnym razie, czyli gdy state b\u0119dzie mie\u0107 warto\u015b\u0107\u00a0false, wykonany zostanie kod umieszczony w nawiasie po s\u0142owie kluczowym\u00a0else. W takiej sytuacji pin przypisany do\u00a0GREEN_LED wprowadzony zostanie w stan niski. W ten w\u0142a\u015bnie spos\u00f3b skonstruowa\u0107 mo\u017cemy najprostszy warunek w kodzie. Je\u015bli warunek opisany przy poleceniu\u00a0if, jakikolwiek by on nie by\u0142, jest prawdziwy,\u00a0wykonany zostanie kod z wn\u0119trza tej instrukcji. W ka\u017cdym innym przypadku\u00a0mikrokontroler\u00a0wykona kod zapisany po s\u0142owie kluczowym\u00a0else.<\/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-827e7a1 elementor-widget elementor-widget-code-highlight\" data-id=\"827e7a1\" 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>if (state == true)\r\n        {\r\n            gpio_put(GREEN_LED, 1);\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-c4e8f0a elementor-widget elementor-widget-text-editor\" data-id=\"c4e8f0a\" 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\">Warto wiedzie\u0107, \u017ce w instrukcjach warunkowych cz\u0119\u015b\u0107 else nie jest obowi\u0105zkowa. Kod mo\u017ce jak najbardziej sk\u0142ada\u0107 si\u0119 tylko z pojedynczego ifa, w kt\u00f3rym sprawdzamy jaki\u015b warunek, ale inne przypadki nas nie interesuj\u0105. Jednak w przyk\u0142adowym kodzie taka sytuacja jest niepo\u017c\u0105dana. Chcemy, aby kod reagowa\u0142 na oba stany przycisku, dlatego opisa\u0107 musimy oba przypadki. Oczywi\u015bcie wewn\u0105trz funkcji warunkowych mo\u017cna umieszcza\u0107 kolejne warunki, czy nawet p\u0119tle, kt\u00f3re poznacie w dalszej cz\u0119\u015bci materia\u0142u.<\/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-45ff15f elementor-widget elementor-widget-video\" data-id=\"45ff15f\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/if.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-2830d08 elementor-widget elementor-widget-text-editor\" data-id=\"2830d08\" 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\">Gdy wiemy ju\u017c, jak opisany wy\u017cej kod dzia\u0142a, mo\u017cemy przej\u015b\u0107 do jego <strong>uruchomienia<\/strong>. Po wrzuceniu do pami\u0119ci Flash pliku z rozszerzeniem .uf2 powinni\u015bcie uzyska\u0107 efekt podobny jak na filmiku. Dioda LED ca\u0142y czas \u015bwieci i ga\u015bnie dopiero po wci\u015bni\u0119ciu przycisku. Mo\u017ce si\u0119 to wydawa\u0107 nieco nieintuicyjne, ale program dzia\u0142a poprawnie. Chcieli\u015bmy, aby stan z GP16 by\u0142 niejako przekazywany na diod\u0119 LED i tak si\u0119 w\u0142a\u015bnie dzieje. Gdy przycisk nie jest wci\u015bni\u0119ty, wej\u015bcie RP2040 jest wolne i dzi\u0119ki programowemu podci\u0105gni\u0119ciu do stanu wysokiego w\u0142a\u015bnie taki stan odczytywany jest przez program. Gdy wci\u015bniemy przycisk, zwieramy wej\u015bcie do masy, tym samym wprowadzaj\u0105c zmienn\u0105 state w stan false i w\u00f3wczas dioda LED nie \u015bwieci.<\/p><p style=\"font-weight: 400\">Mo\u017cecie spr\u00f3bowa\u0107 odwr\u00f3ci\u0107 dzia\u0142anie programu, tak aby dioda uruchamiana by\u0142a, gdy przycisk b\u0119dzie wci\u015bni\u0119ty. Podpowiem tylko, \u017ce mo\u017cna to zrobi\u0107 na dwa sposoby, zmieniaj\u0105c kod wewn\u0105trz instrukcji if i else lub zmieniaj\u0105c sam warunek, na kt\u00f3ry if reaguje.<\/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-b222cbc elementor-widget elementor-widget-heading\" data-id=\"b222cbc\" 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\">P\u0119tle while i do while<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5345c2 elementor-widget elementor-widget-code-highlight\" data-id=\"f5345c2\" 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 GREEN_LED 0 \/\/assigning names to specific values\r\n#define SW_PIN 16\r\n#define TIME 500\r\n\r\nint main() {\r\n    gpio_init(SW_PIN); \/\/initialization and setting of pin mode\r\n    gpio_init(GREEN_LED);\r\n\r\n    gpio_set_dir(SW_PIN, GPIO_IN);\r\n    gpio_set_dir(GREEN_LED, GPIO_OUT);\r\n    \r\n    gpio_pull_up(SW_PIN); \/\/SW_PIN pull-up to power supply\r\n    sleep_us(100); \/\/stabilization of SW_PIN state\r\n\r\n    while (true) {\r\n        bool state = gpio_get(SW_PIN); \/\/SW_PIN value reading\r\n\r\n        gpio_put(GREEN_LED, 0); \/\/GP0 defaults to zero\r\n\r\n        while (state == false) \/\/while loop with condition\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n            sleep_ms(TIME);\r\n            gpio_put(GREEN_LED, 0);\r\n            sleep_ms(TIME);\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-afc5475 elementor-widget elementor-widget-text-editor\" data-id=\"afc5475\" 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\">W drugim przyk\u0142adzie przyjrzyjmy si\u0119 <strong>p\u0119tli while oraz do while<\/strong>. Tym razem jednak b\u0119d\u0105 one zale\u017cne od pewnego warunku. B\u0119dziemy chcieli, aby kod umieszczony wewn\u0105trz p\u0119tli wykona\u0142 si\u0119 dopiero po wci\u015bni\u0119ciu przycisku, innymi s\u0142owy mikrokontroler b\u0119dzie czeka\u0107 na sygna\u0142 zewn\u0119trzny i dopiero po jego otrzymaniu uruchomiony zostanie kod z p\u0119tli.<\/p>\n<p style=\"font-weight: 400\">Kod programu jest niezwykle podobny do przyk\u0142adu z instrukcj\u0105 warunkow\u0105, ale nie oby\u0142o si\u0119 bez pewnych zmian. Pierwsz\u0105 z nich jest dodanie kolejnej sta\u0142ej <strong>TIME,<\/strong> kt\u00f3rej warto\u015b\u0107 to 500. U\u017cyjemy jej w dalszej cz\u0119\u015bci jako argument funkcji sleep_ms, tak aby nie wypisywa\u0107 za ka\u017cdym razem tej warto\u015bci. Drug\u0105 zmian\u0105 jest dodanie polecenia <strong>sleep_us(100)<\/strong> przed wej\u015bciem do niesko\u0144czonej p\u0119tli while, znaczenie tej instrukcji wyt\u0142umacz\u0119 p\u00f3\u017aniej.<\/p>\n<p style=\"font-weight: 400\">W g\u0142\u00f3wnej cz\u0119\u015bci programu odczytujemy stan SW_PIN oraz wygaszamy diod\u0119 LED, tak aby zawsze przed uruchomieniem umieszczonej dalej p\u0119tli, pin GP0 mia\u0142 stan niski. Kolejna p\u0119tla while zale\u017cna jest od stanu zmiennej state, tutaj r\u00f3wnie\u017c por\u00f3wnujemy j\u0105 z zerem. Je\u015bli warunek b\u0119dzie spe\u0142niony, wykonany zostanie kod umieszczony w nawiasie klamrowym, kt\u00f3ry realizuje proste zadanie, jakim jest mruganie diod\u0105. Co wa\u017cne po pierwszym wykonaniu kodu z p\u0119tli program wraca na jej pocz\u0105tek i sprawdza warunku ponownie. Tak wi\u0119c, je\u015bli w trakcie wykonywania programu z wn\u0119trza while zmieni si\u0119 warto\u015b\u0107 state, p\u0119tla nie wykona si\u0119 ponownie. Trzeba pami\u0119ta\u0107 tutaj, \u017ce zmieni\u0107 musi si\u0119 warto\u015b\u0107 zmiennej, a nie stan wej\u015bcia SW_PIN, p\u00f3ki nie odczytamy go ponownie, warto\u015b\u0107 zmiennej pozostaje bez zmian.<\/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-1cfddad elementor-widget elementor-widget-video\" data-id=\"1cfddad\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/while.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-9d102e4 elementor-widget elementor-widget-text-editor\" data-id=\"9d102e4\" 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\">Po uruchomieniu programu powinni\u015bcie zauwa\u017cy\u0107 efekt identyczny jak na filmie. Po wci\u015bni\u0119ciu przycisku dioda zaczyna synchronicznie w\u0142\u0105cza\u0107 si\u0119 i wy\u0142\u0105cza\u0107.<\/p><p style=\"font-weight: 400\">Wyja\u015bnieniu wymaga te\u017c wspomniana wcze\u015bniej funkcja sleep_us, kt\u00f3ra wstrzymuje dzia\u0142anie programu na 100\u03bcs przed uruchomieniem g\u0142\u00f3wnej, niesko\u0144czonej p\u0119tli while. Jej zadaniem jest w\u0142a\u015bnie wstrzyma\u0107 program do momentu, a\u017c stan wyprowadzenia, do kt\u00f3rego pod\u0142\u0105czony jest przycisk, nie b\u0119dzie stabilny. Mo\u017cecie spr\u00f3bowa\u0107 zakomentowa\u0107 to polecenie, stosuj\u0105c \u201e\/\/\u201d i uruchomi\u0107 program. W\u00f3wczas mo\u017ce si\u0119 zdarzy\u0107, \u017ce po pod\u0142\u0105czeniu przewodu USB, dioda LED zacznie od razu mruga\u0107, czyli zmienna state przyj\u0119\u0142a od razu warto\u015b\u0107 fa\u0142sz, mimo \u017ce przycisk nie by\u0142 wci\u015bni\u0119ty. Dzieje si\u0119 tak, poniewa\u017c program realizowany jest tak szybko, \u017ce czas mi\u0119dzy odczytaniem stanu SW_PIN a jego podci\u0105gni\u0119ciem do stanu wysokiego jest zbyt ma\u0142y. Dlatego musimy chwil\u0119 odczeka\u0107, a\u017c sygna\u0142 na GP16 b\u0119dzie stabilny.<\/p><p style=\"font-weight: 400\">By\u0107 mo\u017ce zastanawiacie si\u0119, czy jest mo\u017cliwo\u015b\u0107 wydostania si\u0119 z tej p\u0119tli, czy dioda LED mo\u017ce mrugn\u0105\u0107 tylko raz i wr\u00f3ci\u0107 do stanu zero. Oczywi\u015bcie jest taka mo\u017cliwo\u015b\u0107 i mo\u017cemy zrobi\u0107 to na dwa sposoby.<\/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-303c559 elementor-widget elementor-widget-code-highlight\" data-id=\"303c559\" 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>while (state == false) \/\/while loop with condition\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n            sleep_ms(TIME);\r\n            gpio_put(GREEN_LED, 0);\r\n            sleep_ms(TIME);\r\n            state = true;\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-731879d elementor-widget elementor-widget-text-editor\" data-id=\"731879d\" 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\">Tak jak wspomina\u0142em, warunek p\u0119tli sprawdzany jest za ka\u017cdym razem po wykonaniu umieszczonego w niej kodu. Do tej pory mogli\u015bmy pu\u015bci\u0107 przycisk, ale warto\u015b\u0107 state pozostawa\u0142a bez zmian, poniewa\u017c p\u0119tla nigdy nie pozwala\u0142 wykona\u0107 kodu spoza niej. Razu ustawiona zmienna spowodowa\u0142a zap\u0119tlenie programu. W zwi\u0105zku z tym mo\u017cemy spr\u00f3bowa\u0107 wydosta\u0107 si\u0119 z p\u0119tli zmieniaj\u0105c warto\u015b\u0107 state w jej wn\u0119trzu i tak\u0105 w\u0142a\u015bnie instrukcj\u0119 umie\u015bci\u0142em w tym przyk\u0142adzie. Ustawia ona state na true i gdy p\u0119tla wraca na sw\u00f3j pocz\u0105tek, warunek nie jest ju\u017c spe\u0142niony i tym samym wracamy do g\u0142\u00f3wnej niesko\u0144czonej p\u0119tli while, a program czeka na ponowne wci\u015bni\u0119cie przycisku.<\/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-4555e57 elementor-widget elementor-widget-code-highlight\" data-id=\"4555e57\" 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>while (state == false) \/\/while loop with condition\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n            sleep_ms(TIME);\r\n            gpio_put(GREEN_LED, 0);\r\n            sleep_ms(TIME);\r\n            break;\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-52322d6 elementor-widget elementor-widget-text-editor\" data-id=\"52322d6\" 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\">Zamiast zmienia\u0107 warto\u015b\u0107 zmiennej, mo\u017cna zastosowa\u0107 te\u017c funkcj\u0119 break, kt\u00f3rej przeznaczeniem jest w\u0142a\u015bnie przerywa\u0107 aktualnie wykonywany kod. Po jej napotkaniu mikrokontroler natychmiast przerwie wykonywanie p\u0119tli i wr\u00f3ci do g\u0142\u00f3wnej funkcji main, niezale\u017cnie od warto\u015bci zmiennej state. Przy okazji instrukcji break wspomnie\u0107 warto te\u017c o poleceniu continue, kt\u00f3re pozwala wr\u00f3ci\u0107 do pocz\u0105tku p\u0119tli. Innymi s\u0142owy, je\u015bli umie\u015bciliby\u015bmy j\u0105 tu\u017c za gpio_put(GREEN_LED, 1); program zap\u0119tli\u0142by si\u0119 na tej funkcji, ca\u0142y czas uruchamiaj\u0105c i tak ju\u017c dzia\u0142aj\u0105c\u0105 diod\u0119 LED.<\/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-b97969e elementor-widget elementor-widget-code-highlight\" data-id=\"b97969e\" 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>do {\r\n    gpio_put(GREEN_LED, 1);\r\n    sleep_ms(TIME);\r\n    gpio_put(GREEN_LED, 0);\r\n    sleep_ms(TIME);\r\n        } while (state == false);\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-0e821a0 elementor-widget elementor-widget-text-editor\" data-id=\"0e821a0\" 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\">W j\u0119zyku C skorzysta\u0107 mo\u017cemy te\u017c z p\u0119tli do while, jest ona podobna do poznanego ju\u017c wcze\u015bniej while z t\u0105 r\u00f3\u017cnic\u0105, \u017ce tutaj warunek p\u0119tli umieszczony jest na ko\u0144cu. Dzi\u0119ki temu mikrokontroler zawsze wykona, przynajmniej raz kod zapisany wewn\u0105trz p\u0119tli. Dopiero po jego zrealizowaniu sprawdzony zostanie warunek, je\u015bli b\u0119dzie on spe\u0142niony, p\u0119tla wykona si\u0119 ponownie, je\u015bli nie program b\u0119dzie realizowany dalej. Zwr\u00f3\u0107cie uwag\u0119, \u017ce w przypadku konstrukcji do while na ko\u0144cu warunku umieszczony jest \u015brednik, dzi\u0119ki niemu kompilator wie, gdzie znajduje si\u0119 koniec tego polecenia. W sytuacji, gdy warunek umieszczony by\u0142 na pocz\u0105tku, znak ten by\u0142\u00a0zb\u0119dny, poniewa\u017c tu\u017c za nim kompilator napotyka\u0142 otwarcie nawiasu klamrowego, kt\u00f3re by\u0142o w\u0142a\u015bnie informacj\u0105 o ko\u0144cu zapisu i otwarciu bloku kodu, b\u0119d\u0105cego cz\u0119\u015bci\u0105 p\u0119tli.<\/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-7885504 elementor-widget elementor-widget-heading\" data-id=\"7885504\" 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\">P\u0119tla for<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cdbd23 elementor-widget elementor-widget-code-highlight\" data-id=\"6cdbd23\" 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 GREEN_LED 0 \/\/assigning names to specific values\r\n#define TIME 500\r\n\r\nint main() {\r\n    gpio_init(GREEN_LED); \/\/initialization and setting of pin mode\r\n\r\n    gpio_set_dir(GREEN_LED, GPIO_OUT);\r\n            \r\n        for (uint8_t i = 0; i &lt; 10; i++) \/\/for loop\r\n        {\r\n            gpio_put(GREEN_LED, 1);\r\n            sleep_ms(TIME);\r\n            gpio_put(GREEN_LED, 0);\r\n            sleep_ms(TIME);\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-a646bc4 elementor-widget elementor-widget-text-editor\" data-id=\"a646bc4\" 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\">Ostatni\u0105 p\u0119tl\u0105, kt\u00f3r\u0105 chcia\u0142bym wam dzi\u015b pokaza\u0107, b\u0119dzie <strong>for<\/strong>. Program, kt\u00f3ry uruchomimy,\u00a0jest do\u015b\u0107 podobny do wcze\u015bniejszych przyk\u0142ad\u00f3w.\u00a0Inicjalizujemy\u00a0pojedyncze wej\u015bcie dla diody zielonej diody LED, kt\u00f3ra b\u0119dzie mruga\u0107, dzi\u0119ki p\u0119tli for okre\u015blon\u0105 przez nas ilo\u015b\u0107 razy.<\/p><p style=\"font-weight: 400\">Struktura funkcji for w por\u00f3wnaniu do poprzednich p\u0119tli jest nieco inna. Wn\u0119trze nawiasu podzieli\u0107 mo\u017cemy na trzy cz\u0119\u015bci, oddzielone mi\u0119dzy sob\u0105 \u015brednikami. Na pocz\u0105tku musimy zadeklarowa\u0107 zmienn\u0105, kt\u00f3ra pozwoli sterowa\u0107 p\u0119tl\u0105, w tym przypadku b\u0119dzie to uint8_t,\u00a0 o nazwie \u201ei\u201d i warto\u015bci pocz\u0105tkowej zero. Powszechnie przyj\u0119t\u0105 regu\u0142\u0105 jest stosowanie w p\u0119tlach for zmiennych o nazwie \u201ei\u201d oraz \u201ej\u201d. Dalej umieszczony zosta\u0142 warunek, decyduj\u0105cy, czy p\u0119tla mo\u017ce by\u0107 dalej wykonywana. W przyk\u0142adzie jest to sprawdzenie, czy \u201ei\u201d jest mniejsze od dziesi\u0119ciu. Do tej pory poznali\u015bmy tylko jeden z operator\u00f3w pozwalaj\u0105cych por\u00f3wna\u0107 zmienn\u0105 z inn\u0105 warto\u015bci\u0105. By\u0142o to \u201e==\u201d, ale poza sprawdzeniem, czy cos jest takie samo, mo\u017cemy sprawdzi\u0107 te\u017c, czy jest mniejsze (&lt;), wi\u0119ksze (&gt;), mniejsze lub r\u00f3wne (&lt;=) oraz wi\u0119ksze lub r\u00f3wne (&gt;=). Na ko\u0144cu umieszczone zosta\u0142o tajemnicze <strong>i++<\/strong>, jest to ekwiwalent zapisu i+1. Oznacza to, \u017ce po ka\u017cdym wykonaniu p\u0119tli warto\u015b\u0107 zmiennej \u201ei\u201d zostanie zwi\u0119kszona o jeden. Nic nie stoi na przeszkodzie, aby w tym miejscu umieszcza\u0107 dowolne operacj\u0119, mo\u017cna zwi\u0119ksza\u0107 warto\u015b\u0107 \u201ei\u201d o 4 \u2013 i+4, czy te\u017c zmniejsza\u0107 o jeden. W\u00f3wczas zastosowa\u0107 mo\u017cna analogiczny do poprzedniego zapis i&#8211;.<\/p><p style=\"font-weight: 400\">Sp\u00f3jrzmy teraz na p\u0119tle jako ca\u0142o\u015b\u0107. Gdy program do niej dotrze, utworzona zostanie zmienna \u201ei\u201d o warto\u015bci zero i sprawdzony zostanie warunek, czy jest ona mniejsza ni\u017c 10. Jest on prawdziwy, dlatego kod z wn\u0119trza p\u0119tli zostanie wykonany, czyli dioda zostanie uruchomiona na p\u00f3\u0142 sekundy. Po tej operacji wracamy na pocz\u0105tek p\u0119tli i zwi\u0119kszamy warto\u015b\u0107 \u201ei\u201d o jeden. Nadal jest to mniej ni\u017c 10 dlatego dioda LED po raz drugi za\u015bwieci. Program b\u0119dzie tak d\u0142ugo uruchamia\u0107 i gasi\u0107 diod\u0119, a\u017c warto\u015b\u0107 \u201ei\u201d osi\u0105gnie 10, w\u00f3wczas warunek nie zostanie spe\u0142niony i program opu\u015bci p\u0119tl\u0119.<\/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-c7ecadb elementor-widget elementor-widget-video\" data-id=\"c7ecadb\" 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:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/for.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-b604856 elementor-widget elementor-widget-text-editor\" data-id=\"b604856\" 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\">Po uruchomieniu kodu powinni\u015bcie zobaczy\u0107 efekt taki jak na filmie, cykl mrugania diody LED wykonany zostanie dziesi\u0119\u0107 razy, po czym program sko\u0144czy swoje dzia\u0142anie.\u00a0<\/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-27c49ac elementor-widget elementor-widget-heading\" data-id=\"27c49ac\" 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\">Jak radzi\u0107 sobie z problemami?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0de30d4 elementor-widget elementor-widget-image\" data-id=\"0de30d4\" 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=\"800\" height=\"514\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-srednika.png\" class=\"attachment-large size-large wp-image-75112\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-srednika.png 800w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-srednika-300x193.png 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-srednika-768x493.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Komunikat b\u0142\u0119du przy braku \u015brednika.<\/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-bcca36b elementor-widget elementor-widget-text-editor\" data-id=\"bcca36b\" 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\">Chcia\u0142bym w tym artykule poruszy\u0107 jeszcze jeden temat, <strong>czyli rozwi\u0105zywanie problem\u00f3w<\/strong>. Dla do\u015bwiadczonych programist\u00f3w mo\u017ce si\u0119 to wydawa\u0107 b\u0142ahostk\u0105, ale ogromna ilo\u015b\u0107 temat\u00f3w na forach typu \u201enie dzia\u0142a, pom\u00f3\u017ccie\u201d jest wed\u0142ug mnie wystarczaj\u0105cym argumentem, aby poruszy\u0107 ten temat.<\/p><p style=\"font-weight: 400\">Oczywiste jest, \u017ce pisz\u0105c kod, mog\u0105 pojawi\u0107 si\u0119 b\u0142\u0119dy. Jedn\u0105 z cz\u0119stych sytuacji, kt\u00f3r\u0105 mo\u017cna powo\u0142a\u0107 tutaj za przyk\u0142ad, jest <strong>brak \u015brednika na ko\u0144cu funkcji<\/strong>. Program, w kt\u00f3rym pojawi\u0142 si\u0119 tego typu b\u0142\u0105d, nie mo\u017ce by\u0107 skompilowany, innymi s\u0142owy nie b\u0119dzie on dzia\u0142a\u0107. W przypadku tego, jak i wielu innych b\u0142\u0119d\u00f3w zajrze\u0107 warto do sekcji PROBLEMS, w kt\u00f3rej \u015brodowisko programistyczne, zazwyczaj do\u015b\u0107 trafnie poinformuje nas, co jest nie tak. Taki przyk\u0142ad mo\u017cecie zobaczy\u0107 na obrazku powy\u017cej. Usun\u0105\u0142em \u015brednik przy pierwszej instrukcji sleep_ms i po zapisaniu kodu, w sekcji problems widoczny jest pojedynczy b\u0142\u0105d. Przyjrzyjmy si\u0119 mu dok\u0142adnie \u2013 <strong>expected a \u2018;\u2019 C\/C++(65) [Ln 15, Col 13]<\/strong>. Program wprost informuje nas, \u017ce w kodzie prawdopodobnie brakuje \u015brednika i aby problemu szuka\u0107 w 15 linii kod, poniewa\u017c to w\u0142a\u015bnie tam wykryty zosta\u0142 b\u0142\u0105d. Gdy zajrzymy w to miejsce, to rzeczywi\u015bcie zauwa\u017cymy, \u017ce lini\u0119 wy\u017cej brakuje \u015brednika, a program analizuj\u0105c kod, nie zauwa\u017cy\u0142 w tym miejscu ko\u0144ca instrukcji.<\/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-34a3cef elementor-widget elementor-widget-image\" data-id=\"34a3cef\" 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=\"800\" height=\"519\" src=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-deklaracji-zmiennej.png\" class=\"attachment-large size-large wp-image-75116\" alt=\"\" srcset=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-deklaracji-zmiennej.png 818w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-deklaracji-zmiennej-300x195.png 300w, https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/brak-deklaracji-zmiennej-768x499.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Komunikat b\u0142\u0119du przy braku deklaracji zmiennej.<\/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-0c9fd42 elementor-widget elementor-widget-text-editor\" data-id=\"0c9fd42\" 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\">Podobnym przyk\u0142adem do braku \u015brednika, jest te\u017c <strong>nieznana dla VSC zmienna<\/strong>. Je\u015bli usuniemy uint8_t z nawiasu p\u0119tli for, program zg\u0142osi nam, \u017ce zmienna \u201ei\u201d jest dla niego nieznana, co mo\u017ce sugerowa\u0107, \u017ce nie zosta\u0142a ona odpowiednio zadeklarowana. Ka\u017cda zmienna musi mie\u0107 jaki\u015b typ, dlatego \u015brodowisko trafnie okre\u015bli\u0142o, \u017ce b\u0142\u0105d pojawi\u0142 si\u0119 w linii 11 i to w\u0142a\u015bnie tam powinni\u015bmy szuka\u0107 przyczyny problem\u00f3w.\u00a0 \u00a0\u00a0\u00a0<\/p><p style=\"font-weight: 400\">Sztuka programowania to tak naprawd\u0119 sztuka rozwi\u0105zywania b\u0142\u0119d\u00f3w, gdy pozna si\u0119 podstawy na tyle, aby zacz\u0105\u0107 pisa\u0107 w\u0142a\u015bnie kody co rusz napotyka si\u0119 r\u00f3\u017cne b\u0142\u0119dy i problemy. Nie wspominaj\u0105c ju\u017c, \u017ce w profesjonalnym programowaniu, wi\u0119ksza cz\u0119\u015b\u0107 czasu to r\u00f3wnie\u017c debugowanie i szukanie optymalnych rozwi\u0105za\u0144. Dlatego zawsze warto jest sprawdza\u0107 kod b\u0142\u0119du, kt\u00f3ry pojawia si\u0119 w \u015brodowisku programistycznym, informacje tam zawarte s\u0105 zazwyczaj trafne i nawet je\u015bli nie informuj\u0105 wprost, gdzie le\u017cy b\u0142\u0105d to nic nie stoi na przeszkodzie, aby komunikat wrzuci\u0107 w wyszukiwark\u0119. Najcz\u0119\u015bciej ju\u017c kilka pierwszych stron w internecie przyniesie poprawne rozwi\u0105zanie. Szukanie informacji i rozwi\u0105zywanie problem\u00f3w na ich podstawie to w mojej opinie jedna z najwa\u017cniejszych czynno\u015bci, na kt\u00f3rych opiera si\u0119 programowanie. Poza tym pami\u0119ta\u0107 trzeba te\u017c o forach, kt\u00f3re skupiaj\u0105 spo\u0142eczno\u015b\u0107 entuzjast\u00f3w kodu. Je\u015bli co\u015b nie dzia\u0142a i nie ma si\u0119 pomys\u0142u na rozwi\u0105zanie, mo\u017cna zadawa\u0107 pytanie w\u0142a\u015bnie w takich miejscach. Przy czym powinny by\u0107 one jak najbardziej szczeg\u00f3\u0142owe, opisujcie, co chcecie zrobi\u0107, wrzucajcie kod i informujcie, jak pr\u00f3bowali\u015bcie rozwi\u0105za\u0107 problem.<\/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-e7ac8a2 elementor-widget elementor-widget-heading\" data-id=\"e7ac8a2\" 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\">Kilka s\u0142\u00f3w na koniec\u2026<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-86df717 elementor-widget elementor-widget-text-editor\" data-id=\"86df717\" 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\">W dzisiejszym materiale poznali\u015bcie co\u015b takiego jak <strong>zmienne<\/strong>, <strong>instrukcje warunkowe<\/strong>, a tak\u017ce uruchomili\u015bmy<strong> trzy rodzaje p\u0119tli<\/strong> spotykanych <strong>w j\u0119zyku C<\/strong>. Poza tym opowiedzia\u0142em wam nieco o <strong>b\u0142\u0119dach<\/strong>, zwracaj\u0105c uwag\u0119, \u017ce programowanie to w du\u017cej mierze rozwi\u0105zywanie problem\u00f3w, gdzie niezwykle przydatn\u0105 umiej\u0119tno\u015bci\u0105 jest szukanie informacji na w\u0142asn\u0105 r\u0119k\u0119. W kolejnym artykule przyjrzymy si\u0119 bli\u017cej pewnym funkcjonalno\u015bci\u0105 mikrokontrolera, ukrytym pod terminami <strong>PWM i ADC<\/strong>, a tak\u017ce spr\u00f3bujemy nawi\u0105za\u0107 komunikacj\u0119 z komputerem.<\/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-8661f6f elementor-widget elementor-widget-spacer\" data-id=\"8661f6f\" 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-52dd2f1 elementor-widget elementor-widget-text-editor\" data-id=\"52dd2f1\" 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>\u0179r\u00f3d\u0142a:<\/p><ul><li>https:\/\/datasheets.raspberrypi.com\/rp2040\/rp2040-datasheet.pdf<\/li><li>https:\/\/datasheets.raspberrypi.com\/picow\/pico-w-datasheet.pdf<\/li><li>https:\/\/www.raspberrypi.com\/products\/rp2040\/<\/li><li>https:\/\/www.raspberrypi.com\/documentation\/microcontrollers\/raspberry-pi-pico.html<\/li><\/ul>\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>Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.<\/p>\n","protected":false},"author":34,"featured_media":75196,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-75086","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.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland<\/title>\n<meta name=\"description\" content=\"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland\" \/>\n<meta property=\"og:description\" content=\"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/\" \/>\n<meta property=\"og:site_name\" content=\"Botland\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/Botland\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-29T13:00:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T09:01:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.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=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 Bartoszak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Kurs Raspberry Pi Pico &#8211; #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe\",\"datePublished\":\"2024-01-29T13:00:26+00:00\",\"dateModified\":\"2026-04-08T09:01:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/\"},\"wordCount\":4160,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-4.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/\",\"url\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/\",\"name\":\"Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-4.png\",\"datePublished\":\"2024-01-29T13:00:26+00:00\",\"dateModified\":\"2026-04-08T09:01:23+00:00\",\"description\":\"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#primaryimage\",\"url\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-4.png\",\"contentUrl\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/1-4.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/homebook.click\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kurs Raspberry Pi&nbsp;Pico &#8211; #5 \u2013 P\u0119tle, zmienne i&nbsp;instrukcje warunkowe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/\",\"name\":\"Botland\",\"description\":\"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland\",\"publisher\":{\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botland.store\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#organization\",\"name\":\"Botland\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.store\\\/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.store\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/Botland\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/botland.store\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\",\"name\":\"Rafa\u0142 Bartoszak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"url\":\"https:\\\/\\\/homebook.click\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"contentUrl\":\"https:\\\/\\\/homebook.click\\\/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:\\\/\\\/homebook.click\\\/blog\\\/author\\\/rafal-bartoszak\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland","description":"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.","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:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/","og_locale":"pl_PL","og_type":"article","og_title":"Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland","og_description":"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.","og_url":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-01-29T13:00:26+00:00","article_modified_time":"2026-04-08T09:01:23+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Rafa\u0142 Bartoszak","Szacowany czas czytania":"22 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#article","isPartOf":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.store\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Kurs Raspberry Pi Pico &#8211; #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe","datePublished":"2024-01-29T13:00:26+00:00","dateModified":"2026-04-08T09:01:23+00:00","mainEntityOfPage":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/"},"wordCount":4160,"publisher":{"@id":"https:\/\/botland.store\/blog\/#organization"},"image":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#primaryimage"},"thumbnailUrl":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/","url":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/","name":"Kurs Raspberry Pi Pico - #5 \u2013 P\u0119tle, zmienne i instrukcje warunkowe - Botland","isPartOf":{"@id":"https:\/\/botland.store\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#primaryimage"},"image":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#primaryimage"},"thumbnailUrl":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.png","datePublished":"2024-01-29T13:00:26+00:00","dateModified":"2026-04-08T09:01:23+00:00","description":"Artyku\u0142 opisuje teoretyczne zagadnienia zwi\u0105zane z j\u0119zykiem C. Poznacie kolejne rodzaje p\u0119tli, instrukcje warunkowe oraz zmienne. Wszystkie programistyczne konstrukcje uruchomione zostan\u0105 w rzeczywisto\u015bci.","breadcrumb":{"@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#primaryimage","url":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.png","contentUrl":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2024\/01\/1-4.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/homebook.click\/blog\/raspberry-pi-pico-5-petle-zmienne-i-instrukcje-warunkowe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/homebook.click\/blog\/"},{"@type":"ListItem","position":2,"name":"Kurs Raspberry Pi&nbsp;Pico &#8211; #5 \u2013 P\u0119tle, zmienne i&nbsp;instrukcje warunkowe"}]},{"@type":"WebSite","@id":"https:\/\/botland.store\/blog\/#website","url":"https:\/\/botland.store\/blog\/","name":"Botland","description":"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland","publisher":{"@id":"https:\/\/botland.store\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botland.store\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/botland.store\/blog\/#organization","name":"Botland","url":"https:\/\/botland.store\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.store\/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.store\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/Botland\/"]},{"@type":"Person","@id":"https:\/\/botland.store\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215","name":"Rafa\u0142 Bartoszak","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","url":"https:\/\/homebook.click\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","contentUrl":"https:\/\/homebook.click\/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:\/\/homebook.click\/blog\/author\/rafal-bartoszak\/"}]}},"_links":{"self":[{"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/posts\/75086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/comments?post=75086"}],"version-history":[{"count":0,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/posts\/75086\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/media\/75196"}],"wp:attachment":[{"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/media?parent=75086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/categories?post=75086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/homebook.click\/blog\/wp-json\/wp\/v2\/tags?post=75086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}