SlideShare ist ein Scribd-Unternehmen logo
1 von 23
くるくる研究室 フィジカルコンピューティングを はじめよう。
くるくる研究室 ,[object Object],http://labs.kuru2jam.com/ 原 央樹 尾崎俊介 http://labs.kuru2jam.com/ @hara3  @biscuitjam
作品紹介 http://labs.kuru2jam.com/ くるくる研究室
【 事例 】 お化け屋敷
フィジカルコンピューティング
と言っても、いきなり難しいと思うので、 できるところから、やってみる。
体験しよう 【 ポチっとレンジ 】
体験したい人!
動作の仕組み ③ ソケット通信 電気信号 ④ 電子回路 Data ② 一定間隔でデータを確認 ① HTML から POST
HTML から POST PHP
ケータイからアクセスする PHP <?php // HTML 文字のエスケープ $text =  htmlspecialchars(  $_POST[&quot;push&quot; ] ); if($text){ $fp  = fopen( &quot;./status.dat&quot; ,  &quot;w&quot; ); fwrite($fp, 1); fclose($fp); $url  =  &quot;http://www.yourserver.com/complete.html&quot; ; header( &quot;Location: $url&quot; ) ; ?> <html> <head> …
ケータイからアクセスする HTML … <html> <head> <meta  http-equiv = &quot;Content-Type&quot;  content = &quot;text/html; charset=utf-8&quot; > </head> <body> <img  src = &quot;logo.gif&quot; > <br /> <form  action = &quot;<?php echo $_SERVER['SCRIPT_NAME']; ?>&quot;  method = &quot;post&quot; > <input  type = &quot;submit&quot;   name = &quot;push&quot;   id = &quot;push&quot;   value = &quot; ボタンを押す &quot; > </form> <br /> <hr /> 2010 kurukuru labs. </body> </html>
一定間隔でデータを確認 ActionScript 3.0
package  { import flash.display.MovieClip; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.Timer; import flash.events.TimerEvent; import funnel.*; public class  Pochitto  extends MovieClip { private var  _timer: Timer ; private var  _gio:Gainer; private const  _D_OUT_1: int  = 12; public function  Pochitto()  { _gio = new Gainer(); _gio. addEventListener (FunnelEvent. READY ,  trace ); _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); _gio. addEventListener (FunnelErrorEvent.REBOOT_ERROR,  trace ); _gio. addEventListener (FunnelErrorEvent.CONFIGURATION_ERROR,  trace ); _gio. addEventListener (FunnelErrorEvent. ERROR ,  trace ); } private function  _gioReadyHandler(e:FunnelEvent): void   { _gio.digitalOutput(0). value  = 0; _timer =  new Timer (1000, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } private function  _timerHandler(e: TimerEvent ): void   { var  urlLoader: URLLoader  =  new URLLoader (); urlLoader. addEventListener ( Event.COMPLETE , _completeHandler); urlLoader. load ( new   URLRequest ( &quot;http://www.yourserver.com/getStatus.php?&quot;  +  Math.random ())); } private function  _completeHandler(e: Event ): void  { var  status: Number  =  Number (URLLoader(e. target ).data); trace ( &quot;status : &quot;  + status); if  (status == 1) { _gio.digitalOutput(0). value  = 1; } } } }
Flash から PHP にアクセス ActionScript 3.0
public class  Pochitto  extends MovieClip { private var  _timer: Timer ; public function  Pochitto()  { _gio = new Gainer();  _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); } private function  _gioReadyHandler(e:FunnelEvent): void   { _gio.digitalOutput(0). value  = 0; _timer =  new Timer (1000, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } private function  _timerHandler(e: TimerEvent ): void   { var  urlLoader: URLLoader  =  new URLLoader (); urlLoader. addEventListener ( Event.COMPLETE , _completeHandler); // キャッシュ対策のため、パラメタにランダムな値を入れる urlLoader. load ( new   URLRequest ( &quot;http://www.yourserver.com/getStatus.php?&quot;  +  Math.random ())); } private function  _completeHandler(e: Event ): void  { var  status: Number  =  Number (URLLoader(e. target ).data); if  (status == 1) { _gio.digitalOutput(0). value  = 1; } } }
Flash からアクセスする PHP <?php // 読み込み $status  = 0; $fp  = fopen( &quot;status.dat&quot; ,  &quot;r&quot; ); while ( $line  = fgets( $fp )) {   $status  =  $line ; } fclose( $fp ); // ファイルをリセット $fp  = fopen( &quot;status.dat&quot; ,  &quot;w&quot; ); fwrite( $fp ,  &quot;0&quot; ); fclose( $fp ); echo  $status ; ?>
Gainer と接続
package  { import funnel.*; public class  Pochitto  extends MovieClip { private const  _DT: Number  = 1000;//1 秒 (1000 ミリ秒毎 ) private const  STATUS_URL: String  =  &quot;http://www.yourserver.com/getStatus.php&quot; ; private var  _timer: Timer ; private var  _gio:Gainer; private const  _D_OUT_1: int  = 12; // コンストラクター public function  Pochitto()  { // インスタンス化 _gio = new Gainer(); _gio. addEventListener (FunnelEvent. READY ,  trace ); _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); _gio. addEventListener (FunnelErrorEvent.REBOOT_ERROR,  trace ); _gio. addEventListener (FunnelErrorEvent.CONFIGURATION_ERROR,  trace ); _gio. addEventListener (FunnelErrorEvent. ERROR ,  trace ); } // 準備ができたら実行 private function  _gioReadyHandler(e:FunnelEvent): void   { _gio.digitalOutput(0). value  = 0; _timer =  new Timer (_DT, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } } }
Gainer に命令
Gainer に命令 // 読み込みコンプリートハンドラー private function  _completeHandler(e: Event ): void  { var  status: Number  =  Number (URLLoader(e. target ).data); trace ( &quot;status : &quot;  + status); if  (status == 1) { _gio.digitalOutput(0). value  = 1; } }
ありがとうございました。
あっ!本買ってください。

Weitere ähnliche Inhalte

Was ist angesagt?

Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
Hiroki Shimizu
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
 

Was ist angesagt? (20)

traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
 
test
testtest
test
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
 
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
Roslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインRoslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドイン
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
 
0x300
0x3000x300
0x300
 

Ähnlich wie Lightweight Language Tiger 2010

Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programming
takesako
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
 

Ähnlich wie Lightweight Language Tiger 2010 (20)

Node.js - JavaScript Thread Programming
Node.js - JavaScript Thread ProgrammingNode.js - JavaScript Thread Programming
Node.js - JavaScript Thread Programming
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
 
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
 
WordPressと外部APIとの連携
WordPressと外部APIとの連携WordPressと外部APIとの連携
WordPressと外部APIとの連携
 
jQuery勉強会#4
jQuery勉強会#4jQuery勉強会#4
jQuery勉強会#4
 
Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1Google Apps Scirpt勉強会 #1
Google Apps Scirpt勉強会 #1
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
JavaScript 実践講座 Framework, Tool, Performance
JavaScript 実践講座 Framework, Tool, PerformanceJavaScript 実践講座 Framework, Tool, Performance
JavaScript 実践講座 Framework, Tool, Performance
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
KanbanとTHETAとDK2とわたし
KanbanとTHETAとDK2とわたしKanbanとTHETAとDK2とわたし
KanbanとTHETAとDK2とわたし
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
 
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
 

Mehr von biscuitjam (6)

第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
 
ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4
 
ADC MEETUP 01
ADC MEETUP 01ADC MEETUP 01
ADC MEETUP 01
 
AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回
 
Lightweight Language Tiger 2010
Lightweight Language Tiger 2010Lightweight Language Tiger 2010
Lightweight Language Tiger 2010
 
寺子屋クスール @STATION5
寺子屋クスール @STATION5寺子屋クスール @STATION5
寺子屋クスール @STATION5
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Lightweight Language Tiger 2010

  • 2.
  • 4. 【 事例 】 お化け屋敷
  • 9. 動作の仕組み ③ ソケット通信 電気信号 ④ 電子回路 Data ② 一定間隔でデータを確認 ① HTML から POST
  • 11. ケータイからアクセスする PHP <?php // HTML 文字のエスケープ $text = htmlspecialchars( $_POST[&quot;push&quot; ] ); if($text){ $fp = fopen( &quot;./status.dat&quot; , &quot;w&quot; ); fwrite($fp, 1); fclose($fp); $url = &quot;http://www.yourserver.com/complete.html&quot; ; header( &quot;Location: $url&quot; ) ; ?> <html> <head> …
  • 12. ケータイからアクセスする HTML … <html> <head> <meta http-equiv = &quot;Content-Type&quot; content = &quot;text/html; charset=utf-8&quot; > </head> <body> <img src = &quot;logo.gif&quot; > <br /> <form action = &quot;<?php echo $_SERVER['SCRIPT_NAME']; ?>&quot; method = &quot;post&quot; > <input type = &quot;submit&quot; name = &quot;push&quot; id = &quot;push&quot; value = &quot; ボタンを押す &quot; > </form> <br /> <hr /> 2010 kurukuru labs. </body> </html>
  • 14. package { import flash.display.MovieClip; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.Timer; import flash.events.TimerEvent; import funnel.*; public class Pochitto extends MovieClip { private var _timer: Timer ; private var _gio:Gainer; private const _D_OUT_1: int = 12; public function Pochitto() { _gio = new Gainer(); _gio. addEventListener (FunnelEvent. READY , trace ); _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); _gio. addEventListener (FunnelErrorEvent.REBOOT_ERROR, trace ); _gio. addEventListener (FunnelErrorEvent.CONFIGURATION_ERROR, trace ); _gio. addEventListener (FunnelErrorEvent. ERROR , trace ); } private function _gioReadyHandler(e:FunnelEvent): void { _gio.digitalOutput(0). value = 0; _timer = new Timer (1000, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } private function _timerHandler(e: TimerEvent ): void { var urlLoader: URLLoader = new URLLoader (); urlLoader. addEventListener ( Event.COMPLETE , _completeHandler); urlLoader. load ( new URLRequest ( &quot;http://www.yourserver.com/getStatus.php?&quot; + Math.random ())); } private function _completeHandler(e: Event ): void { var status: Number = Number (URLLoader(e. target ).data); trace ( &quot;status : &quot; + status); if (status == 1) { _gio.digitalOutput(0). value = 1; } } } }
  • 15. Flash から PHP にアクセス ActionScript 3.0
  • 16. public class Pochitto extends MovieClip { private var _timer: Timer ; public function Pochitto() { _gio = new Gainer(); _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); } private function _gioReadyHandler(e:FunnelEvent): void { _gio.digitalOutput(0). value = 0; _timer = new Timer (1000, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } private function _timerHandler(e: TimerEvent ): void { var urlLoader: URLLoader = new URLLoader (); urlLoader. addEventListener ( Event.COMPLETE , _completeHandler); // キャッシュ対策のため、パラメタにランダムな値を入れる urlLoader. load ( new URLRequest ( &quot;http://www.yourserver.com/getStatus.php?&quot; + Math.random ())); } private function _completeHandler(e: Event ): void { var status: Number = Number (URLLoader(e. target ).data); if (status == 1) { _gio.digitalOutput(0). value = 1; } } }
  • 17. Flash からアクセスする PHP <?php // 読み込み $status = 0; $fp = fopen( &quot;status.dat&quot; , &quot;r&quot; ); while ( $line = fgets( $fp )) { $status = $line ; } fclose( $fp ); // ファイルをリセット $fp = fopen( &quot;status.dat&quot; , &quot;w&quot; ); fwrite( $fp , &quot;0&quot; ); fclose( $fp ); echo $status ; ?>
  • 19. package { import funnel.*; public class Pochitto extends MovieClip { private const _DT: Number = 1000;//1 秒 (1000 ミリ秒毎 ) private const STATUS_URL: String = &quot;http://www.yourserver.com/getStatus.php&quot; ; private var _timer: Timer ; private var _gio:Gainer; private const _D_OUT_1: int = 12; // コンストラクター public function Pochitto() { // インスタンス化 _gio = new Gainer(); _gio. addEventListener (FunnelEvent. READY , trace ); _gio. addEventListener (FunnelEvent. READY , _gioReadyHandler); _gio. addEventListener (FunnelErrorEvent.REBOOT_ERROR, trace ); _gio. addEventListener (FunnelErrorEvent.CONFIGURATION_ERROR, trace ); _gio. addEventListener (FunnelErrorEvent. ERROR , trace ); } // 準備ができたら実行 private function _gioReadyHandler(e:FunnelEvent): void { _gio.digitalOutput(0). value = 0; _timer = new Timer (_DT, 0); _timer. addEventListener ( TimerEvent.TIMER ,_timerHandler); _timer. start (); } } }
  • 21. Gainer に命令 // 読み込みコンプリートハンドラー private function _completeHandler(e: Event ): void { var status: Number = Number (URLLoader(e. target ).data); trace ( &quot;status : &quot; + status); if (status == 1) { _gio.digitalOutput(0). value = 1; } }