{"id":78858,"date":"2024-04-29T13:08:53","date_gmt":"2024-04-29T11:08:53","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/?p=78858"},"modified":"2026-04-08T10:58:20","modified_gmt":"2026-04-08T08:58:20","slug":"kurs-raspberry-pi-pico-8-przerwania-i-alarmy","status":"publish","type":"post","link":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/","title":{"rendered":"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy"},"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\"> 9<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"78858\" class=\"elementor elementor-78858\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-788e25c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"788e25c\" 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-ad48cff\" data-id=\"ad48cff\" 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-caacab0 elementor-widget elementor-widget-text-editor\" data-id=\"caacab0\" 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\">Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Ostatnim razem przyjrzeli\u015bmy si\u0119 nieco bli\u017cej optymalizacji kodu oraz napisali\u015bmy kilka w\u0142asnych funkcji. Poza tym skorzystali\u015bmy ze wbudowanego w rdze\u0144 PR2040 czujnika temperatury. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.<\/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-19e9c1a elementor-widget elementor-widget-image\" data-id=\"19e9c1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/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=\"800\" height=\"109\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg\" class=\"attachment-large size-large wp-image-76156\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-1024x139.jpg 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-300x41.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W-768x104.jpg 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/4Gotowy-Zestaw-do-nauki-programowania-z-Raspberry-Pi-Pico-W.jpg 1429w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-cd5aceb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cd5aceb\" 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-2edbf66\" data-id=\"2edbf66\" 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-dda7cd6 elementor-widget elementor-widget-image\" data-id=\"dda7cd6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"24136_3\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc2MTYwIiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvMjQxMzZfMy5qcGcifQ%3D%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"300\" height=\"273\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg\" class=\"attachment-medium size-medium wp-image-76160\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3-300x273.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3-1024x933.jpg 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/24136_3-768x700.jpg 768w, https:\/\/botland.com.pl\/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-5d3e162\" data-id=\"5d3e162\" 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-bd5bfd4 elementor-widget elementor-widget-text-editor\" data-id=\"bd5bfd4\" 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\u00a0nauki programowania z\u00a0Raspberry Pi\u00a0Pico W\u00a0i\u00a0skorzystaj z\u00a0kursu dost\u0119pnego na\u00a0Blog Botland!<\/span><\/p><p>W\u00a0zestawie: modu\u0142 Raspberry Pi\u00a0Pico W, p\u0142ytka stykowa, przewody, diody LED, rezystory, przyciski, fotorezystory, cyfrowe czujniki \u015bwiat\u0142a, temperatury, wilgotno\u015bci i\u00a0ci\u015bnienia, wy\u015bwietlacz OLED i\u00a0przew\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-24e140c elementor-align-center elementor-widget elementor-widget-button\" data-id=\"24e140c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.com.pl\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.html\" target=\"_blank\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">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-f1a214d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f1a214d\" 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-06a02a0 elementor-widget elementor-widget-text-editor\" data-id=\"06a02a0\" 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;\">Spis tre\u015bci:<\/span><\/p><ol style=\"background-color: #ffffff;\"><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; zaczynamy\u00a0<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; s\u0142\u00f3w kilka o programowaniu<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; pierwszy program<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; zaczynamy programowa\u0107<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; p\u0119tle, zmienne i instrukcje warunkowe\u00a0<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/blog\/raspberry-pi-pico-6-pwm-adc-i-komunikacja-z-komputerem\/\" target=\"_blank\" rel=\"noopener\" data-wpel-link=\"internal\"><span style=\"font-weight: bolder;\">Raspberry Pi Pico \u2013 #6<\/span>\u00a0\u2013 PWM, ADC i komunikacja z komputerem<\/a><\/li><li style=\"font-size: 16px;\"><a href=\"https:\/\/botland.com.pl\/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\u00a0<\/span>\u00a0\u2013 Poprawki w kodzie i w\u0142asne funkcje\u00a0<\/a><\/li><li><a href=\"https:\/\/botland.com.pl\/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><li><a href=\"https:\/\/botland.com.pl\/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>\u00a0\u2013 Teoria wska\u017anik\u00f3w i timery<\/a><\/li><li><a href=\"https:\/\/botland.com.pl\/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>\u00a0\u2013 Tablice, struktury i maszyna stan\u00f3w<\/a><\/li><li><a href=\"https:\/\/botland.com.pl\/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>\u00a0&#8211; Uruchomienie cyfrowego czujnika \u015bwiat\u0142a, czyli I2C<\/a><\/li><li><a href=\"https:\/\/botland.com.pl\/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:\/\/botland.com.pl\/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><\/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-32d85b4 elementor-widget elementor-widget-heading\" data-id=\"32d85b4\" 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-49dcbae elementor-widget elementor-widget-image\" data-id=\"49dcbae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_0647\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc0Nzk3IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wMVwvSU1HXzA2NDctc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg\" class=\"attachment-large size-large wp-image-74797\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1024x576.jpg 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-300x169.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-768x432.jpg 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/01\/IMG_0647-1536x864.jpg 1536w, https:\/\/botland.com.pl\/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-38f3c99 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"38f3c99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.com.pl\/moduly-i-zestawy-do-raspberry-pi-pico\/24136-zestaw-do-nauki-programowania-z-raspberry-pi-pico-w.html\" target=\"_blank\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">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-ca92703 elementor-widget elementor-widget-text-editor\" data-id=\"ca92703\" 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:\/\/botland.com.pl\/\" 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:\/\/botland.com.pl\/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-e80078c elementor-widget elementor-widget-text-editor\" data-id=\"e80078c\" 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:\/\/botland.com.pl\/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-bd4ade0 elementor-widget elementor-widget-spacer\" data-id=\"bd4ade0\" 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-3dc64ac elementor-widget elementor-widget-heading\" data-id=\"3dc64ac\" 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\">Czym s\u0105 i jak dzia\u0142aj\u0105 przerwania?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d39893c elementor-widget elementor-widget-text-editor\" data-id=\"d39893c\" 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\">Czytaj\u0105c ten tekst, wasze d\u0142onie spoczywaj\u0105 zapewne na komputerowej myszce. Je\u015bli ni\u0105 poruszycie, kursor widoczny na ekranie monitora zmieni swoj\u0105 pozycj\u0119 i nic w tym dziwnego, bo takie w\u0142a\u015bnie jest zadanie wska\u017anika zwanego myszk\u0105. Jednak czy zastanawiali\u015bcie si\u0119 kiedy\u015b, w jaki spos\u00f3b proces ten jest obs\u0142ugiwany, innymi s\u0142owy jak to mo\u017cliwe, \u017ce komputer wie, \u017ce w\u0142a\u015bnie w tym momencie przesun\u0119li\u015bcie urz\u0105dzenie wskazuj\u0105ce. Mo\u017cna by odpowiedzie\u0107 \u2013 przecie\u017c to proste, laser w myszce wykrywa ruch, dane przesy\u0142ane s\u0105 do komputera, a ten na ich podstawie zmienia lokalizacj\u0119 kursora na ekranie. Odpowied\u017a jest jak najbardziej poprawna, ale sk\u0105d procesor w komputerze wie, \u017ce to w\u0142a\u015bnie w tym momencie myszka zosta\u0142a przesuni\u0119ta, a nie za sekund\u0119, dwie lub dziesi\u0119\u0107. Mo\u017cna by pomy\u015ble\u0107, \u017ce sprawdza on co chwil\u0119, czy po\u0142o\u017cenie urz\u0105dzenia wskazuj\u0105cego uleg\u0142o zmianie, ale teoria ta jest lekko naci\u0105gana. I bez tego komputer ma co robi\u0107: obs\u0142uga przegl\u0105darki, zminimalizowane okno Spotify z ulubion\u0105 muzyk\u0105 czy te\u017c niezliczona liczba proces\u00f3w systemowych, o kt\u00f3rych istnieniu nie mamy nawet poj\u0119cia. W ka\u017cdej milisekundzie przez procesor przetacza si\u0119 potok bit\u00f3w i ci\u0105g\u0142e sprawdzanie, czy przypadkiem myszka nie zosta\u0142a przesuni\u0119ta, by\u0142oby niezwyk\u0142ym marnotractwem zasob\u00f3w. I tutaj w\u0142a\u015bnie do gry wkraczaj\u0105 przerwania.<\/p><p style=\"font-weight: 400\">Gdy poruszymy myszk\u0105, dane odebrane przez kontroler USB lub Bluetooth przes\u0142ane zostan\u0105 do procesora wraz z informacj\u0105 o przerwaniu. Innymi s\u0142owy, uk\u0142ad scalony obs\u0142uguj\u0105cy komunikacj\u0119 poinformuje CPU, \u017ce jedno z urz\u0105dze\u0144 zewn\u0119trznych potrzebuje natychmiastowej obs\u0142ugi. W tym w\u0142a\u015bnie momencie jednostka centralna rzuci do pracy wszystkie swoje zasoby, przerywaj\u0105c aktualnie wykonywane procesy tak, aby, jak najszybciej obs\u0142u\u017cy\u0107 myszk\u0119 i skierowa\u0107 kursor w odpowiednie miejsce. Gdy zadanie to zostanie wykonane, procesor wr\u00f3ci do swojej zwyczajnej pracy. Oczywi\u015bcie ca\u0142y ten opis jest pewnym uproszczeniem i obs\u0142uga urz\u0105dze\u0144 USB wygl\u0105da nieco inaczej, ale idea jest w\u0142a\u015bnie taka. Wszystko opiera si\u0119 na przerwaniach, dzi\u0119ki kt\u00f3rym procesor wie, \u017ce musi natychmiast wstrzyma\u0107 aktualnie wykonywane zadanie i zrobi\u0107 \u201eco\u015b\u201d co w hierarchii systemu jest wa\u017cniejsze.<\/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-f79d538 elementor-widget elementor-widget-heading\" data-id=\"f79d538\" 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\">Przerwania w RP2040<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23cae6e elementor-widget elementor-widget-image\" data-id=\"23cae6e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"tabela przerwan\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc4ODYwIiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvdGFiZWxhLXByemVyd2FuLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"262\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-1024x335.png\" class=\"attachment-large size-large wp-image-78860\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-1024x335.png 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-300x98.png 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan-768x251.png 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/tabela-przerwan.png 1338w\" 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\">Tabela przerwa\u0144 RP2040 (rejestr IRQ).<\/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-aac2a1c elementor-widget elementor-widget-text-editor\" data-id=\"aac2a1c\" 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\">Mikrokontroler RP2040 podobnie jak inne procesory z rdzeniem ARM charakteryzuje si\u0119 pewnym uniwersalnym zestawem przerwa\u0144, kt\u00f3ry podzieli\u0107 mo\u017cemy na kilka kategorii.<\/p><ul><li><strong>Przerwania GPIO<\/strong> \u2013 Raspberry Pi Pico wspiera przerwania generowane w odpowiedzi na zmiany stanu na pinach GPIO. Przerwania te s\u0105 konfigurowalne i mog\u0105 by\u0107 aktywowane dla zbocza narastaj\u0105cego, opadaj\u0105cego lub konkretnego poziomu logicznego. Dzi\u0119ki tego typu funkcjonalno\u015bci mikrokontroler mo\u017ce reagowa\u0107 na zdarzenia takie jak naci\u015bni\u0119cie przycisku, zmiana stanu na magistrali, czy te\u017c detekcja zdarze\u0144 z prostych czujnik\u00f3w.<\/li><li><strong>Przerwania timer\u00f3w<\/strong> \u2013 RP2040 wyposa\u017cono w dwa wielofunkcyjne timery, kt\u00f3re r\u00f3wnie\u017c mog\u0105 generowa\u0107 przerwania. Tego typu wykorzystanie timer\u00f3w pozwala wykonywa\u0107 konkretne zadania w precyzyjnie odmierzanych interwa\u0142ach czasowych.<\/li><li><strong>Przerwania UART\/SPI\/I2C\/USB<\/strong> \u2013 Interfejsy komunikacyjne wspierane przez RPI posiadaj\u0105 w\u0142asny zestaw przerwa\u0144. Wspieraj\u0105 one przesy\u0142anie danych mi\u0119dzy mikrokontrolerem a innymi peryferiami. Przerwania mog\u0105 obs\u0142ugiwa\u0107 zar\u00f3wno odbi\u00f3r, jak i nadawanie danych, co znacznie upraszcza programy korzystaj\u0105ce z tych interfejs\u00f3w.<\/li><li><strong>Przerwania PWM<\/strong> \u2013 W jednym z wcze\u015bniejszych poradnik\u00f3w korzystali\u015bmy ju\u017c z modu\u0142u obs\u0142uguj\u0105cego modulacji PWM. Warto jednak wiedzie\u0107, \u017ce ten komponent procesora r\u00f3wnie\u017c mo\u017ce generowa\u0107 przerwania w momencie zako\u0144czenia cyklu PWM lub osi\u0105gni\u0119cia okre\u015blonej warto\u015bci wype\u0142nienia impulsu. Jest to przydatna funkcjonalno\u015b\u0107 zw\u0142aszcza w aplikacjach wymagaj\u0105cych precyzyjnej kontroli sygna\u0142\u00f3w.<\/li><li><strong>Przerwania ADC<\/strong> \u2013 Kolejnym komponentem, z kt\u00f3rego korzystali\u015bmy, a kt\u00f3ry r\u00f3wnie\u017c mo\u017ce tworzy\u0107 przerwania, jest wbudowany przetwornik ADC. W tym przypadku sygna\u0142 aktywuj\u0105cy przerwanie pojawi si\u0119 po zako\u0144czeniu konwersji analogowo-cyfrowej.<\/li><li><strong>Przerwania RTC<\/strong> \u2013 Projektanci RP2040 zdecydowali si\u0119 umie\u015bci\u0107 wewn\u0105trz procesora zegar czasu rzeczywistego RTC, kt\u00f3ry mo\u017ce generowa\u0107 przerwania w okre\u015blonych interwa\u0142ach czasowych lub w zwi\u0105zku z okre\u015blonymi zdarzeniami zegarowymi, takimi jak przej\u015bcie przez godzin\u0119, minut\u0119, itp. Dzi\u0119ki tego typu przerwaniom mo\u017cliwe jest precyzyjne zarz\u0105dzanie czasem.<\/li><li><strong>Przerwania DMA<\/strong> \u2013 Wi\u0119kszo\u015b\u0107 wsp\u00f3\u0142czesnych jednostek centralnych wspiera przesy\u0142anie danych mi\u0119dzy pami\u0119ci\u0105 a peryferiami bez udzia\u0142u CPU. Proces ten realizowany jest przez jednostki DMA, kt\u00f3re r\u00f3wnie\u017c mog\u0105 generowa\u0107 przerwanie, b\u0119d\u0105ce efektem zako\u0144czenia wymiany informacji.<\/li><\/ul><p style=\"font-weight: 400\">Poza tymi do\u015b\u0107 uniwersalnymi przerwaniami RP2040 wyposa\u017cono te\u017c w co\u015b takiego, jak XIP_IRQ. Skr\u00f3t ten nie jest a\u017c tak jednoznaczny jak pozosta\u0142e widoczne w tabeli powy\u017cej. Jest to przerwanie skojarzone z modu\u0142em SSI, kt\u00f3ry wykorzystywany jest mi\u0119dzy innymi w sytuacji, gdy program realizowany przez mikrokontroler zapisany jest w jego wewn\u0119trznej, ulotnej pami\u0119ci SRAM.<\/p><p style=\"font-weight: 400\">Pewn\u0105 ciekawostk\u0105 jest te\u017c struktura rejestru IRQ, w kt\u00f3rym zapisywane s\u0105 przerwania. Jak \u0142atwo zauwa\u017cy\u0107 przerwa\u0144 jest 26, natomiast sam rejestr jest 32 bitowy. Pozosta\u0142e sze\u015b\u0107 bit\u00f3w jest niewykorzystane i s\u0105 one fizycznie niepod\u0142\u0105czone do modu\u0142u NVIC, czyli komponentu zajmuj\u0105cego si\u0119 obs\u0142ug\u0105 przerwa\u0144. Jednak, mimo \u017ce procesor nie korzysta ze zb\u0119dnych bit\u00f3w, to z poziomu programu mo\u017cna je zapisa\u0107, cho\u0107 nie ma to \u017cadnych fizycznych efekt\u00f3w.<\/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-ac1e66c elementor-widget elementor-widget-heading\" data-id=\"ac1e66c\" 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\">Zmiana stanu diody w przerwaniu<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-100a302 elementor-widget elementor-widget-image\" data-id=\"100a302\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-scaled.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"IMG_1131\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc4ODY0IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvSU1HXzExMzEtc2NhbGVkLmpwZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1024x576.jpg\" class=\"attachment-large size-large wp-image-78864\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1024x576.jpg 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-300x169.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-768x432.jpg 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-1536x864.jpg 1536w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/IMG_1131-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\">W kolejnym programie skorzystamy z tego samego obwodu.<\/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-0346497 elementor-widget elementor-widget-text-editor\" data-id=\"0346497\" 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\">Aby przetestowa\u0107, jak dzia\u0142aj\u0105 przerwania, przygotujemy prosty program, kt\u00f3ry b\u0119dzie zmienia\u0142 stan diody LED na przeciwny przy jednorazowym wci\u015bni\u0119ciu przycisku. Projekt ten nazwa\u0142em interrupt_led i skorzystamy w nim z wcze\u015bniej przygotowanego obwodu. Po przygotowaniu nowego projektu mo\u017cemy od razu przej\u015b\u0107 do kodu.<\/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-4898f84 elementor-widget elementor-widget-text-editor\" data-id=\"4898f84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>#include &lt;stdio.h&gt;<br \/>#include \"pico\/stdlib.h\"<br \/><br \/>#define YELLOW_LED 1<br \/>#define BUTTON 16<br \/><br \/>bool led_status = false;<br \/><br \/>\/\/interrupt handler function<br \/>void gpio_irq_handler(uint gpio, uint32_t events)<br \/>{<br \/>    led_status = !led_status;<br \/>    gpio_put(YELLOW_LED, led_status);<br \/>}<br \/><br \/>int main() {<br \/>    stdio_init_all();<br \/><br \/>    \/\/ LED and button initialization<br \/>    gpio_init(YELLOW_LED);<br \/>    gpio_set_dir(YELLOW_LED, GPIO_OUT);<br \/>    gpio_put(YELLOW_LED, led_status);<br \/><br \/>    gpio_pull_up(BUTTON);<br \/><br \/>    \/\/interrupt initialization<br \/>    gpio_set_irq_enabled_with_callback(BUTTON,     GPIO_IRQ_EDGE_FALL, true, gpio_irq_handler);<br \/><br \/>    while(true) {<br \/>        tight_loop_contents(); \/\/ \"do nothing\" function<br \/>    }<br \/>}<\/pre>\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-46edf17 elementor-widget elementor-widget-text-editor\" data-id=\"46edf17\" 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\">Program, kt\u00f3ry uruchomimy tym razem, jest do\u015b\u0107 prosty i kr\u00f3tki. Na pocz\u0105tku jak zwykle do\u0142\u0105czamy potrzebne biblioteki oraz definiujemy port, do kt\u00f3rego pod\u0142\u0105czona jest dioda LED oraz przycisk. Poza tym umie\u015bci\u0142em te\u017c tutaj globaln\u0105 zmienn\u0105 led_status, kt\u00f3ra przechowywa\u0107 b\u0119dzie aktualny stan diody LED. Kolejnym elementem kodu jest funkcja skojarzona z przerwaniem, ale do niej wr\u00f3cimy za moment, aktualnie przejd\u017amy do g\u0142\u00f3wnej funkcji main. W jej wn\u0119trzu zainicjowana zosta\u0142a dioda LED, do kt\u00f3rej od razu przypisany zosta\u0142 stan zapisany w zmiennej status. Jej warto\u015bci\u0105 domy\u015bln\u0105 jest false, dlatego po uruchomieniu programu dioda nie b\u0119dzie \u015bwieci\u0107. Nast\u0119pnie dzi\u0119ki funkcji gpio_pull_up wyprowadzenie numer 16, do kt\u00f3rego pod\u0142\u0105czony jest przycisk, zostanie podci\u0105gni\u0119te do zasilania.<\/p><p style=\"font-weight: 400\">Kolejna z funkcji uruchamia przerwanie GPIO. Jej argumentami s\u0105: wyprowadzenie, z kt\u00f3rego pochodzi\u0107 b\u0119dzie przerwanie, event_mask \u2013 zdarzenie, kt\u00f3rego efektem ma by\u0107 powstanie sygna\u0142u przerwania, true \u2013 argument uruchamiaj\u0105cy przerwanie oraz tak zwany handler, czyli funkcja, w kt\u00f3rej opisana zosta\u0142a obs\u0142uga przerwania. W naszym kodzie funkcja uruchamiaj\u0105ca przerwanie opisana zosta\u0142a definicj\u0105 BUTTON, czyli przerwanie powinno pochodzi\u0107 z pinu oznaczonego numerem 16. Argumentem event_mask jest GPIO_IRQ_EDGE_FALL, czyli przerwanie pojawi si\u0119, gdy na wyprowadzeniu pojawi si\u0119 zbocze opadaj\u0105ce. Innymi s\u0142owy, gdy wci\u015bniemy przycisk, poniewa\u017c ten zwiera pin RP2040 do masy. Innymi argumentami mog\u0105 by\u0107 tutaj te\u017c:<\/p><ul><li>GPIO_IRQ_EDGE_RISE \u2013 zbocze narastaj\u0105ce,<\/li><li>GPIO_IRQ_LEVEL_HIGH \u2013 stan wysoki na wyprowadzeniu,<\/li><li>GPIO_IRQ_LEVEL_LOW \u2013 stan niski na wyprowadzeniu.<\/li><\/ul><p style=\"font-weight: 400\">Nast\u0119pnie dzi\u0119ki true, uruchamiamy przerwanie i podajemy nazw\u0119 funkcji, kt\u00f3ra ma zosta\u0107 uruchamiana po wykryciu przerwania, czyli gpio_irq_handler.<\/p><p style=\"font-weight: 400\">Po inicjalizacji procesor przejdzie do wykonywania niesko\u0144czonej p\u0119tli while, kt\u00f3ra nie robi nic. W jej wn\u0119trzu umie\u015bci\u0142em specjalne polecenie, kt\u00f3re oznacza w\u0142a\u015bnie, nie r\u00f3b nic i mo\u017cna je por\u00f3wna\u0107 do znanego z assemblera kodu NULL.<\/p><p style=\"font-weight: 400\">Gdy uruchamiamy program, RP2040 przejdzie niemal natychmiast do wykonywania pustej p\u0119tli while. Jednak wszystko si\u0119 zmieni, gdy wci\u015bniemy przycisk. W tym momencie pojawi si\u0119 sygna\u0142\u00a0przerwania i odpowiedni bit zapisany zostanie w rejestrze IRQ. W tym momencie procesor przejdzie te\u017c do obs\u0142ugi przerwania. Dzi\u0119ki funkcji uruchamiaj\u0105cej przerwanie wie on, \u017ce kod, kt\u00f3ry powinien wykona\u0107, znajduje si\u0119 w funkcji gpio_irq_handler. Zauwa\u017ccie, \u017ce w tym przyk\u0142adzie znajduje si\u0119 ona na pocz\u0105tku programu, inaczej ni\u017c funkcje, kt\u00f3re przygotowywali\u015bmy w poprzednim artykule. Rozwi\u0105zanie takie jest jak najbardziej prawid\u0142owe i dzi\u0119ki niemu nie musimy na pocz\u0105tku kodu umieszcza\u0107 prototyp\u00f3w funkcji. Jednak ze wzgl\u0119d\u00f3w estetycznych osobi\u015bcie preferuj\u0119 umieszczanie w\u0142asnych funkcji na ko\u0144cu kodu.\u00a0<\/p><p style=\"font-weight: 400\">Przygotowany handler typu void, czyli niezwracaj\u0105cego \u017cadnych informacji oczekuje od nas dw\u00f3ch argument\u00f3w &#8211; gpio typu uint oraz events typu uint32_t. Nie musimy si\u0119 jednak przesadnie przejmowa\u0107 tymi argumentami, procesor obs\u0142u\u017cy je automatycznie. Cho\u0107 jak nietrudno si\u0119 domy\u015bli\u0107 przekazywany jest tutaj numer wyprowadzenia GPIO oraz zdarzenie, na jakie reagowa\u0107 ma przerwanie.<\/p><p style=\"font-weight: 400\">We wn\u0119trzu funkcji obs\u0142uguj\u0105cej przerwanie umie\u015bci\u0142em dwa polecenia, kt\u00f3re spowoduj\u0105, \u017ce dioda LED zmieni sw\u00f3j stan. Na pocz\u0105tku do zmiennej led_status, przypisany zostanie stan jej odwrotny. Jest to mo\u017cliwe dzi\u0119ki operatorowi negacji \u2018!\u2019. Innymi s\u0142owy, gdy w led_status zapisany b\u0119dzie false, to do zmiennej zostanie przypisana prawda, czyli stan przeciwny. Kolejna funkcja to dobrze ju\u017c znane gpio_put steruj\u0105ce diod\u0105 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-c5a40ec elementor-widget elementor-widget-video\" data-id=\"c5a40ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/przerwanie.mov\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3bb8b2 elementor-widget elementor-widget-text-editor\" data-id=\"a3bb8b2\" 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 uruchamianiu programu mo\u017cemy zobaczy\u0107, \u017ce nic si\u0119 nie dzieje, jak ju\u017c wspomnia\u0142em procesor wykonuje wtedy pust\u0105 p\u0119tl\u0119 while. Prawdopodobne jest, \u017ce tak jak na filmie uruchamiana b\u0119dzie zielona dioda LED, jednak nie ma to zwi\u0105zku z naszym kodem, na pytanie, dlaczego tak jest, odpowiem w dalszej cz\u0119\u015bci artyku\u0142u. Gdy wci\u015bniemy przycisk procesor zarejestruje przerwanie i wykonana zostanie funkcja obs\u0142uguj\u0105ca je i \u017c\u00f3\u0142ta dioda LED zmieni sw\u00f3j stan. Jak mo\u017cecie zauwa\u017cy\u0107 na filmie oraz w rzeczywisto\u015bci nie ka\u017cde wci\u015bni\u0119cie przycisku powoduje zmian\u0119 stanu diody. Dzieje si\u0119 tak przez drgania styk\u00f3w w przycisku i jest to zjawisko jak najbardziej zwyczajne, kt\u00f3rym zajmiemy si\u0119 ju\u017c za chwil\u0119. Jednak na ten moment mo\u017cna powiedzie\u0107, \u017ce program dzia\u0142a poprawnie, a przerwanie generowane przez przycisk jest obs\u0142ugiwane.<\/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-96b5f27 elementor-widget elementor-widget-heading\" data-id=\"96b5f27\" 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\">Drgania styk\u00f3w i stany nieustalone<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c0320c7 elementor-widget elementor-widget-text-editor\" data-id=\"c0320c7\" 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\">Czas odpowiedzie\u0107, dlaczego po uruchomieniu opisanego wy\u017cej przyk\u0142adu zielona dioda LED \u015bwieci. Dzieje si\u0119 tak, poniewa\u017c wyprowadzenie RPI, do kt\u00f3rego pod\u0142\u0105czony jest ten element nie jest w \u017caden spos\u00f3b zdefiniowane. Innymi s\u0142owy, program nie korzysta z tego pinu GPIO, przez co jego funkcja nie jest okre\u015blona. W takim przypadku wyj\u015bcie mikrokontrolera mo\u017ce przyj\u0105\u0107 dowolny stan i nie jeste\u015bmy w stanie przewidzie\u0107 czy b\u0119dzie to stan wysoki, czy niski, ani, czy b\u0119dzie dzia\u0142a\u0107 jako wej\u015bcie, czy wyj\u015bcie.<\/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-6a4327e elementor-widget elementor-widget-image\" data-id=\"6a4327e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"debounce_bouncing\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc4ODcyIiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvZGVib3VuY2VfYm91bmNpbmcucG5nIn0%3D\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"280\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1024x359.png\" class=\"attachment-large size-large wp-image-78872\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1024x359.png 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-300x105.png 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-768x269.png 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-1536x538.png 1536w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce_bouncing-2048x718.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\">Przebieg elektryczny przy wci\u015bni\u0119ciu i puszczeniu przycisku. (https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)<\/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-5610551 elementor-widget elementor-widget-text-editor\" data-id=\"5610551\" 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\">Kr\u00f3tkiemu wyja\u015bnieniu wymaga te\u017c zjawisko tak zwanego drgania styk\u00f3w, kt\u00f3re mo\u017cna by\u0142o zauwa\u017cy\u0107, wciskaj\u0105c pod\u0142\u0105czony do Raspberry Pi Pico W przycisk. Zd\u0105\u017ca\u0142o si\u0119, \u017ce dioda LED nie zmienia\u0142a swojego stanu lub te\u017c zmienia\u0142a, ale niemal natychmiast wraca\u0142a do poprzedniej konfiguracji.<\/p><p style=\"font-weight: 400\">Wciskaj\u0105c przycisk, zwieramy jego styki do masy i mog\u0142oby si\u0119 wydawa\u0107, \u017ce jest to proces zero jedynkowy: logiczne jeden, gdy przycisk nie jest wci\u015bni\u0119ty i zero, gdy jest. W rzeczywisto\u015bci jednak wygl\u0105da to nieco inaczej. Je\u015bli pod\u0142\u0105czyliby\u015bmy do styk\u00f3w przycisku oscyloskop, zauwa\u017cyliby\u015bmy przebiegi podobne do tych widocznych na grafice powy\u017cej. Tak naprawd\u0119 w momencie wci\u015bni\u0119cia lub puszczenia przycisku jego styki drgaj\u0105. W tej kr\u00f3tkiej chwili stan odczytywany przez RPI potrafi zmienia\u0107 si\u0119 nawet kilkukrotnie, przez co przerwanie r\u00f3wnie\u017c uruchomiane mo\u017ce by\u0107 kilka razy. Przez to w\u0142a\u015bnie mogli\u015bmy zauwa\u017cy\u0107 nie do ko\u0144ca intuicyjne zachowanie si\u0119 programu.<\/p>\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-5f20762 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5f20762\" 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-df89a1a\" data-id=\"df89a1a\" 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-0872d89 elementor-widget elementor-widget-text-editor\" data-id=\"0872d89\" 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\">Problem drgaj\u0105cych styk\u00f3w przycisku rozwi\u0105za\u0107 mo\u017cna zasadniczo na dwa sposoby \u2013 hardwarowo lub softwarowo. W pierwszej koncepcji do przycisku nale\u017cy doda\u0107 kilka element\u00f3w w postaci dw\u00f3ch rezystor\u00f3w i kondensatora (spotka\u0107 mo\u017cna te\u017c bardziej rozbudowan\u0105 wersj\u0119 z dodatkow\u0105 bramk\u0105 logiczn\u0105). Tworz\u0105 one wsp\u00f3lnie prosty filtr RC, kt\u00f3rego zadaniem jest jak najbardziej zniwelowa\u0107 nieoporz\u0105dzane impulsy, dzi\u0119ki czemu mikrokontroler otrzyma sygna\u0142 jak najbardziej zbli\u017cony do idealnego sygna\u0142u prostok\u0105tnego.<\/p>\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-cfb05c6\" data-id=\"cfb05c6\" 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-3410b1f elementor-widget elementor-widget-image\" data-id=\"3410b1f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"debounce-sch\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Ijc4ODc2IiwidXJsIjoiaHR0cHM6XC9cL2JvdGxhbmQuY29tLnBsXC9ibG9nXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNFwvZGVib3VuY2Utc2NoLnBuZyJ9\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"791\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1024x1012.png\" class=\"attachment-large size-large wp-image-78876\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1024x1012.png 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-300x296.png 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-768x759.png 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-1536x1518.png 1536w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/debounce-sch-2048x2024.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\">Hardwarowe rozwi\u0105zanie problemu drgaj\u0105cych styk\u00f3w. (https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-e0f64f4 elementor-widget elementor-widget-text-editor\" data-id=\"e0f64f4\" 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\">Ambaras styk\u00f3w rozwi\u0105za\u0107 mo\u017cna te\u017c w spos\u00f3b programowy, tworz\u0105c prost\u0105 funkcj\u0119, kt\u00f3ra rozpozna, \u017ce przycisk zosta\u0142 wci\u015bni\u0119ty, odczeka kilka milisekund i ponownie sprawdzi jego stan. Je\u015bli ten nadal b\u0119dzie w stanie, kt\u00f3ry zosta\u0142 wykryty oznacza to, \u017ce u\u017cytkownik wcisn\u0105\u0142 przycisk i mo\u017cna przej\u015b\u0107 do wykonania programu, kt\u00f3ry go obs\u0142uguje. Kod tego typu przygotowujemy w przysz\u0142o\u015bci. Jednak w przypadku obs\u0142ugi przerwania tego typu, programowe rozwi\u0105zanie nie jest do ko\u0144ca odpowiednie. Pami\u0119tajmy, \u017ce przerwania zg\u0142aszane s\u0105 \u201eautomatycznie\u201d, nie mamy wi\u0119kszego wp\u0142ywu, na to, w jaki spos\u00f3b jest ono rozpoznane. Po pojawieniu si\u0119 odpowiedniego stanu lub zbocza sygna\u0142u w rejestrze mikrokontrolera ustawiony zostanie konkretny bit, a kod wykonywany po wykryciu przerwania jest w\u0142a\u015bnie reakcj\u0105 na ten bit, a nie na fizyczne 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-5a49911 elementor-widget elementor-widget-heading\" data-id=\"5a49911\" 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\">Kod jednorazowy, czyli alarm<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef5c034 elementor-widget elementor-widget-text-editor\" data-id=\"ef5c034\" 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\">Ciekaw\u0105 funkcjonalno\u015bci\u0105 wspieran\u0105 przez Raspberry Pi Pico s\u0105 tak zwane alarmy. S\u0105 to funkcje wywo\u0142ywane jednorazowo po okre\u015blonym czasie, kt\u00f3re okre\u015bli\u0107 mo\u017cemy jak jednorazowe systemowe przerwanie. Mo\u017ce to by\u0107 przydatne zw\u0142aszcza w przypadku, gdy potrzebujemy wykona\u0107 konkretny fragment kodu chwil\u0119 po uruchomieniu mikrokontrolera, ale niezale\u017cnie od g\u0142\u00f3wnej p\u0119tli programu.<\/p><p style=\"font-weight: 400\">Na potrzeby testu funkcji alarmu przygotowa\u0142em kolejny projekt o nazwie alarm, jednocze\u015bnie nadal korzysta\u0107 b\u0119dziemy z tego samego obwodu elektronicznego. W programie skorzystamy z poznanej ju\u017c wcze\u015bniej funkcji, kt\u00f3ra obs\u0142ugiwa\u0142a fotorezystor i przesy\u0142a\u0142a na ekran komputera informacj\u0119 o nat\u0119\u017ceniu \u015bwiat\u0142a i warto\u015bci napi\u0119cia. Jednocze\u015bnie, niezale\u017cnie od g\u0142\u00f3wnego kodu po 10 sekundach od uruchomienia RP2040 aktywujemy wszystkie diody LED. W takim razie przejd\u017amy do kolejnego przyk\u0142adu.<\/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-072fc9d elementor-widget elementor-widget-text-editor\" data-id=\"072fc9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre>#include &lt;stdio.h&gt;<br \/>#include \"pico\/stdlib.h\"<br \/>#include \"hardware\/adc.h\"<br \/><br \/>\/\/definitions and prototypes of functions<br \/>#define GREEN_LED 0<br \/>#define YELLOW_LED 1<br \/>#define RED_LED 2<br \/><br \/>const float conversion_factor = 3.3\/4095;<br \/><br \/>int64_t alarm(alarm_id_t id, void *user_data);<br \/>void PhotoresRun();<br \/><br \/>int main() {<br \/>    stdio_init_all();<br \/><br \/>    gpio_init(YELLOW_LED);<br \/>    gpio_set_dir(YELLOW_LED, GPIO_OUT);<br \/>    gpio_put(YELLOW_LED, 0);<br \/>    gpio_init(GREEN_LED);<br \/>    gpio_set_dir(GREEN_LED, GPIO_OUT);<br \/>    gpio_put(GREEN_LED, 0);<br \/>    gpio_init(RED_LED);<br \/>    gpio_set_dir(RED_LED, GPIO_OUT);<br \/>    gpio_put(RED_LED, 0);<br \/><br \/>    \/\/alarm setup<br \/>    add_alarm_in_ms(10000, alarm, NULL, false);<br \/><br \/>    adc_init();<br \/>    adc_gpio_init(26);<br \/>    adc_select_input(0);<br \/><br \/>    while(true) {<br \/>        PhotoresRun();<br \/>        sleep_ms(500);<br \/>    }<br \/>}<br \/><br \/>\/\/alarm handling function<br \/>Int64_t alarm(alarm_id_t id, void *user_data){<br \/>    gpio_put(YELLOW_LED, 1);<br \/>    gpio_put(GREEN_LED, 1);<br \/>    gpio_put(RED_LED, 1);<br \/>    return 0;<br \/>}<br \/><br \/>void PhotoresRun(){<br \/>    uint16_t photores_read = adc_read();<br \/>    const float voltage_photores = photores_read * conversion_factor;<br \/>    printf(\"Photoresistor ADC: value = %d, voltage = %f V\\n\", photores_read, voltage_photores);<br \/><br \/>}<\/pre><p>\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-069030d elementor-widget elementor-widget-text-editor\" data-id=\"069030d\" 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\">Program sk\u0142ada si\u0119 w wi\u0119kszo\u015bci ze znanych ju\u017c funkcji. Jednak poza inicjalizacj\u0105 diod LED i funkcj\u0105 PhotoresRun, kt\u00f3ra obs\u0142uguje pod\u0142\u0105czony do mikrokontrolera fotorezystor, zauwa\u017cy\u0107 mo\u017cemy dodatkow\u0105 funkcj\u0119 wraz z jej prototypem oraz polecenie aktywuj\u0105ce alarm. I to w\u0142a\u015bnie tymi konstrukcjami zajmiemy si\u0119 przede wszystkim.<\/p><p style=\"font-weight: 400\">Przed niesko\u0144czon\u0105 p\u0119tl\u0105 while zobaczy\u0107 mo\u017cemy instrukcj\u0119 add_alarm_in_ms, ustawia ona alarm, kt\u00f3rego cechy charakterystyczne znalaz\u0142y si\u0119 w argumentach tej funkcji. 10000 to liczba milisekund, po kt\u00f3rej uruchomiony ma zosta\u0107 alarm, kolejnym argumentem jest nazwa funkcji, kt\u00f3ra ma zosta\u0107 wykonana po uruchomieniu alarmu, w tym przypadku to po prostu alarm. NULL oznacza, \u017ce do naszej funkcji nie s\u0105 przekazywane \u017cadne dodatkowe dane, natomiast false okre\u015bla, \u017ce odliczanie czasu do wywo\u0142ania funkcji aktywowane zostaje dopiero przy ustawieniu alarmu. W przypadku argumentu true, pojawi\u0107 mo\u017ce si\u0119 co\u015b takiego jak wywo\u0142anie zwrotne, oznacza to, \u017ce alarm zosta\u0142 powo\u0142any po czasie wi\u0119kszym ni\u017c ten umieszczony w jego argumencie.<\/p><p style=\"font-weight: 400\">Po ustawieniu alarmu kod przejdzie do niesko\u0144czonej p\u0119tli, w kt\u00f3rej obs\u0142ugiwany b\u0119dzie fotorezystor, a informacj\u0119 o nat\u0119\u017ceniu \u015bwiat\u0142a i napi\u0119ciu b\u0119d\u0105 co p\u00f3\u0142 sekundy przesy\u0142ane na serial monitor. Jednak po up\u0142ywie 10 sekund wywo\u0142any zostanie alarm i mikrokontroler przejdzie do jego obs\u0142ugi. W\u00f3wczas wywo\u0142ana zostanie funkcja alarm, kt\u00f3ra uruchomi wszystkie trzy diody LED. Funkcja ta po poprawnym wykonaniu zwraca zero. Podobnie jak przy przerwaniach argumentami tej funkcji nie musimy si\u0119 przejmowa\u0107, wynikaj\u0105 one z dokumentacji RPI i okre\u015blaj\u0105 id alarmu oraz co\u015b takiego jak wska\u017anik na dane u\u017cytkownika, ale wska\u017anikami zajmiemy si\u0119 kiedy indziej.<\/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-11445fb elementor-widget elementor-widget-video\" data-id=\"11445fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/alarm_film.mov\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04c0b67 elementor-widget elementor-widget-text-editor\" data-id=\"04c0b67\" 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 kompilacji i uruchomieniu kodu mo\u017cna otworzy\u0107 serial monitor i obserwowa\u0107 dane sp\u0142ywaj\u0105ce z mikrokontrolera. Poza tym tak jak na filmie po 10 sekundach uruchomione zostan\u0105 wszystkie trzy diody LED. Stanie si\u0119 to niezale\u017cnie i nie wp\u0142ynie na g\u0142\u00f3wn\u0105 funkcj\u0119 programu.<\/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-b15534c elementor-widget elementor-widget-heading\" data-id=\"b15534c\" 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-9a37296 elementor-widget elementor-widget-text-editor\" data-id=\"9a37296\" 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 tym materiale przyjrzeli\u015bmy si\u0119 bli\u017cej przerwaniom mikrokontrolera oraz uruchomili\u015bmy funkcj\u0119 alarmu. Poza tym wspomnieli\u015bmy o domy\u015blnym stanie wyprowadze\u0144 RP2040 oraz problemie drgaj\u0105cych styk\u00f3w w przyciskach. W kolejnym poradniku poznamy timery, a tak\u017ce opowiem wam wi\u0119cej o wspomnianych ju\u017c wska\u017anikach.<\/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-731f84a elementor-widget elementor-widget-spacer\" data-id=\"731f84a\" 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-3818d16 elementor-widget elementor-widget-text-editor\" data-id=\"3818d16\" 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><li>https:\/\/hackaday.com\/2015\/12\/09\/embed-with-elliot-debounce-your-noisy-buttons-part-i\/)s<\/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>Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.<\/p>\n","protected":false},"author":34,"featured_media":79108,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,21,134],"tags":[],"class_list":["post-78858","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 v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy - Botland<\/title>\n<meta name=\"description\" content=\"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/\" \/>\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 \u2013 #8 \u2013 Przerwania i alarmy - Botland\" \/>\n<meta property=\"og:description\" content=\"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/\" \/>\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-04-29T11:08:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-08T08:58:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1510\" \/>\n\t<meta property=\"og:image:height\" content=\"755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 Bartoszak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"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=\"17 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/\"},\"author\":{\"name\":\"Rafa\u0142 Bartoszak\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\"},\"headline\":\"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy\",\"datePublished\":\"2024-04-29T11:08:53+00:00\",\"dateModified\":\"2026-04-08T08:58:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/\"},\"wordCount\":3193,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"articleSection\":[\"Elektronika\",\"Programowanie\",\"Raspberry Pi\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/\",\"name\":\"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"datePublished\":\"2024-04-29T11:08:53+00:00\",\"dateModified\":\"2026-04-08T08:58:20+00:00\",\"description\":\"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"contentUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/1-3.png\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kurs Raspberry Pi&nbsp;Pico \u2013 #8 \u2013 Przerwania i&nbsp;alarmy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"name\":\"Botland\",\"description\":\"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland\",\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botland.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\",\"name\":\"Botland\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"contentUrl\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"width\":250,\"height\":57,\"caption\":\"Botland\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/Botland\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/5a69e7f5db1f77c617f990e73bb83215\",\"name\":\"Rafa\u0142 Bartoszak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"contentUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/IMG_21531-300x300.jpg\",\"caption\":\"Rafa\u0142 Bartoszak\"},\"description\":\"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/author\\\/rafal-bartoszak\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy - Botland","description":"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/","og_locale":"pl_PL","og_type":"article","og_title":"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy - Botland","og_description":"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.","og_url":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2024-04-29T11:08:53+00:00","article_modified_time":"2026-04-08T08:58:20+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","type":"image\/png"}],"author":"Rafa\u0142 Bartoszak","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Rafa\u0142 Bartoszak","Szacowany czas czytania":"17 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#article","isPartOf":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/"},"author":{"name":"Rafa\u0142 Bartoszak","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215"},"headline":"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy","datePublished":"2024-04-29T11:08:53+00:00","dateModified":"2026-04-08T08:58:20+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/"},"wordCount":3193,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","articleSection":["Elektronika","Programowanie","Raspberry Pi"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/","url":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/","name":"Kurs Raspberry Pi Pico \u2013 #8 \u2013 Przerwania i alarmy - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#primaryimage"},"image":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","datePublished":"2024-04-29T11:08:53+00:00","dateModified":"2026-04-08T08:58:20+00:00","description":"Przed nami kolejny materia\u0142 o niewielkim zestawie deweloperskim Raspberry Pi Pico W. Tym razem poznamy niesamowity \u015bwiat przerwa\u0144 mikrokontrolera.","breadcrumb":{"@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#primaryimage","url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","contentUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2024\/04\/1-3.png","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.com.pl\/blog\/kurs-raspberry-pi-pico-8-przerwania-i-alarmy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/botland.com.pl\/blog\/"},{"@type":"ListItem","position":2,"name":"Kurs Raspberry Pi&nbsp;Pico \u2013 #8 \u2013 Przerwania i&nbsp;alarmy"}]},{"@type":"WebSite","@id":"https:\/\/botland.de\/blog\/#website","url":"https:\/\/botland.de\/blog\/","name":"Botland","description":"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland","publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botland.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/botland.de\/blog\/#organization","name":"Botland","url":"https:\/\/botland.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","contentUrl":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","width":250,"height":57,"caption":"Botland"},"image":{"@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/Botland\/"]},{"@type":"Person","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/5a69e7f5db1f77c617f990e73bb83215","name":"Rafa\u0142 Bartoszak","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","contentUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/07\/IMG_21531-300x300.jpg","caption":"Rafa\u0142 Bartoszak"},"description":"Wsp\u00f3\u0142pracuj\u0105cy z Botlandem elektronik, kt\u00f3ry dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie. Entuzjasta system\u00f3w cyfrowych, uk\u0142ad\u00f3w programowalnych i mikroelektroniki. Pasjonat historii, ze szczeg\u00f3lnym naciskiem na wiek XX.","url":"https:\/\/botland.com.pl\/blog\/author\/rafal-bartoszak\/"}]}},"_links":{"self":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts\/78858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/comments?post=78858"}],"version-history":[{"count":0,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts\/78858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/media\/79108"}],"wp:attachment":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/media?parent=78858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/categories?post=78858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/tags?post=78858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}