ご回答いただき、ありがとうございます。
this.i2c = obniz.getI2CWithConfig(this.params);の行を消したら
エラーが出なくなりました。
しかし、PC上でプログラムをはしらせると
エラーが出ないのが不思議です。
理由がわかれば教えていただきたいです。
オブナイズの3Dデータの件は承知いたしました。
ご確認いただき、ありがとうございます。
以上、よろしくお願いいたします。
ご回答いただき、ありがとうございます。
this.i2c = obniz.getI2CWithConfig(this.params);の行を消したら
エラーが出なくなりました。
しかし、PC上でプログラムをはしらせると
エラーが出ないのが不思議です。
理由がわかれば教えていただきたいです。
オブナイズの3Dデータの件は承知いたしました。
ご確認いただき、ありがとうございます。
以上、よろしくお願いいたします。
ご回答いただき、ありがとうございます。
早速、試してみましたが、解決されませんでした。
複数回同じエラーが出ておりましたが
1回になりました。
最初は測定毎にエラーが出ており
アドバイス頂いたfor文の外に出すことで
最初の1回目のエラーのみになったと思います。
他におかしなところはないでしょうか?
よろしくお願いいたします。
色々とご回答いただき、ありがとうございます。
19年5月末にご質問いたしましたが
進捗はいかがでしょうか?
ご確認をお願いいたします。
質問内容は
PC上で実行すると、エラーは表示されないのですが
スマホ上で行うと no more I2C Available.max=1
やno more i2c Availableというエラーが表示されます。
プログラムは下記のようになります。
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@2.0.3/obniz.js"></script>
</head>
<body>
<script>
var obniz = new Obniz("aaaaaaaa");
class SS {
constructor() {
this.keys = ['vcc', 'sda', 'scl', 'i2c', 'gnd'];
this.requiredKeys = [];
this.address = 0x38;
this.regAdrs = {};
this.regAdrs.ctrl = 0x40;
this.regAdrs.modectrl1 = 0x41;
this.regAdrs.modectrl2 = 0x42;
this.regAdrs.interrupt = 0x60;
this.regAdrs.persistence = 0x61;
this.regAdrs.sensorRed = 0x50;
this.regAdrs.sensorGreen = 0x52;
this.regAdrs.sensorBlue = 0x54;
this.regAdrs.sensorClear = 0x58;
}
static info() {
return {
name: 'SS',
};
}
async wired(obniz) {
this.obniz = obniz;
obniz.setVccGnd(this.params.vcc, this.params.gnd, '3v');
await this.obniz.wait(100);
this.params.clock = 100000;
this.params.pull = '3v';
this.params.mode = 'master';
this.i2c = obniz.getI2CWithConfig(this.params);
await this.obniz.wait(100);
}
async init() {
obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"});
obniz.i2c0.write(this.address, [this.regAdrs.ctrl, 0x70,0x8D]);
obniz.i2c0.write(this.address, [this.regAdrs.modectrl1, 0x70,0x2D]);
obniz.i2c0.write(this.address, [this.regAdrs.modectrl2, 0x70,0x10]);
}
async getVal() {
obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"});
obniz.i2c0.write(this.address, [this.regAdrs.sensorRed,0x71]);
let ret = await obniz.i2c0.readWait(this.address, 12);
let level = [0, 0, 0, 0];
level[0] = (ret[1] << 8) | ret[0];
level[1] = (ret[3] << 8) | ret[2];
level[2] = (ret[5] << 8) | ret[4];
level[3] = (ret[9] << 8) | ret[8];
return level;
}
}
if (typeof module === 'object') {
module.exports = SS;
}
obniz.onconnect = async function() {
for(var i=0;i<100;i++){
Obniz.PartsRegistrate(SS);
var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3});
colorSens.init();
var ret = await colorSens.getVal();
console.log("getVal:"+ ret);
var red = ret[0];
var green = ret[1];
var blue = ret[2];
var ir = ret[3];
console.log("Red:"+ red);
console.log("Green:"+ green);
console.log("Blue:"+ blue);
console.log("IR:"+ ir);
await obniz.wait(1000);
}
}
</script>
</body>
</html>
ご回答いただき、ありがとうございます。
ご回答の内容で承知いたしました。
お忙しい所、ご対応いただき、ありがとうございました。
今後ともよろしくお願いいたします。
ご連絡をありがとうございます。
勉強になります。
教えていただいたURLより、イメージとしては
オブナイズに端子A,Bを接続し、端子C,Dに5Vラインの回路を接続すると
いう認識でよろしいでしょうか?
また、オブナイズ単体でリレーのような動作は可能でしょうか?
ご確認をお願いいたします。
オブナイズ自体から5Vを出力したり0Vを出力したりしてスイッチングさせるのではなく、回路上の5Vラインをオープンさせたり、ショートさせたりしたいですが、どのようにすればよいでしょうか?
ご連絡が遅くなり、大変申し訳ありません。
ご回答いただき、ありがとうございます。
内容を確認いたしました。
私の思っていた通りのことができました。
お忙しい所、
色々とご対応いただき、ありがとうございました。
不明点等がでましたら、再度、ご連絡させていただきますので
その際はよろしくお願いいたします。
ご回答いただき、ありがとうございます。
ご回答内容を参考にプログラムを作成して
一応、データの追加は出来たのですが
なぜか途中にカンマが入ったり入らなかったりします。
これを直すことはできるのでしょうか?
また、データの追加方法を縦並びにすることは可能でしょうか?
下記のプログラムはカラーセンサの値を取り出した例です。
obniz.onconnect = async function() {
var j= [];
for(var i=0;i<5;i++){
Obniz.PartsRegistrate(SS);
var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3});
colorSens.init();
var ret = await colorSens.getVal();
console.log("getVal:"+ ret);
var red = ret[0];
var green = ret[1];
var blue = ret[2];
var ir = ret[3];
console.log("Red:"+ red);
console.log("Green:"+ green);
console.log("Blue:"+ blue);
console.log("IR:"+ ir);
var dbx = new Dropbox.Dropbox({ accessToken: '111111' });
dbx.filesDownload({path: '/suncon.txt'})
.then(function (response) {
var blob = response.fileBlob;
var reader = new FileReader();
reader.addEventListener("loadend", function() {
console.log(reader.result); // will print out file content
j[i]=reader.result;
});
reader.readAsText(blob);
})
.catch(function (error) {
alert(error);
})
dbx.filesUpload({path: '/11111.txt', contents:j + "Red:"+ red + "Green:"+ green + "Blue:"+ blue + "IR:"+ ir, mode: 'overwrite' })
.catch(function(error) {
alert(error);
});
await obniz.wait(5000);
}
txtファイルの内容は
,Red:1693Green:3562Blue:1758IR:1259,Red:1660Green:3497Blue:1726IR:1142,,Red:1693Green:3562Blue:1758IR:1259Red:1644Green:3454Blue:1708IR:1177Red:1657Green:3485Blue:1719IR:1173
となります。
ご対応をよろしくお願いいたします。
ご回答をいただき、ありがとうございます。
追記がないことは承知いたしました。
一つのファイルにまとめたいので、
前者の方法を考えていますが、具体的にはどのようにすればよいでしょうか?
聞いてばかりで、大変申し訳ありませんが
よろしくお願いいたします。
早速、2の方法で、保存方法を勉強しているのですが
データは上書きしかできないのでしょうか?
上書きをせず、定期的にデータを取得するのはどのようにすればよいでしょうか?
ご確認をよろしくお願いいたします。
ご連絡が遅くなり、大変申し訳ありません。
ご回答いただき、ありがとうございます。
内容を確認いたします。
不明点等があれば、再度、ご連絡させていただきますので
よろしくお願いいたします。
センサ等の取得した値を保存するにはどのような方法があるのでしょうか?
クラウド上でデータ保存して、後からそのデータをダウンロードして確認するということはできるのでしょうか?
ご回答をありがとうございます。
ご連絡が遅くなり、大変申し訳ありません。
ご返信が来るまでの間、色々と調べた所、初期化等の信号を送る前に
読込もしくは書込動作をさせる信号を送ることで一応、動作いたしました。
しかし、スマホ上で実行すると、動作はしているみたいですが
no more I2C Available.max=1というエラーが出るのですが
どのように修正すればよいのでしょうか?
また、全然話が変わってしまいますが
オブナイズ自体の3Dデータはあるのでしょうか?
ご確認をお願いいたします。
初めて投稿いたします。
よろしくお願いいたします。
現在、obnizを使用してカラーセンサ(ローム製BH1749NUC)を動作させようとしているのですが、動作できておりません。
プログラム内容を下記に示しますので、アドバイスをお願いいたします。
プログラムは各色の値を読み取る内容になります。
プルアップ抵抗には4.7kΩを使用しています。
現状動作は各色の値は0のみとなります。
ご回答をよろしくお願いいたします。
<!-- HTML Example -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@2.0.3/obniz.js"></script>
</head>
<body>
<script>
var obniz = new Obniz("********");
class SS {
constructor() {
this.keys = ['vcc', 'sda', 'scl', 'i2c', 'gnd'];
this.requiredKeys = [];
this.address = 0x38;
this.regAdrs = {};
this.regAdrs.ctrl = 0x40;
this.regAdrs.modectrl1 = 0x41;
this.regAdrs.modectrl2 = 0x42;
this.regAdrs.interrupt = 0x60;
this.regAdrs.persistence = 0x61;
this.regAdrs.sensorRed = 0x50;
this.regAdrs.sensorGreen = 0x52;
this.regAdrs.sensorBlue = 0x54;
this.regAdrs.sensorClear = 0x58;
}
static info() {
return {
name: 'SS',
};
}
async wired(obniz) {
this.obniz = obniz;
obniz.setVccGnd(this.params.vcc, this.params.gnd, '3v');
await this.obniz.wait(100);
this.params.clock = 100000;
this.params.pull = '3v';
this.params.mode = 'master';
this.i2c = obniz.getI2CWithConfig(this.params);
await this.obniz.wait(100);
}
async init() {
obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"});
obniz.i2c0.write(this.address, [this.regAdrs.ctrl, 0x8D]);
obniz.i2c0.write(this.address, [this.regAdrs.modectrl1, 0x2D]);
obniz.i2c0.write(this.address, [this.regAdrs.modectrl2, 0x10]);
}
async getVal() {
obniz.i2c0.start({mode:"master", sda:1, scl:2, clock:100000, pull:"3v"});
obniz.i2c0.write(this.address, [this.regAdrs.sensorRed]);
let ret = await obniz.i2c0.readWait(this.address, 12);
let level = [0, 0, 0, 0];
level[0] = (ret[1] << 8) | ret[0];
level[1] = (ret[3] << 8) | ret[2];
level[2] = (ret[5] << 8) | ret[4];
level[3] = (ret[9] << 8) | ret[8];
return level;
}
}
if (typeof module === 'object') {
module.exports = SS;
}
obniz.onconnect = async function() {
Obniz.PartsRegistrate(SS);
var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3});
colorSens.init();
var ret = await colorSens.getVal();
console.log("getVal:"+ ret);
var red = ret[0];
var green = ret[1];
var blue = ret[2];
var ir = ret[3];
console.log("Red:"+ red);
console.log("Green:"+ green);
console.log("Blue:"+ blue);
console.log("IR:"+ ir);
}
</script>
</body>
</html>