ご回答いただき、ありがとうございます。
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
となります。
ご対応をよろしくお願いいたします。
ご回答をいただき、ありがとうございます。
追記がないことは承知いたしました。
一つのファイルにまとめたいので、
前者の方法を考えていますが、具体的にはどのようにすればよいでしょうか?
聞いてばかりで、大変申し訳ありませんが
よろしくお願いいたします。