PocketChipだが、色々インストールしていた所、音が鳴らなくなったので、
Flashしなおしてみた。
1.ファイル退避
といっても、pico-8で試し書きしたlifegame.p8
くらいしか退避しておくものが無い・・・
PICO-8のフォルダは
~/.lexaloffle/pico-8/carts 以下にある。
ネットワークフォルダにでもコピペしておくと良い
(使ったこと無いけど、USBドライブにバックアップしておいてもいいかも?)
2.コネクタ結線
PocketChipからChipをはすし、
GroundとFELをコネクタでつなぐ(自分はブレッドボード用の線で繋いだ)
3.Flash作業
最初Macでやってみたがダメ、USB3だとダメらしい。
ThinkpadX201TabletのUSB3じゃないUSB端子を使うことにした。
Chromeをデフォルトブラウザにして、
こちらのサイトへ行き、http://pcflash.getchip.com/
PocketChip4.3をつつくと、最初にドライバを入れることになる。
ドライバを認識させてから、USBでPocketChipと繋いで、
Flash開始
20分くらいかかったけど、なんとか終わり、音も出るようになった。
4.あとは ネットワーク設定をしたり、
sudo apt-get update, sudo-apt-get upgrade したり、
先程退避したファイルを戻しておしまい。
2016年8月12日金曜日
2016年8月10日水曜日
3D Printer Hot End
Hot Endについて書いておきたい
https://www.youtube.com/watch?v=icLKTOCH9VQ
詰まるのがよっぽど嫌だったのだろう、
とうとう水冷を作った人がいる。
上記URLのレビューによれば、品質は非常に残念な結果だ。
ノズルの重要な点は以下
(1)詰まりにくい
詰まりにくくするには、溶ける部分が多いとダメ、
ヒートシンク部分がきちんと冷やされないと、
上の方まで溶けて、押しても押せなくなって詰まる。
理想としてはノズルの直前まで、個体で居て欲しい。
(2)高温に出来る
上の方が溶けないように樹脂を使った物もあるが、
これだと高温に出来ない。
高温にできないと様々な素材に対応出来ない。
(例えば、ColorFabXTとか)
(3)仕上がりが綺麗
・アルミブロックに上下からネジが入り込む構造だと、
アルミブロックの上下からから材料が漏れる。
漏れる場合は、水道工事用のテープなどをノズルやネジに巻き、 ガスケットのようにして漏れを塞ぐと良い。
さらに、加熱状態で、もう一度締め込むと良い。
ノズルが長く、上方に伸び、
PTFEチューブまで届く構造なら漏れるところが無い。
・糸を引かない構造 リトラクションをいくらやっても、
溶けた材料がノズル内部に溜まっていれば糸をひく、
シャッターや蓋をつけられないか等、色々アイデアもあるが、
アルミブロックの体積が多いとその分溶けてるので、
リトラクションしても無駄。
引っ込めても、中で溶けてるので糸をひく。
理想としては、本当に直前まで個体で居て欲しい。
それが無理ならアルミブロックは5mm位の薄さで有って欲しい。
VolcanoやPicoはアルミブロックの厚みがかなりあるので、
相当糸を引くと思う。
・ノズルの加工が綺麗であること
ノズルから出た材料は少し潰されながら引きずられて積層される。
引きずられる時に前後左右どの方向に動いても、
綺麗に押しつぶされるように綺麗な加工状態である必要がある。
https://www.youtube.com/watch?v=icLKTOCH9VQ
詰まるのがよっぽど嫌だったのだろう、
とうとう水冷を作った人がいる。
上記URLのレビューによれば、品質は非常に残念な結果だ。
ノズルの重要な点は以下
(1)詰まりにくい
詰まりにくくするには、溶ける部分が多いとダメ、
ヒートシンク部分がきちんと冷やされないと、
上の方まで溶けて、押しても押せなくなって詰まる。
理想としてはノズルの直前まで、個体で居て欲しい。
(2)高温に出来る
上の方が溶けないように樹脂を使った物もあるが、
これだと高温に出来ない。
高温にできないと様々な素材に対応出来ない。
(例えば、ColorFabXTとか)
(3)仕上がりが綺麗
・アルミブロックに上下からネジが入り込む構造だと、
アルミブロックの上下からから材料が漏れる。
漏れる場合は、水道工事用のテープなどをノズルやネジに巻き、 ガスケットのようにして漏れを塞ぐと良い。
さらに、加熱状態で、もう一度締め込むと良い。
ノズルが長く、上方に伸び、
PTFEチューブまで届く構造なら漏れるところが無い。
・糸を引かない構造 リトラクションをいくらやっても、
溶けた材料がノズル内部に溜まっていれば糸をひく、
シャッターや蓋をつけられないか等、色々アイデアもあるが、
アルミブロックの体積が多いとその分溶けてるので、
リトラクションしても無駄。
引っ込めても、中で溶けてるので糸をひく。
理想としては、本当に直前まで個体で居て欲しい。
それが無理ならアルミブロックは5mm位の薄さで有って欲しい。
VolcanoやPicoはアルミブロックの厚みがかなりあるので、
相当糸を引くと思う。
・ノズルの加工が綺麗であること
ノズルから出た材料は少し潰されながら引きずられて積層される。
引きずられる時に前後左右どの方向に動いても、
綺麗に押しつぶされるように綺麗な加工状態である必要がある。
2016年8月9日火曜日
PICO-8の書き方
https://www.youtube.com/watch?v=ZuaLuMhwcc8
こちらを参考にしました。
英語分からなくても動画見てりゃ分かると思う。
(実際、英語喋ってないで、「お!」とか「あぁ!」とか「ハァハァ」言ってるだけなんで)
まぁ、でも 分かんないかもしれないんで、やり方書いておきます。
(1)PICO-8が起動したらENTER押してコンソールへ
(2)コンソールからREBOOTと入れてENTER
(3)再起動するのでENTERを押すとEDITできます
(4)さらにENTERをするとコンソールへ移るのでRUNで実行
(5)コンソールでSAVE [ファイル名]で保存できます。
(6)コンソールでHELPと入れると色々出てくるんで、後は自分でやってみてください。
補足1:初期化は_INIT、画面書き換えの直前は_UPDATE、画面書き換えは_DRAWというファンクション名で記述すれば良いです。
補足2:言語はLUAだけど、Math系ライブラリは短縮形で実装されています。こちらを参考にしてください。https://gist.github.com/josefnpat/bfe4aaa5bbb44f572cd0 math.randomはrnd()を使えとか書かれています。
こちらを参考にしました。
英語分からなくても動画見てりゃ分かると思う。
(実際、英語喋ってないで、「お!」とか「あぁ!」とか「ハァハァ」言ってるだけなんで)
まぁ、でも 分かんないかもしれないんで、やり方書いておきます。
(1)PICO-8が起動したらENTER押してコンソールへ
(2)コンソールからREBOOTと入れてENTER
(3)再起動するのでENTERを押すとEDITできます
(4)さらにENTERをするとコンソールへ移るのでRUNで実行
(5)コンソールでSAVE [ファイル名]で保存できます。
(6)コンソールでHELPと入れると色々出てくるんで、後は自分でやってみてください。
補足1:初期化は_INIT、画面書き換えの直前は_UPDATE、画面書き換えは_DRAWというファンクション名で記述すれば良いです。
補足2:言語はLUAだけど、Math系ライブラリは短縮形で実装されています。こちらを参考にしてください。https://gist.github.com/josefnpat/bfe4aaa5bbb44f572cd0 math.randomはrnd()を使えとか書かれています。
FLEKS3Dその後
みんな買え!
BuildTak より断然良いぞ!
ただし、ABSはやはりヒートベッドつけとかないとダメ!
面倒くさいんで最近ABS全然やってない。PLAのが匂わないし、PLA系統がもっと進化してくれることを切に願います。
2016年8月1日月曜日
PocketChip Keyboard issue
https://bbs.nextthing.co/t/attempting-to-fix-non-working-keys-and-a-warning/6207/6
本当に残念なことだけど、PocketChipのキーボードが効かないという問題があるようだ。
BackSpaceとENTERをが効かないという人が多いが、自分の手持ちの1台もまったく同じ症状だった。
その1台は社員用に買ったもので、すぐに渡してしまったので、気がつくのが遅れた。
サポートに連絡して、「交換するよ」と返事を頂いている。
基盤に貼り付ける金属のシートがまずいようで、接触が悪いみたいだ。
本当に残念なことだけど、PocketChipのキーボードが効かないという問題があるようだ。
BackSpaceとENTERをが効かないという人が多いが、自分の手持ちの1台もまったく同じ症状だった。
その1台は社員用に買ったもので、すぐに渡してしまったので、気がつくのが遅れた。
サポートに連絡して、「交換するよ」と返事を頂いている。
基盤に貼り付ける金属のシートがまずいようで、接触が悪いみたいだ。
2016年7月31日日曜日
2016年7月30日土曜日
PocketChipのPico-8でLifeGame作ってみた
とりあえず定番から、
以下にソースも載せとく
JavaScript版と比べてみると、わりとそのままだなってのがわかると思う
ar={}
function _init()
cls()
for i=0,31 do
ar[i] = {}
for j=0,31 do
ar[i][j] = flr(rnd(2))
end
end
end
function lput(x,y,c,f)
xx = x*4
yy = y*4
if f==1 then
rectfill(xx,yy,xx+4,yy+4,c)
else
rect(xx,yy,xx+4,yy+4,c)
end
end
function copybuff()
for i=1,30 do
ar[i][0] = ar[i][30]
ar[i][31] = ar[i][1]
end
for j=1,30 do
ar[0][j] = ar[30][j]
ar[31][j] = ar[1][j]
end
ar[0][0] = ar[30][30]
ar[31][31] = ar[1][1]
ar[0][31] = ar[30][1]
ar[31][0] = ar[1][30]
end
function deadoralive()
br = {}
for i=0,31 do
br[i] = {}
for j=0,31 do
br[i][j] = ar[i][j]
end
end
for i=1,30 do
br[i] = {}
for j=0,31 do
br[i][j] = ar[i][j]
end
end
for i=1,30 do
for j=1,30 do
cnt = br[i-1][j-1] + br[i][j-1] + br[i+1][j-1]
+ br[i-1][j ] + br[i+1][j ]
+ br[i-1][j+1] + br[i][j+1] + br[i+1][j+1]
if br[i][j]==1 and (cnt==2 or cnt==3) then
elseif br[i][j]==0 and cnt==2 then
elseif br[i][j]==0 and cnt==3 then
ar[i][j] = 1
else
ar[i][j] = 0
end
end
end
end
function draw()
for i=1,30 do
for j=1,30 do
lput(i,j,1,1)
if ar[i][j]==1 then
lput(i,j,7,1)
else
lput(i,j,2,0)
end
end
end
end
function _draw()
copybuff()
deadoralive()
draw()
end
2016年7月26日火曜日
lifegame (JavaScript)
lifegame 作ってみた
短くするのが目的ではなく、何をしてるのか分かるように書いたつもり
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<title>lifegame</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>lifegame</h1>
<canvas id ="c" width="300" height="300" />
<script src="script.js"></script>
</body>
</html>
=====Javascript=====
window.addEventListener('load', init(30,30), false);
function init(m,n){
// 横方向の配列作って、
var la = new Array();
// 縦方向に配列を追加する
for(i=0;i<m+2;i++){
la[i] = new Array();
for(j=0;j<n+2;j++){
la[i][j] = Math.floor(Math.random()*2);
}
}
DrawProc(la,m,n);
}
function DrawProc(la,m,n)
{
CopyBuff(la,m,n);
DeadOrAlive(la,m,n);
draw(la,m,n);
setTimeout(DrawProc, 100,la,m,n);
}
function CopyBuff(la,m,n)
{
// 上下をコピー
for(i=1;i<m+1;i++){
la[i][0] = la[i][n];
la[i][n+1] = la[i][1];
}
// 左右をコピー
for(j=1;j<n+1;j++){
la[0 ][j] = la[m][j];
la[m+1][j] = la[1][j];
}
// 四隅をコピー
la[ 0][ 0] = la[m][n];
la[m+1][n+1] = la[1][1];
la[ 0][n+1] = la[m][1];
la[m+1][ 0] = la[1][n];
}
function DeadOrAlive(la,m,n)
{
// la から lbにコピー
var lb = new Array();
for(i=0;i<m+2;i++){
lb[i] = new Array();
for(j=0;j<n+2;j++){
lb[i][j] = la[i][j];
}
}
// lb を評価しながらla に設定
for(i=1;i<m+1;i++){
for(j=1;j<n+1;j++){
var cnt = lb[i-1][j-1]+lb[i][j-1]+lb[i+1][j-1]
+ lb[i-1][j ] +lb[i+1][j ]
+ lb[i-1][j+1]+lb[i][j+1]+lb[i+1][j+1];
if(lb[i][j]==1&&(cnt==2||cnt==3)){
// 生きててカウントが2か3
// そのまま生きる
}else if(lb[i][j]==0&&cnt==2){
// そのまま死んどく
}else if(lb[i][j]==0&&cnt==3){
// 生まれる
la[i][j] = 1;
}else{
// それ以外は死
la[i][j] = 0;
}
}
}
}
function draw(la,m,n){
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
ctx.beginPath();
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if (la[i+1][j+1]==1){
ctx.fillStyle = "white";
ctx.fillRect(i*10, j*10, 10, 10);
}else{
ctx.fillStyle = "gray";
ctx.fillRect(i*10, j*10, 10, 10);
ctx.strokeStyle = "white";
ctx.strokeRect(i*10, j*10, 10, 10);
}
}
}
}
=====css=====
@charset "UTF-8";
#c {
color: gray;
background-color:gray;
}
2016年7月17日日曜日
重複しない乱数生成(JavaScript)
あまりにも考えなしに重複しない乱数生成とかウェブで公開している連中がいるので、正解をここに上げとく
ちなみに不正解なのは、
一度出た乱数を除外したり、配列に入れといてかき混ぜたりするやり方です。
なんで不正解なのかよく考えて欲しい。
下のやり方は、配列に入れといて、出たらその数を消すやり方
いわゆる物理的世界でのビンゴゲームと一緒のやり方だ。
ついでに左からのゼロ補完もやってる
文字の妥当性チェックは面倒なので数値かどうかだけ、マイナスだったり小数だったりはチェックしてない
----html----
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<title>重複のない乱数</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>重複のない乱数</h1>
乱数の個数<br>
<input type=text id="num" /><input type =button value = "開始" onClick="Start()" />
<div id="test"></div>
<script src="script.js"></script>
</body>
</html>
----css----
@charset "UTF-8";
#test {
color: blue;
}
window.addEventListener('load', function(e) {
// ここでは特に何もしない
}, false);
function initCollection(n,nums) {
// nums 配列に1-nをセットする
for(var i=0;i<n;i++){
nums[i] = i+1;
}
}
function Start(){
// 配列を定義
var nums = new Array();
// test のエリアを消す
document.querySelector('#test').innerHTML = "";
// 入力された値を取得
var n = document.getElementById("num").value;
// 数値判定
if(isNaN(n)){
window.alert("数値を入れてください");
document.getElementById("num").value = "";
return;
}
// nums 配列を初期化
initCollection(n,nums);
// zero 補完用文字列を準備
var nLen = n.length
var zero='';
for(var i=0;i<nLen;i++){
zero += '0';
}
var cnt = 1;
for(var i=n;i>0;i--){
// 乱数生成
var rnd = Math.floor(Math.random()*i);
// カウントとnums のrnd番目を表示
document.querySelector('#test').innerHTML +=
(zero+cnt).slice(-nLen) +':' + nums[rnd]+ '<br>';
// rnd 番目を削除
nums.splice(rnd,1);
// カウントをインクリメント
cnt++;
}
}
登録:
投稿 (Atom)
-
どうも書かなくてはならないネタが出来てしまった。 マルチスレッドには欠かせないSleep(0)についてだ。 自分はSleep(0)を多用していた。 MSDNの記述 によると 「中断時間として 0ms を指定してこの関数を呼び出すと、現在のスレッドは自らに割り当てられている...
-
https://social.msdn.microsoft.com/Forums/vstudio/en-US/f0502813-9c4f-4b45-bab8-91f98971e407/popup-popupstaysopen-togglebutton-and-data-bindi...







