復旧方法!
node_moduleが怪しげになってうごかんくなった 以下の手順で成功
node20にして失敗しだしたのでnode18にもどして (どうやったかというと
https://nyan-kyun.verse.jp/wordpress/2024/09/25/git-sourcetree03/#google_vignetteを
参考に nvm でヴァージョン指定!)
https://qiita.com/kamiro/items/b509e30fa62279a82bbcの5の方法で復旧できた
-------------------hcsr04 他----------------
https://denshibu.blog.fc2.com/blog-entry-114.html?sp を参考にPingFirmata.inoをunoへ
インストするのがキモ!
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
// Proximityオブジェクトを作成
var proximity = new five.Proximity({
controller: "HCSR04",
pin: 7,
freq: 10000
});
// データを取得して距離を表示
proximity.on("data", function() {
console.log("Proximity: ");
console.log(" cm : ", this.cm);
console.log(" in : ", this.in);
console.log("-----------------");
});
// 「change」イベント:障害物が変更されたときに発生する
proximity.on("change", function() {
console.log("The obstruction has moved.");
});
});
-----------------------------led blink------------------------------------------
https://johnny-five.io/examples/ :: miscelaneous examples
https://qiita.com/masato/items/9dad71eca295088e14e5 :: 補遺
{
"name": "johnny-five-start",
"version": "0.0.1",
"private": true,
"dependencies": {
"johnny-five": "0.8.48"
},
"scripts": {"start": "node app.js"}
}
上記のpackage.jsonでnpm startできた、ちなみにctl-c x 2でexitできた!
ただしapp.jsはled1.jsを参考に以下とした
const{Board,Led} = require("johnny-five");
const board = new Board();
board.on("ready", function() {
const led = new Led(12);
led.blink(1000);
});
---------led1.js-----------------------------------------
const { Board, Led } = require("johnny-five");
const board = new Board();
board.on("ready", () => {
const led = new Led(12);
led.on();
board.on("exit", () => {
led.off();
});
});
node led1.jsでLedOn、ctl-c x 2でLedOff!
--------------servo1.js--------------------
servo :: https://dev.classmethod.jp/articles/genuino-101johnny-five-servo/
var five = require('johnny-five');
// Genuino が接続されているポート番号 ( `/dev/tty*` (Mac/Linux) or `COM*` (Windows) )
var board = new five.Board();
board.on('ready', function() {
var servo = new five.Servo({
'pin' : 10
});
this.repl.inject({
'servo' : servo
});
servo.sweep({
'range' : [45, 135],
'interval' : 10000
});
});
----------------dcmotor using drv8833---------------
https://qiita.com/yoshi_iwa/items/95a0cd833508652c1dfb にあるコードで成功
{port:...}をとりpwm 3,dir 4 (arduino unoのピン仕様にて)に変更して成功
ただl298n moduleのほうが説明詳しそう
--------------------lcd using aqm0802---------------------------------------
https://l-w-i.net/t/arduino/lcd_001.txt :: aqm0802成功 3.3v!
// AQM0802A-RN-GBW - I2C接続小型液晶 8文字x2行
// 1. VDD(3.3Vに接続)
// 2. RESET (*)未使用
// 3. SCL(クロック)
// 4. SDA(データ)
// 5. GND
var five = require("johnny-five");
var board = new five.Board();
var LCD_ADR = 0x3E; // コントローラIC ST7032iのI2Cアドレス(固定)
var clm_list = [ // 送信コマンドを変えることで表示行を変える
0x80, // 0行目表示
0xc0 // 1行目表示
];
//
// 関数定義
//
// LCD制御
var lcd_cmd = function(cmd) {
board.io.i2cWrite(LCD_ADR, 0x00, cmd);
}
// データ送信
var lcd_data = function(lcd_data) {
board.io.i2cWrite(LCD_ADR, 0x40, lcd_data);
}
// 出力位置指定(行, 列)
var lcd_setCursor = function(row, clm){
lcd_cmd(clm_list[row] + clm);
}
// LCDクリア
var lcd_clear = function() {
lcd_cmd(0x01);
}
// LCD初期化
// (*)コントラストは好みに応じて微調整するとよい
var lcd_init = function() {
board.io.i2cConfig();
lcd_cmd(0x38); // 画面サイズ指定(8文字 x 2行)
lcd_cmd(0x39); // 拡張コマンド設定
lcd_cmd(0x14); // 内部OSC周波数
lcd_cmd(0x7A); // コントラスト
lcd_cmd(0x56); // 電源(3V)/アイコンOFF/コントラスト
lcd_cmd(0x6A); // フォロワー操作
lcd_cmd(0x38); // 拡張コマンド設定終了
lcd_cmd(0x0C); // 表示ON
lcd_clear(); // LCDクリア
}
//
// メイン
//
board.on("ready", function() {
// LCD出力
var lcd_print = function(msg) {
for(var i = 0; i < msg.length; i++) {
lcd_data(msg.charCodeAt(i)); // 1文字出力
}
}
lcd_init(); // LCD初期化
lcd_clear(); // LCDクリア
lcd_setCursor(0, 0); // カーソル位置(行, 列)
lcd_print("I Love"); // 表示文字列
lcd_setCursor(1, 0);
lcd_print("Arduino!");
});
-------------------button---piezo---------普通にできた----------------
https://johnny-five.io/examples/button/
https://johnny-five.io/examples/piezo/
------------------------bme280----------------------
arduinoUnoの3.3vでbme280駆動できた !
https://qiita.com/7L4QOI/items/41358541af5b1abf719c 成功!
var five = require("johnny-five");
var board = new five.Board();
board.on('ready', function () {
var bme280 = new five.IMU({
controller: "BME280",
address: 0x76, // optional ここ重要
});
bme280.on("data", function(e,data) {
if( this.barometer.pressure >90 ){ //気圧の初回値が変なので、異常値は読み飛ばす これも重要
console.log(" celsius(摂氏) : ", this.temperature.celsius);
console.log(" pressure(hPa) : ", this.barometer.pressure *10);
console.log(" relative humidity: ", this.hygrometer.relativeHumidity);
console.log("--------------------------------------");
process.exit(); //終了 これで単発処理となる!
}
});
})
--------------------------
0 件のコメント:
コメントを投稿