Makato-kan が 2024年05月17日11時03分52秒 に編集
初版
タイトルの変更
コピペ不要 digisparkでDS18B20のID取得する
タグの変更
Digispark
DS18B20
Arduino_IDE
記事種類の変更
製作品
本文の変更
#### 初めに DS18B20という安価で使いやすい温度センサーがあります。 複数同時接続して使う場合はセンサーのIDを取得すると便利です。 それで、IDをノートパッドなどに直接書き込めるようにしたもの作りました #### 部品表 Digispark 10kΩ抵抗 なるべく小さいポリスイッチ(ポリフューズ) 配線材料 #### 配線 DigisparkのVCC,GND,P2を使います DS18B20はdataとDigisparkのP2を接続します 10kΩ抵抗はポリフューズを経由してVCCとP2を接続します #### プログラム DS18B20センサーのライブラリをインストールすると使えるサンプルプログラムをベースに 接続ピンを決め打ちにして、ソフトウェアキーボードでIDを出力するようにいじりました。 ```arduino:search-DS18B20 // FILE: oneWireSearch.ino // AUTHOR: Rob Tillaart // VERSION: 0.1.02 // PURPOSE: scan for 1-Wire devices + code snippet generator // DATE: 2015-june-30 // URL: http://forum.arduino.cc/index.php?topic=333923 // // inspired by http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html // // Released to the public domain // // 0.1.00 initial version // 0.1.01 first published version // 0.1.02 small output changes #include "DigiKeyboard.h" #include <OneWire.h> int pin = 2; //DigisparkにDS18B20を接続したピン番号 void setup() { DigiKeyboard.update(); //digitalWrite(pin, HIGH); //このプルアップでは動作しませんでした。 DigiKeyboard.print(""); findDevices(pin); } void loop() { } uint8_t findDevices(int pin) { OneWire ow(pin); uint8_t address[8]; uint8_t count = 0; if (ow.search(address)) { do { count++; for (uint8_t i = 0; i < 8; i++) { DigiKeyboard.print("0x"); if (address[i] < 0x10) DigiKeyboard.print("0"); DigiKeyboard.print(address[i], HEX); if (i < 7) DigiKeyboard.print(","); } DigiKeyboard.println(""); } while (ow.search(address)); } return count; } ``` #### 環境設定 "Arduino_IDEを使っています" ボードマネージャー ”http://digistump.com/package_digistump_index.json” を 追加してdigisparkをインストールしますが 現在リンク切れのようで [Unofficial list of 3rd party boards support urls](https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls)に記載のある "Digistump maintained: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json" を基本設定に追加してdigisparkをインストールします。 #### 気づいた事 パソコンのUSB端子に差してから何らかの応答がDigisparkから無いとUSBのエラーになってしまうので DigiKeyboard.update();の後にDigiKeyboard.print("");を実行しています。 ![製作例](https://camo.elchika.com/6a814f8420de7cbe4dfbd54d48894a4afca2b833/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f64626363303834622d336139312d343163362d383064382d653266636131366331393135/) #### 気付いた事 DS18B20のVCCとGND逆に接続して電気入れると5秒くらいでDS18B20が焦げ臭くなります 危険なのでポリスイッチなどを経由してVCCを供給するようにしましょう