基本情報

このページではIoTコンテンツ(カウントダウン機能付きカメラ)を「編集」できます。編集したコンテンツは、プロジェクトの一覧ページでは元のコンテンツを置き換えて表示されます。新しい項目として足したい場合は「 フォーク」してください。

※写真URLは.jpg, .jpeg, .pngのいずれかで終わるもの、またはGyazoへアップロードされたページのURL(https://gyazo.com/hogehogeなど)に対応しています。

※IoTコンテンツの説明、エントリポイントに関する情報 main: index.js およびf3jsモジュールへの依存情報 dependencies: { f3js: (略) } は、この欄の内容とマージされるため記入不要です。

カードのプレビュー
カウントダウン機能付きカメラ
'16/7/6 20:53
カウントダウン機能の付いたカメラです。ほかにほしい機能があれば、「プラス」ボタンで提案してみてください!
Jun Kato

プライベートコンテンツ

このコンテンツはすでに公開されているのでプライベートにできません。「 フォーク」ならプライベートにできます。

ソースコード

マイコン・小型コンピュータのプログラムのソースコードを記述してください。f3jsパッケージをrequireすることで筐体設計が可能です。詳しくはAPIドキュメントをご覧ください。

// instantiate the camera var Camera = require('jsupm_grovescam').GROVESCAM; var camera = new Camera(0); if (camera.setupTty && !camera.setupTty()) { console.log('failed to initialize connection to the camera'); process.exit(1); } if (camera.init && camera.init()) console.log('camera initialized'); else console.error('init() failed'); // instantiate sensors and actuators var groveSensor = require('jsupm_grove'); var gcl = require("jsupm_my9221"); var button = new groveSensor.GroveButton(3); // set layout parameters var f3js = require('f3js') , x = 10 , y = 10 , useCountdown = true /* Use the countdown feature. */ , width = useCountdown ? 130 : 60 , height = 105 , thickness = 45 /* Thickness [10, 100] */ , dw = 5 /* Joint width [0, 10] */ , dh = 2 /* Joint height (panel thickness) [0, 10] */; // put base board var rect = f3js.drawJointRectangle(x, y, width, height, dw, dh, true); var planes = rect.extrude(thickness); planes[4].x = width; planes[4].y = 0; f3js.add(planes[4]); // put sensors and actuators var leftMargin = 28 // Left margin [0, 100] , topMargin = 30; // Top margin [0, 100] f3js.add(camera, { x: x + leftMargin + 0, y: y + topMargin + 0 }); f3js.add(button, { x: x + leftMargin + 0, y: y + 75 }); var circle; if (useCountdown) { circle = new gcl.GroveCircularLED(5, 4); f3js.add(circle, { x: x + width - 30, y: y + topMargin + 0 }); f3js.drawRectangle(x + width - 30 - 6, y + topMargin - 18, 12, 3); } // draw circles... for (var i = 0; i < 7; i ++) { f3js.drawCircle( x + width - (i + 1) * 10 , y + height - 10 , 1); // additional holes } // put side boards var margin = dh; planes[0].x = x; planes[0].y = y + height + margin; f3js.add(planes[0]); planes[1].x = x + width; planes[1].y = y + height + margin - dh; f3js.add(planes[1]); planes[2].x = x + height; planes[2].y = y + height + thickness + margin; f3js.add(planes[2]); planes[3].x = x; planes[3].y = y + height + thickness + margin; f3js.add(planes[3]); // put a side hall planes[3].drawRectangle( 5, thickness - dh - 15, height - 10, 10); // take a picture after a while var ready = true; function readButtonValue() { // detect button push if (ready && button.value() > 0) { ready = false; if (!useCountdown) { // immediately take a photo takePicture(); } else { // or use countdown var cycle = 300 , maxLevel = 24 , level = maxLevel; // start countdown timer var countDown = setInterval(function() { level --; console.log("countdown: ", level); circle.setLevel(level); // take a picture! if (level <= 0) { takePicture(); clearInterval(countDown); ready = true; } }, cycle); } } } setInterval(readButtonValue, 100); function takePicture() { if (camera.preCapture && camera.preCapture()) console.log('camera prepared for capturing images'); else console.error('camera failed to prepare for capturing images'); if (camera.doCapture()) console.log('camera capturing an image'); else console.log('camera failed to capture an image'); if (camera.getImageSize() > 0) { console.log('storing an image ...'); if (camera.storeImage('image.jpg')) console.log('camera successfully captured the image: image.jpg'); else console.log('camera failed to store the captured image: image.jpg'); } } var var29169 = false; // *proposed* Flash ON/OFF var var83594 = false; // *proposed* Shutter noise ON/OFF
カスタマイズ

このコンテンツにはカスタマイズできる項目がありません。

表示オプション
ソースコード中で変数宣言にコメントをつけるとカスタマイズ項目としてGUIウィジェットが表示されます。グレーアウトしているウィジェットはユーザが提案した項目で、ソースコード末尾の変数宣言に対応しています。

設計のダウンロード

モジュール

このプロジェクトは組み立てにモジュールを必要としません。

レイアウト
プログラム

ログインしないと使えない機能です。