概要
電子工作コンテスト、見つけたので、やってみる。
コンテストテーマ 「イチ」で発想、関連付け
コンセプト
↓
イチは一でしょう
↓
世界一
↓
日本一
↓
今日一
↓
今日一の気持ち
↓
さりげなく、気持ちを伝える
↓
してもいい日の絶対サイン
コンテスト応募のストーリー(構成案)
- 作品名: 「今日一(キョウイチ)のサイン」
〜言葉にしない、2人だけの絶対1シグナル〜
ストーリーの組み立て:
- 背景: 「イチ」というテーマから、私たちは世界一や日本一ではなく、身近な「今日一(きょういち)の気持ち」に着目しました。
- 課題: パートナーに対して「今日は甘えたい」「話を聞いてほしい」「(一緒に過ごしても)いい日だよ」という気持ちは、気恥ずかしくて口に出せないことがあります。
- 解決策: そこで、ボタンを「1回」押すだけで、相手にだけさりげなく自分の「今日一のサイン」を届ける電子工作を開発しました。
技術の力で、日常のコミュニケーションをより優しく、確実につなぎます。
早速、失敗
ホールICが、アナログ値を返さない。
BD7411Gは、オンオフの2値だった。
VRで代用しよう。
VL53L0xという距離センサはある。
I2Cらしい。調べておこう。
開発手順
picoは、ターミナルだけで、開発できる。
micropythonだから。
ターミナルは、c#で書いた。
using System;
using System.IO.Ports;
using System.Threading;
namespace ohi
{
class pico {
private static SerialPort port;
public static void Read() {
while (true)
{
Console.WriteLine(port.ReadLine());
}
}
public static void Main(string[] args) {
port = new SerialPort();
port.PortName = "COM3";
port.Parity = Parity.None;
port.DataBits = 8;
port.BaudRate = 38400;
port.StopBits = StopBits.One;
port.DtrEnable = true;
port.RtsEnable = false;
Thread readThread = new Thread(Read);
try
{
port.Open();
readThread.Start();
}
catch (Exception)
{
Console.WriteLine("Fail: Port open of COM3. Application stops.");
Environment.Exit(1);
}
while (true)
{
string line = Console.ReadLine();
port.Write(line + "\r");
//port.WriteLine(line);
}
}
}
}
書込みは、ampy
ws2812を光らせて見る。
ピン配置図(ビジュアルイメージ)
PicoをUSB端子が上にくるように置いたときの、具体的なピンの位置です。
[ USB 端子 ]
+---------------+
1 | GP0 VBUS | 40 =======> [ LEDの VCC (5V) へ ]
| |
| |
22 | GP17 GND | 38 =======> [ LEDの GND へ ]
+---------------+
||
||
+=========================> [ LEDの DIN (信号) へ ]
プログラム
ledは7個
import array
import time
import rp2
from machine import Pin
@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, autopull=True, pull_thresh=24, out_shiftdir=rp2.PIO.SHIFT_LEFT)
def ws2812():
label("loop")
out(x, 1)
nop().side(1)
jmp(not_x, "tugi")
nop()
nop()
nop().side(0)
label("tugi")
nop().side(0)
nop()
jmp("loop")
sm = rp2.StateMachine(0, ws2812, freq = 5_000_000, sideset_base = Pin(17))
sm.active(1)
def main():
global sm
NUM_LEDS = 7
ar = array.array("I", [0 for _ in range(NUM_LEDS)])
for i in range(7 * NUM_LEDS):
for j in range(NUM_LEDS):
r = j * 100 // (NUM_LEDS - 1)
b = 100 - j * 100 // (NUM_LEDS - 1)
if j != i % NUM_LEDS:
r >>= 3
b >>= 3
ar[j] = r << 16 | b
sm.put(ar, 8)
time.sleep_ms(90)
for i in range(24):
for j in range(NUM_LEDS):
ar[j] >>= 1
sm.put(ar, 8)
time.sleep_ms(10)
main()
作品投稿シート
- 作品ステータス: 必須
アイデア/開発中/完成/供養 - 作品タイトル: 必須
50文字まで入力できます - 作品のURL:
作品の公式URL、アプリストアのURL、Githubページなどを入力ください - 概要: 必須
SNSなどに共有時に表示されます。100文字以内でわかりやすく伝えましょう。例)流れる音楽のリズムに乗って歩けば、乗りたい電車の時刻にちょうどよく到着できるアプリ。 - ライセンスの設定注意
※2022/5/23からライセンス表記がされました。
表示する:Creative Commons Attribution CC BY version 4.0 or later (CC BY 4+)
表示しない
▼詳細設定項目 - 画像:
5枚まで登録可能。1枚目はメイン画像として採用されます。
add_photo_alternate
ここに画像をドラッグ。またはクリックでファイルを選択。
推奨サイズ:880x495px
画像形式:png、jpg
- 動画:
YouTube、もしくはVimeoのURLを入力ください。
例)https://www.youtube.com/watch?=***
- システム構成:
どうやって作ったかを画像、Markdown記法やHTMLで解説ください。
icon
ここに画像をドラッグ。またはクリックでファイルを選択。
推奨サイズ:880x495px
システム構成図があると伝わりやすくおすすめです。
画像形式:png、jpg
例)1. 加速度センサで投げられを検知、2.GPSと天気APIにより現在地の予報取得、3.姿勢と光で予報をお知らせ(晴れ,曇り,雨の3種)
- 開発素材:
使用するAPI、ツール、デバイスなどを3文字以上入力し、候補から選択ください。
例:Twilio、Unity、Arduino
- タグ:
プログラミング技術や作品を表すタグ。5個程度つけることでより多くの人に見てもらいやすくなります。
例:Objective-C、Python、機械学習、寿司、ねこ
- ストーリー:
Markdown記法やHTMLで入力できます。 作品の特徴や技術的こだわりなど、作品について伝えたいことをご自由にお書きください。
そして、最後にチームメンバーで共有している、このプロトタイプにかける、Wow なメッセージをご入力ください。
便利な埋め込み機能を是非ご利用ください。Twitter、You Tube(ショート動画含む)、SlideShare、speakerdeck、CARTO、MakeCode などのURLを入力すると、自動的にコンテンツが表示され、表現がリッチになります。
-
スライドモード:
改ページは「---」を入力ください。OFFにすると「プレゼンテーションを開始」ボタンが非表示になります。 -
メンバー登録:
ProtoPediaにアカウントを持つチームメンバーの表示名(orユーザーID)を入力し、候補から選択ください。 -
チーム名を入力:
user
ohisamallc @ohisamallc
役割を3つ入力してください
face
メンバーを追加するadd -
関連リンク:
この作品に関係の深いページ(技術ブログ、イベントブログ、受賞記事、関連作品など)あれば入力ください。
例)https://www.○○○.com/○○○
例)https://www.○○○.com/○○○
例)https://www.○○○.com/○○○
例)https://www.○○○.com/○○○
例)https://www.○○○.com/○○○
以上。