2025年3月9日日曜日

Johnny-fve on linux(hcsr04,led,servo,motor,aqm0802,button,bme280) joystick,shiftregister,lm35,pir,piezo,gps

復旧方法!

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 件のコメント:

コメントを投稿