{"id":1198,"date":"2018-04-17T18:03:38","date_gmt":"2018-04-17T18:03:38","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1198"},"modified":"2018-04-17T20:45:42","modified_gmt":"2018-04-17T20:45:42","slug":"sterowanie-serwem-za-pomoca-joysticka-2-2-2-2-2-2-2-2-2","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=1198","title":{"rendered":"czujka wibracji &#8211; elektroniczna kostka do gry"},"content":{"rendered":"<p>Kolejny raz podstawy &#8211; czyli rozmawiali\u015bmy oo doborze odpowiedniego opornika dla uk\u0142adu zasilanie-LED. Mierzyli\u015bmy napi\u0119cia (czyli <strong>spadki napi\u0119\u0107<\/strong>) oraz pr\u0105dy. Ka\u017cdy musi przez to prze\u015b\u0107, dlatego zach\u0119cam do zabawy w <a href=\"https:\/\/www.tinkercad.com\/\">wirtualnym Arduino<\/a> (jest tam multimetr, p\u0142ytka stykowa i r\u00f3\u017cne LEDy &#8211; prosz\u0119 nie zlekcewa\u017cy\u0107 tego \u0107wiczenia!).<\/p>\n<h2>Czujka drga\u0144<\/h2>\n<p>Bardzo prosta, ale ile zabawy \ud83d\ude09 Prosta, bo ma trzy pin-y: VCC i GDN (czyli zasilanie, z przedzia\u0142u 3.3V-5V) oraz pin Dout &#8211; sygna\u0142 cyfrowy informuj\u0105cy o drganiu. Cena to <a href=\"https:\/\/botland.com.pl\/czujniki-ruchu\/10920-czujnik-wibracji-sw1801p.html\">kilka z\u0142otych<\/a>, zale\u017cnie od miejsca kupna.<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1199 aligncenter\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/czujka_drgan-300x300.jpeg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/czujka_drgan-300x300.jpeg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/czujka_drgan-150x150.jpeg 150w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/czujka_drgan.jpeg 512w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Do czego? no wiele zastosowa\u0144, ale&#8230; takie \u015bmieszniejsze (ale czy oby na pewno?) to alarm otwartej szuflady. Czyli: je\u015bli chcemy mie\u0107 pewno\u015b\u0107, \u017ce nasz m\u0142odszy brat nie b\u0119dzie grzeba\u0107 w naszej szufladzie, to &#8230; montujemy taki uk\u0142ad do wn\u0119trza szuflady i je\u015bli jednak b\u0119dzie pr\u00f3ba jej otwarcia &#8211; to odezwie si\u0119 alarm (lub taki incydent zostanie zapisany w pami\u0119ci). Potem mo\u017cna przejrze\u0107 &#8222;dziennik zdarze\u0144&#8221; i przekona\u0107 si\u0119, czy faktycznie braciszek nie myszkowa\u0142 w naszej szufladzie \ud83d\ude09<\/p>\n<h2>To bardzo czu\u0142y czujnik<\/h2>\n<p>W\u0142a\u015bciwie to wystarczy stukn\u0105\u0107 w st\u00f3\u0142 i te minimalne drgania wprawi\u0105 w dzia\u0142anie nasz czujnik. Pirwszy, prosty programik:<\/p>\n<pre class=\"lang:arduino decode:true\" title=\"Czujka drga\u0144 - najprostrzy\">byte czujka=7;\r\n\r\nvoid setup(){\r\n  pinMode(czujka, INPUT);\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop(){\r\n  if (digitalRead(czujka)==0)\r\n    Serial.println(\"czujka! drgania!\");\r\n}<\/pre>\n<p><strong>Nie pomyslilem si\u0119<\/strong> &#8211; rejestrujemy drgania gdy odczytujemy napi\u0119cie LOW (czyli zero). Gdy brak drga\u0144 &#8211; odczytujemy stan HIGH (1). A mo\u017ce tak rozbudowa\u0107 program, aby zlicza\u0142 liczb\u0119 drga\u0144?<\/p>\n<pre class=\"lang:arduino decode:true\" title=\"Czujka drga\u0144 - zliczanie\">byte czujka=7;\r\nunsigned int licz=0;\r\n\r\nvoid setup(){\r\n  pinMode(czujka, INPUT);\r\n  Serial.begin(9600);\r\n  licz=0;\r\n}\r\n\r\nvoid loop(){\r\n  if (digitalRead(czujka)==0){\r\n    licz++;\r\n    Serial.print(\"czujka! drgania!  \");\r\n    Serial.println(licz);\r\n  }\r\n}<\/pre>\n<p>Prosz\u0119 uruchomi\u0107 powy\u017cszy programik i zaobserwowa\u0107, jak szybko nasz licznik (zmienna <em>licz) <\/em>ro\u015bnie. Przy okazji przekoanli\u015bmy si\u0119 na w\u0142asne oczy, co si\u0119 dzieje gdy <span style=\"text-decoration: underline;\">przepe\u0142nimy<\/span> licznik (testowali\u015bmy to na zmiennej typu <em>byte<\/em>, kt\u00f3ra zlicza liczby od 0..255 &#8211; \u0142atwo taki licznik przepe\u0142ni\u0107!).<\/p>\n<h2>Kostka do gry &#8211; liczby losowe, nie pseudo-losowe!<\/h2>\n<p>Pokaza\u0142em pa\u0144stwu sw\u00f3j kolejny uk\u0142ad &#8211; <strong>elektroniczn\u0105 kostk\u0119 do gry<\/strong>. Drgania powoduj\u0105 tworzenie <strong>liczb<\/strong> <strong>losowych (prawdziwie losowych, nie pserudo-losowych).&nbsp;<\/strong>Jak? wymy\u015bli\u0142em sobie tak: zliczam liczb\u0119 drga\u0144, a gdy drgania ustan\u0105 &#8211; wynik wy\u015bwietlam z operacj\u0105 modulo 6 + 1 (modulo 6 &#8211; to liczby z zakresu 0..5 wi\u0119c dodaj\u0119 jeszcze 1 aby mie\u0107 sze\u015bcienn\u0105 kostk\u0119 do gry). Ca\u0142o\u015b\u0107 prezentuj\u0119 na 7-segmentowym wy\u015bwietlaczu (no i dodatkowo &#8222;dla bajeru&#8221; uruchamiam melodyjk\u0119).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1202 size-full\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/DSC_4674.jpg\" alt=\"\" width=\"900\" height=\"506\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/DSC_4674.jpg 900w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/DSC_4674-300x169.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2018\/04\/DSC_4674-768x432.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Na powy\u017cszej fotce widzimy Arduino UNO (w wersji Ferrari &#8211; czerwoniutkie) z nak\u0142adk\u0105 &#8211; <a href=\"https:\/\/botland.com.pl\/arduino-shield-ekspandery-wyprowadzen\/8742-arduino-proto-shield-rev3-ze-zlaczami-8058333490175.html\">proto-shieldem<\/a> (aby nie trzeba by\u0142o si\u0119 bawi\u0107 w oddzieln\u0105 p\u0142ytk\u0119 stykow\u0105). Roboczo wszystko po\u0142\u0105czone jest przewodami ze skr\u0119tki, ale ca\u0142o\u015b\u0107 nie\u017ale trzyma si\u0119 kupy \ud83d\ude09<\/p>\n<h2>Praca domowa<\/h2>\n<p>Proponuj\u0119 pobawi\u0107 si\u0119 w <a href=\"https:\/\/www.tinkercad.com\/\">wirtualnym Arduino<\/a> i po\u0107wiczy\u0107 wy\u015bwietlanie liczba na 7- segmentowym wy\u015bwietlaczu &#8211; to mo\u017ce si\u0119 jeszcze wielokrotnie przyda\u0107!Nie zapomnijcie zapisa\u0107 wynik\u00f3w Waszej pracy by potem pochwali\u0107 si\u0119 nimi!<\/p>\n<p style=\"text-align: right;\"><em>(c) KG 2018<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kolejny raz podstawy &#8211; czyli rozmawiali\u015bmy oo doborze odpowiedniego opornika dla uk\u0142adu zasilanie-LED. Mierzyli\u015bmy napi\u0119cia (czyli spadki napi\u0119\u0107) oraz pr\u0105dy. Ka\u017cdy musi przez to prze\u015b\u0107, dlatego zach\u0119cam do zabawy w wirtualnym Arduino (jest tam multimetr, p\u0142ytka stykowa i r\u00f3\u017cne LEDy &#8211; prosz\u0119 nie zlekcewa\u017cy\u0107 tego \u0107wiczenia!). Czujka drga\u0144 Bardzo prosta, ale ile zabawy \ud83d\ude09 Prosta, [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1202,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[229,31,225,224,227,228,223,226],"class_list":{"0":"post-1198","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-alarm","9":"tag-czujnik","10":"tag-drgan","11":"tag-drgania","12":"tag-kostka","13":"tag-liczby-losowe","14":"tag-wibracje","15":"tag-wibracji","17":"post-with-thumbnail","18":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1198"}],"version-history":[{"count":5,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1198\/revisions"}],"predecessor-version":[{"id":1205,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/1198\/revisions\/1205"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/1202"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}