プロジェクターでクリスタル風プラ板工作を照明 00:22:13
3Dプリントしたオブジェによる影絵アニメーション装置 00:22:22
ゼミ室の扉をスマホで開錠できるようにした卒研 00:09:34
BGMは1997.10大学祭展示用のMIDIをWindowsソフトシンセで再生
以下の演習1~4のMaxuino のパッチャーと回路を制作する。
パッチャーは 改造例 として組み込んだものを利用してよい。
次週も同様に進めるので適当に選んで取り組んでよい。
サブパッチャー digital OUTPUT をダブルクリックして開く。
LEDx4 デジタルアウト 順次点灯
LEDを4個制御する回路を作成する。
Arduinoの2番~5番をデジタル出力モードで使用する。
各LEDのGND 側を2番~5番に接続する。
各LEDを適当に間隔を開けてブレッドボード上に以下の画像の様に配置する。制御抵抗(220Ω)を介して5Vに接続し、GND側はArduinoの2番~5番に接続する。
2024年度 時間短縮のため応用例2までスキップ
Maxuinoのパッチャーを改造する。
maxuino.maxhelp
を編集する。
以下の画像の様に、
(1/3) digital OUTPUT サブパッチャーを複製する。
(2/3) サブパッチャーの出力を s to-maxuino に繋ぐ。
(3/3) 複製した digital OUTPUT サブパッチャーを開いて編集する。
以下の画像の様なパッチャーを作成する。面倒ならコピペ用データで作成してもよい。
手順概略
元から在るデジタル出力用のオブジェクトを複製する。
出力ピンを2~5番に設定する。数値オブジェクトを削除して2~5のメッセージに置き換える。
各トグルスイッチで2~5番をON OFF させて動作確認する。
counterオブジェクトの部分を作成し、一定間隔でトグルスイッチをON OFF させる。
makenoteオブジェクトの部分を作成し、音とLEDの点灯を同期させる。
下の画像のパッチャーでは
init のボタンを押して
各ピンのモードをdigital OUTPUTに設定する。
応用として、sel オブジェクトから直接トグルスイッチに接続する代わりに、On Off用のメッセージを介して接続すれば、LEDの点灯パターンを自由に設定できる。
sel の分岐数をさらに増やせば点灯パターンを増やすこともできる。
----------begin_max5_patcher----------
1615.3oc4Z0jaiaCEdcFf4NHn0tF7weE6cXPWzBzEECFHayjQSrkLjkml1AE
H2ftoK6xAna6An2lhY11qPIojm3DKKSKR43Iw.INhhQO98deuO9Ho9vKewEw
SJtQsJN5ai9onKt3C5Vtv1lokK1zvEwKRuY57zU1NFmq94hIuKdTy8pT2TYa
ekZdD5KMmudQV9bUk8+AuUqEqq1o4rY1mf9w9M76dD08r5WVppGfwSRyuJdT
Tbbzq2zmkoUSeaV9UuoTMsptaRBcrHgBfDU+gfGEwYxwnQQ5ao+MFOFE8Z6S
32d4KLeq+ZjyNfEpUqRuRsqGfvOJ3Cs.elb+vuaXK3jwfLIAiafMmpgsTXAr
bLa3fs.6OrE8E1RBarbqOII7SDr4H+gMquvNQjLlHkbjfX+fExSDroI9Cabu
gMFMVHkXfxq+HfvB68ItkWTozi01gNocniZC52QZZMGFLHQjXADUF.wp8AnE
oWqLfJhSi.D5n.Va51zNDttbdQZkQ3t9ONfLVsKfxLeAHH.9foEKVnxq10I7
cWdY6.GbOhtU9PKvAPhwILgjhnM5STCbpmLRr67TZ98vfzb+AJqKfxv0ApZj
grWfFFEH+0coj9J.APMN4zgWoE7GmPewIK3vbuTyO+m29o+92+zse7eu8VP+
i45O9W0W+e+ye3MukH6h2hSrJL.wBXfRGPMWSExPDNhDQaGUr1QEqMTINbcx
666CPwkv8KjDIzNFdh0wvRBg+Y8hIpxCDXWlVltPUoJeiJOcxb08BuGd9HBs
Cp+FeQm9AL2NETcl.CE.bWUb0UyUgC2skxS5n1pr7pdD5ajBna98PTLhpprv
TFh+R6jCs9wi2AHs7.9PVM1zh045PtVc33TFns3AvxtY.ipS.L+zOBQiVYPb
H6cVgr7rJuk9wcWalFTVHHrbaBI.EsLYcUUQ9vlhi4dQwaPMAss71.UBCy67
Yn2qUDPRabkh0kfi3BNtoDbILvKVbY50QKyxeUwLkNiFNp0V0pOvsxUurHuZ
U1uZuCXhwc4a313NMAMVpIDTRiqgqWCRxVIBa+ry0jV6X5GJUSVO8sppnW88
wm0oJ.ymTkV2IQJNoE5THVvy9oSSuNZV1UYUoy+wxrp.Qp3glT0t6pMFFfnm
DJ1onfKP3SAWHsOXmcsknmfUhnXNeqYcwC5Zpo9KTmz6M0CdpnSKCcJkH4Yg
LMF7QllydBKSiwglS0t65otLMl3gLsfddnRS7Vkl26MDrdC4+5WjVD57IFPd
NnQK8QhljvdBWIMJzTp1cWO4qjF7PhlJZYmpdDjnCv6BQekna1v5u9knogNe
BSdzknqQh+GlU2G17CjMP5xTXRzXNPXegMjXnCr5SyYaPuYqXMl5KVIKelxh
K37dADdsinnmxSNAzvu4gsPydFL6jLzmr1wN8TsEhmmkuy6ro0jla7.2zph0
kS2LJaJiKZqfwL0ppr7zpLcF5ccxTQSTmbbmsmvE6QtemVjMaYg1ktZy6h.1
L4kYEHZWkl40jQJLLLP23NRd61yffENxEvvDAy4wcwdFyA20ohxYpRK29TM.
rrk1FAP.FALmHrTYv74Lwo1frSsAwmZC5j8FPZrSC.6LkCFOl5DOlENgWqAA
mLHDFCRbyKGNdk40a6DaQ+mMCSOSlMy7FjEgODXvjf47rFjbvvkHrF7jxOHB
WR5.HbFzMFY3xxIXmMXfPnSEcgCWLD6jRMIbzTrSUYw6TUAvH6N7PzqyPhHj
DXy5VMZML5dtWKS1gOYHh0eDYdksbFQjSFhLmAdegTBl3NjfSGjv8GR.fNBL
EhB8vNUCh4LU2dluGigvCJcIrQVr+kov4z6WJhYSwd7KZACNGfCj3r6KcHLF
Dj9G7D5DtyhZLenfXGgqgZgWtMD.4.t7Svo5Pe3tKsiRK2tyfz5yxXykLob7
Poi31317hDNXpoNNDX6QMMDEy.b+SHkzyR0Tf4b.NPhaD+8k.Rbtntgc18MX
patMDHCo5layXgGvBdbbHTOM8fIUAGytCEDC5h8jCpe24yGXv75H+UTHR1Pq
N2bzcoKW9dU4plAWMphWj9tBq+HYT80Y40WWeLjwkp2ms4eAZZKsb5aypTSq
VWVePp2vaNm23EEZ2a95rMAYii0Xa6wkZN30UKSqcg1iU8kuP2g+GD5xNl.
-----------end_max5_patcher-----------
青・緑・赤の順に1個ずつ点灯させる。
LEDを3個に減らして、赤と緑の抵抗を減らして明るさを増す(220Ωの抵抗を並列に接続。抵抗値は半分の110Ωになる)。
Arduinoのピンの出力のリミットは40mAなので、これ以上の抵抗は増やしてはいけない。
counter のレンジを 1~3に修正して、各タイミングで3個のLEDのONとOFFのパターンを切り替える
LEDをアナログ出力で制御する。
演習1の回路をそのまま使って実験する。
Maxuinoのサブパッチャー PWM(fading) を複製して編集する。
line と function による制御
line オブジェクトにメッセージ 「開始値, 目標値 到達時間」を送ることで時間変化する数値メッセージを生成できる。
目標値に到達するとlineの第2アウトレットからbangで通知される。
これをcounterで処理してタイミングに応じて目標値を再設定することができる。
このテクニックを使用した場合、信号がループして止まらなくなるので停止用のスイッチを組み込んである。
funcion オブジェクトにグラフを描画することで時間変化する値を設計できる。
アトリビュートからmode を切り替え(Linear / Curve)ることで曲線も利用できる。
数値ボックスの値を 3に修正して3番ピンをPWM出力(擬似アナログ出力)モードに変更する
----------begin_max5_patcher----------
1620.3oc2ZkzaaaDE9rCP9OPvyJDyBGtzaE8PuzbJEnGRBLnjFKyDpgBjTJN
Mn.I1WZRuUzdnMW5gBTf.zETDfhBz17iQvY4eQmMRIYSRQKMRAsFvljCGx26
66sLu2P+nqesCr6mdBM215Crts0AG7H9HGHGSLxAkCbf83nSFjDkKmn8fzwi
orB6d5aVPOoPdiacbbg07m7Su4z+b9oe84O8Yu669w6vle5uN+rWL+ryDmTd
y29p+97m8CUuhjXFcP5Tl78fJGkMcbLKgVHEKboQSmVTNLnb3IQECNNlM5vL
5fBEfB7.NfdVPeW4ALQb.64.rta4SEOTp4o8u2Mbg1xA+hqeMwQ9gdaOkbzT
1f3T17m7KQEEYw8mVPuC6NrwoCoVeBGzQYVu44u7M+w2qG6ilNiZ85m+67Ql
+3G+gIb97zed9Y+Em3d6Kd0q+1WVOk4ZXJSSbAgxKbafwvg6.FCv8f9p4m9T
KH.HN+e3PWd93bgu04e4u8tm7M1lBudtHADcW1QAgZBud6.79PKtrstgEzAX
LT4S7j3AgEG7gRTAZBUt6.TchkDSbyl4LU9ARbfkvwGzNnPaNnNJIkqUqQuO
JMabjTy7VnyYQioEzrCorn9IzU.zp3rJEmZrhGNgp.oscOK69QrQ1KfUMbAw
UwEJuWBnU2VTvlyEio44Qin0Dl1SEf1rIFUOzgMC8t.YUjpeX6HdKBTKRGMJ
gtFq+UvT2LdiE4taCxHRnJMrmxXW925wLdyw7n7GDykd8fFaTPuFDGBbbw.n
uGP8CzWXlkowbkw83Fs4vcgW9dw0FycjuDpgHkUOzgzlmNXyQMuXjhT19vSe
8IzvH+Uo.eWtsF1EGeXv+OnfZ886HErE46XzGveEW10OmlvWCGtlbBqBeb6v
u2hiaRZ.eUoZsWiFDadpPVlMMqIxfTOY31Zh+dpk5E+t10A3LQM4G7jzgGrc
5.sKxJ5vEuy9aoeDDeY7qJGvizN72EKJ.4vGrGgO7h4F6N7AlOXPz2IG9Wo7
Baa4t05.Dp5pG32JEDriZpuHdsqaz8VabUMZq6WifZs0F+snylto3hchXSWA
r4rd71phVIuWmayQyKHfpKcPSLCoBWQCGNIkmWM+PdgsGe3foYyzpg7Un9i9
na.2QxEQHXXHjaIvghrapIbC95P.hpUmkeP93dDq6tiBt1qwVZNN.tn6plym
r4tdIwynN4IwCoYUvaVTFi6Wcw6ea7cqlR9woOnbNfqdYZvMgyTNpKHfiRYE
U54GGmjXcqHVdkJllEyyRDIiqVUe5VdLbnuCA4A7P5AQ7Re8Is1rCz0eAEEM
iN7vpsWbwY4Z6QoAQP3ISooGUNd0MVl7RRYip0pPprJqL+wbyrD2Nf5tM2.l
UT26q1WVokn1W0TVbQdwC0VV8Dz9hKNwjgiShtu0jX1ME6LKzBul3RgeRd7m
qTOfy1zZ7JtbeZFs+zAGSKrt4srac6BjwvDWjS.wG4EDp9QzJU.t00T1hs.T
ACisTnHWuefKDFpiF.bsmDxUeBvm.zPJDxAip1GRS6.XkJUtNt3NUCFyFROY
giz+0adrdZCBqg1ZeiSQ16fnnA22JhEkjN5yxhKDgRqs9w22wR0ym0EYAAAs
RnP3VDbwga+kVvbCbw5FQdkJhvbDpK.e4k9bCamO2lM5Sr13z3qTxppgEOqp
wPQ4waXub5u2Tf9Sxzdy63KUpuZZxxDu3GsUJLwMt.9ySmlMnT4zuUdMrKD3
PZdQLqp9kaWUKsXRMyzcVdnftHOYEMKOsww5R30koR7EaDJNPu8OHmvKUHUf
b+wLfJC2uLDoKhqjFMgEwqSVDyIObm.nAEXmLfPrwDHD0YDBMh.CTuo0.Pj4
XTPmXTg.QlgQ6VVCPqIMvXuUSSH+pBdxErC8U+2frzEP0tMbwGRtaqAlJ0R2
h8fshKTXXMo+HR0GGJ+hAqdEJnwrlHigLbm7IMWZLXmRqTR3lPfcJshAAHX+
Juq1B0FgPc6hHMYd5tsxfTuVxWNMSriEs2snoUhlTAfITAW+tyCn2uJwEVZ0
nlBT2YAy3.tE965Z+ilLYFMKW+DJIwax4doRRInm55Xl5ZU2K1YzYwkOBTOV
TFu4jBdmISyTsxchmqs9w4c3jw3MJooYAXExV1Hkn0ubdO8pGRzv00uFeB+q
KsKGF
-----------end_max5_patcher-----------
functionによる加減速(イージング)の例
レポートフォルダ MA09 信号制御サンプル.maxpat をコピーして動作を試す
解説動画 「01:06:45 functionによるアニメーションのパターン」
funciton は様々な用途で利用できる
シンセのADSRの音量、音程、アニメーションの座量やサイズ、色、モーターの制御
をカーブに沿って時間変化させる
光センサー(CdSセル: 硫化カドミウム セル)によるアナログ入力
回路はArduinoプロジェクトブック「プロジェクト06 明るさテルミン」P.72 を参照して作る。
ブザーの部分は作成しない。音はMax8のシンセを鳴らす。
CdSセルは足(端子)の部分をもってブレッドボードに挿してください。
頭の部分を持って挿すと足が折れることが有ります。
抵抗値は 10kΩ (カラーコード 茶・黒・橙 (金))
緑の線はA0(アナログ入力)端子に挿す
動作原理:
CdSは明るさで抵抗値が変化する。明るいと抵抗値が下がり、暗いと上がる。
A0端子はハイインピーダンス(高抵抗)なのでほとんど電流は流れ込まない。電圧計として利用できる。
CdSと抵抗(10kΩ)の間の電圧をA0で測る。
センサーに届く光が暗くでCdSの抵抗値が大きな場合はA0はGND(0V)側に近づき、明るく抵抗値が小さな場合は5V側に近づく。
GUIを開いて、14番ピンをAin(アナログ入力)に切り替える。
CdSに手をかざすなどして明るさを変化させる。
Ainのフェーダーが変化したら正常に動作している。
サブパッチャー analog INPUT をダブルクリックして開く。
Maxuinoの Analog INPUT サブパッチャーをコピーする
コピーしたサブパッチャーを編集する。
select pin # を 14 に設定する。
bangボタンを押して、sensor-valuesサブパッチャーを開く。
以下の図の様にアナログ入力の値 0.0~1.0を 440 ~ 880Hz に変換して正弦波で鳴らすパッチャーが追加してある。
scale オブジェクトの出力値を観察する。
光センサーに光が当たらない暗い状態
光センサーに光が当たった明るい状態
観察結果に応じてscaleオブジェクトの数値を調整する。
----------begin_max5_patcher----------
535.3ocuUssaiCBD8YGo7Of3YuQfusN8WY0pJhCMkJLXgwYS2pse6KWLMdac
hcZx1WLxCCybNyYX3kkKhfajGnsPvcfe.hhdwXIxYyZIJXHBVSNTwIsNGgOv
khtZXb+dMDEolpop6oBxFN05CJrowQlfS0tShGXU1oClSBlYacwWt4ouk982
hu2S8yMTOLgvX.bCQrCB94QLnqdjI1cuhVo8tkiVghAYk41E+OIIqPGOyCRU
Mw4bgyxeVtvtZVhmcoPP+kAsuAUM8fKfv1JBmBPq.3UfrLDnrDAGsjTLdIAO
VII8Lkj4TJxw1ELdPs3SS7JYcMUn+Hy2QXhWgWh7iFgqIqgmgO30kNQseI0w
GzUwm+E1ehV55NtlU8HQHn78DEiHzu+TSzxmjcZ8sksSP31F+4nz4qybJsUi
iAo+mTZ5u2RptARc5YkZriJE4kCtFecR84vcxEfaLbRgnG1Y4guWArO0nlpm
q3zWsSYtHJM1DF75I6.mS2mmzEEmbLiOHPNS7gmdbQ0tw6JEsxNUU.KgGH.C
lluk1pYBhlIEC7xxHvYq5yOgoyIgAXcCRncdvzIz1FBvG8Rp1RUtd1uVHfFA
B3a.DBJ3DPHazxdeiFooYOU01eDetLWtdR5PYYr+elv+u+lATQ2yBGA2ainL
s7ZS+dmxgQ3gh9g1vZogzhNVf2V5Zys6Brv7ZRaCwSL2E8kKLN7WVqvEyC
-----------end_max5_patcher-----------
センサーの値でMIDIで演奏する例
センサーの値を周波数に使用する代わりにMIDIのノート番号に使用してもよい。
splitオブジェクトでセンサーの値を範囲を指定して分類する。
----------begin_max5_patcher----------
889.3oc0X8zaSCCE+bmz9NXkygJ633DG9pfllRa8JYpIoJwcTzDRHFG3.haH
gD2PbaG.wc9zLll3aA1NNcUqIotD2BKpJow1wu2u2e98dIWd7QCbFkujU5.d
J3YfACtTLx.0XxQFTOv.mz3kimEWpVny37zTVF2wUOImsjql3lqd2Mu462b0
0qlJaQZR1LFW8fn0FMeAudXX8vIST6R9nyeBxye0dLOlO94IYSOsfMlWoodT
3PLFiBf5COjKHj5MD5BHpydhyfST6vqN9H4UwEWigHOe5zYr0Tgh3TFmUbJK
KdjXh0UaSvHpQL5sR.UKk+x4rJ.5jHrufS5vDfoDINoDnBt90m+uGzv9.Zej
sAcF6EB8ZyX4R1L.DfZNRF2LfwMAXDsc.OJNapi68WMB853bZzvff.BDGUcD
R5cTeJqrLdJaSiQKlAucvuCiZ2LzMrIXg2NHj.80HkhcAAQJagWzv8HrgV.1
g+svV6ssIPaKVe7yEwerchztwPcHoCv5Vke6ZdZdHNPdwmZAB8VqYc6Wt5tO
99ae8W6eMKXm0rvTzlIr9ZjBsdt7YyxEpr8Hy8ZDwdc6vU7ZlTFyOP4pCVq1
c8CcVdQZrZ0A126+6q+zce6s294eXAuOrKuueXSjXPrB7g6y.7e8yOXIHFQ2
4dxBfJ2qtdc+P3nEbdd19s8jHzVJVaRvr1sZk1SNHf1qWfVWmxhf9PvcEgsD
0EwirOotZs+z4yR3.3PwO5N0jZiFC+1MFBmQrprc0eLIVfDDoLI3GKY8v9j.
PB8akZ+QCG.k1KS.FteMAGBFAZPeYDHxu8vCMC+i4Gn.zvdyOPsD+PiwIams
nZOclkjswmpRID4DOvFUlunXbsJt58vAn6UuIrRdRVLOQjZs1xjeTFPmgp6n
HgaWjP6IR4qfYfHq0LqHxHiDYslYEQFdnEYjmYRLzZRjZVvSs02JlUi.ojmb
8UklLYdt3c50ol3He4mpfffUsBfFR1HiWN28aPdwDVghB+vABY6eflzAjMBV
vFoBBRUfmchN8MRf1iZSIvsRlJeaJakMDXTnoVsrg.MxjRsGOJ0LSZy0JzUH
imO+BVQo9QpjkncgyyUg1T2p6Sxptup2HmB1EI0OBROVbgnzMWT2dQgRGcVF
naAvIMWjojsHoNYQBWorUsjjIZKqbdbEvTstb7QhE7G.0H+0AA
-----------end_max5_patcher-----------
サーボモーターを制御する。
回路はArduinoプロジェクトブック「プロジェクト12 ノックロック」P.126 を参照して作る。
サーボモーターの部分だけ作成する。
サーボ制御用の緑の配線は9番ピンに挿す。
コンデンサーには極性がある。足の長い方を5V側に接続する
ピンヘッダを3本分、折り取って使用する
プラスチックパーツの位置を適切な位置に修正する(写真参照)
Ver1
Ver2
Ver2の作成工程
Maxuinoのサブパッチャー p servo を開く。
select pin # を 9 に設定する。
スライダーを操作してサーボモーターが回転したら正常動作。
※ PWMによるanalogWriteの出力は 0-255 の256段階でサーボモーターの角度制御としは分解能が低い。微細な角度制御には分解能を上げる工夫が必要。
課題1~4の内、どれか1点の回路とパッチャーの写真を撮影してWebclassにアップロードする。