2020年4月にKindle出版した『発達障害考察本2:心理校閲』(ASIN: B0855RHD29)は、新装版を制作することにした為、2023年4月より販売を一時停止しております。
これに伴い、新装版を販売するまでの間は当該書籍に収録していた旧記事を再掲載することにしたしました。
あくまでも期間限定ですので、気になる方は今のうちにお読みください。
psycho revision
2020年4月にKindle出版した『発達障害考察本2:心理校閲』(ASIN: B0855RHD29)は、新装版を制作することにした為、2023年4月より販売を一時停止しております。
これに伴い、新装版を販売するまでの間は当該書籍に収録していた旧記事を再掲載することにしたしました。
あくまでも期間限定ですので、気になる方は今のうちにお読みください。
以前もお伝えしたとおり、本日4月8日にAmazonKindleにて販売中の拙著『発達障害考察本:31歳までグレーゾーンだった私がやってきた改善法』(以下、考察本1巻)を改訂版に更新しました。
今回の改訂に伴い、通常販売価格も改定しております。
更新内容は下記を参考にしてください。
※電子書籍版を改訂前に購入済みの読者さまの中で、改訂版への更新を希望される方はAmazonカスタマーサポートにその旨をご依頼ください。詳細は本記事の最下部をお読みください。なお、ペーパーバック版購入者向けに追加収録する記事を無料公開しておりましたが、4月8日をもって非公開とさせていただきました。あしからずご了承ください。
前回の改訂は「新装版仕様」への改訂であり、横書き本から縦書き本に変わり、表紙のデザインも大きく変わりました。
そして今回の更新は「完全版」への改訂です。
今の私の意向ですが、最後の更新のつもりです。
◇ ◇
少しだけ自分の話をさせていただきます。
元々、発達障害考察本は1巻のみを制作し、続刊を制作する計画ではありませんでした。読者には1日も早く発達障害のことなんて気にしなくてもいい日常を送ってほしいからです。そのポリシーに沿えば、発達障害の話を小出しにして何冊も連れ回すようなことは避けたく、考察本1巻には私の改善法の全てを詰め込んで世に出しました。
それでも、当初は思いつかなかった本の形が浮かんだり、電子書籍作りの楽しさの方が優りまして、2巻〜1.5巻と続刊を制作しました。当時はそれでよかったのですが、やはり続刊の出版は自分の本意ではないことにここ1〜2年悩んでいました。
2巻と1.5巻の内容は1巻にてお伝えした改善法の確立に至るまでの物語です。興味のある人もいるだろうという想定で制作しましたが、改善法を実行する上で必須となる内容ではありません。これをナンバリングとして制作・出版したことが間違いでした。
そうして、昨年の12月。初めてペーパーバック版の制作・出版をしたわけですが、実はその制作中に全てを解決する完全版の構想ができまして、ペーパーバック版の制作〜販売などにネックがなければ、今回の改訂で制作した完全版へ後々切り替えることにしていたわけです。
4月8日現在、考察本1巻と一部の書籍を除き、他の書籍を販売停止に切り替えております。永続的なものではなく、より最適な形態に更新するまでの対応です。
現在販売中のKindle書籍は下記リンクからご確認ください。
現在の意向としては、考察本2巻と1.5巻はナンバリングとしてではなく外伝的な扱いとして作り直す予定です。その他の本は原稿データの品質を見直し、それが終わり次第、順次販売を再開する予定です。
note(HYOGOKURUMI|note)にて連載中の『普通学 普通の人に成る方法』と、当サイト内にて掲載している『言壁の棺』は、記事を非公開にしました。元々こちらは発達障害を治療するデバイスの開発、その代替手段として執筆したものなのですが、現在は当サイト内のプロジェクトページにて「ワードカウンター制作プロジェクト」を発信していますので不要となりました。
仕事の転職に伴う新生活への移行など、リアルを最優先に考えていますので、今後、新しい活動を発足する予定は今のところありません。
今後は暇を見つけて、販売停止中の書籍の改訂作業をぼちぼちをやっていきます。プログラミングの勉強も続けていきたいので、ワードカウンター制作プロジェクトは少しずつ進展があるかと思います。
SNSでの発信は続けていきます。セール情報や進捗、続報のお知らせに利用していくつもりです。
今言えるのはこれくらいですm(_ _)m
本書を改訂前に購入済みの読者さまに向けたご案内です。今回の改訂は、全ての読者さまに向けた一斉更新の申請をしておりません。
改訂版への更新を希望される読者さまは、個別にAmazonカスタマーサービスへご依頼をしていただく必要がございます。
※自動更新をONにされている方は自動ダウンロードされるはずですが、自動更新がされない場合は下記のようにAmazonカスタマーサービスにご相談ください。
1. デジタルサービス&デバイスサポート (http://www.amazon.co.jp/kindlesupport) ページを開きます。
2. ページ左側の、「こちらで解決」にある、「カスタマーサービスに連絡」をクリックします。
3. 「今すぐチャットをはじめる」ボタンの下にある、「Amazon.co.jp からお電話いたします」をクリックします。
4. 「お問い合わせの種類を選択してください」で、「デジタルコンテンツ – Kindle本、プライムビデオ、音楽など」を選択します。
5. 「お問い合わせ内容を選択してください」で、お問い合わせ内容の一覧から「Kindle 電子書籍」を選択します。
6. 「詳細内容」の一覧から、「Kindle コンテンツの問題」を、「さらに詳細を選択してください」の一覧から「Kindle 本のダウンロードの問題」を選択します。
7. 「お問い合わせ方法を選択してください」で、「電話」ボタンをクリックします。
8. 「カスタマーサービスに連絡する」でお客様の電話番号を入力し、「今すぐ電話がほしい」ボタンをクリックします。お問い合わせされる際には、以下の点をお伝えください。
・本を購入、またはKindle Unlimited で利用していること
・ご要望内容(例:改訂版の送信を希望していること)
お手数をおかけしますが、宜しくお願いします。
職業訓練校で制作したワードカウンター(試作品1号)をお見せします。
#include <Wire.h> // 2線による通信を行うためのI2C通信ライブラリ
uint8_t DEVICE_ADDRESS = 0x3E; // デバイスアドレス(スレーブ)
// 変数各種
long int cntA = 0; // 総カウント用
long int cntB = 0; // 文字数計算用
int sec = 0; // 秒
int min = 0; // 分
int hour = 0; // 時
float num = 3.2; // 文字数変換基準値
int tmpA = 0; // 値退避用
int tmpB = 0; // 値退避用
int Wcnt = 0; // 文字数用
// 表示値格納用
char cCntA[16];
char cCntB[16];
char cSec[16];
char cMin[16];
char cHour[16];
char cNum[16];
char cAval[16];
char cWcnt[16];
// 表示値変数用
String stCntA;
String stCntB;
String stSec;
String stMin;
String stHour;
String stNum;
String stAval;
String stWcnt;
String stSet;
// 音センサー関連
int d_val; // digital用変数
float a_val; // analog用変数
// LED関係
const int led03 = 3; // LED検知
const int led04 = 4; // LED音量ボリューム
const int led05 = 5; // LED音量ボリューム
const int led06 = 6; // LED音量ボリューム
const int led07 = 7; // LED音量ボリューム
const int led08 = 8; // LED音量ボリューム
// ボタン関連
int buttonBpin11 = 11; // 文字数カウント基準設定(+0.1)
int buttonBpin12 = 12; // 文字数カウント基準設定(-0.1)
int buttonBpin13 = 13; // リセットボタン
// 音センサー関連
const int digitalPin = 2; // センサ D0出力接続先
const int analogPin = A0; // センサ A0出力接続先
// スケッチが実行された時に1度だけ実行される指令 デバイスの初期化などを行う
void setup() {
pinMode(led03, OUTPUT); // LED 03番ピンを出力指定
pinMode(led04, OUTPUT); // LED 04番ピンを出力指定
pinMode(led05, OUTPUT); // LED 05番ピンを出力指定
pinMode(led06, OUTPUT); // LED 06番ピンを出力指定
pinMode(led07, OUTPUT); // LED 07番ピンを出力指定
pinMode(led08, OUTPUT); // LED 08番ピンを出力指定
pinMode(buttonBpin11, INPUT_PULLUP); // BUTTON 11番ピンをHighにする
pinMode(buttonBpin12, INPUT_PULLUP); // BUTTON 12番ピンをHighにする
pinMode(buttonBpin13, INPUT_PULLUP); // BUTTON 13番ピンをHighにする
Wire.begin(); // LCD マスタとしてI2Cバスに接続する
init_LCD(); // LCD 初期設定
writeCommand(0x02); // LCD カーソルをホームへ戻す
pinMode(digitalPin, INPUT); // 音 2番ピンを入力指定
Serial.begin(9600); // シリアル通信のデータ転送レートを9600bpsで指定
}
// LCD関係 データ書き込み
void writeData(byte t_data)
{
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x40);
Wire.write(t_data);
Wire.endTransmission();
delay(1);
}
// LCD関係 コマンド書き込み
void writeCommand(byte t_command)
{
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(0x00);
Wire.write(t_command);
Wire.endTransmission();
delay(10);
}
// LCD関係 上段の行にデータ書き込み
void LCD_DISP_16_1(void) {
for (int i = 0; i < 16; i++) {
writeData(stSet[i]);
}
}
// LCD関係 下段の行にデータ書き込み
void LCD_DISP_16_2(void) {
writeCommand(0x40 + 0x80);
for (int i = 0; i < 16; i++) {
writeData(stSet[i]);
}
}
// LCD関係 液晶初期化
void init_LCD()
{
delay(100);
writeCommand(0x38); // FUNCTION SET
delay(20);
writeCommand(0x39); // IS=1
delay(20);
writeCommand(0x14); // INT OSC FREQUENCY
delay(20);
writeCommand(0x7A); // CONTRAST SET 0,1,2,3
delay(20);
writeCommand(0x54); // CONTRAST SET 4,5
delay(20);
writeCommand(0x6C); // F0LLOWER CONTROL
delay(20);
writeCommand(0x38); // IS=0
delay(20);
writeCommand(0x0C); // Display ON
delay(20);
writeCommand(0x01); // Clear Display
delay(20);
writeCommand(0x06); // Entry Mode
delay(20);
}
void loop() {
// カーソルをホームへ戻す
writeCommand(0x02);
// 1行目表示 WORDCOUNTER+a_val値
a_val = (float)analogRead(analogPin) / 1024.0f * 5.0f; //AD変換
//Serial.println(a_val);
dtostrf(num, 1, 1, cNum);
stNum = String(cNum);
dtostrf(a_val, 1, 2, cAval);
sprintf(cCntA, "%d", cntA);
stCntA = String(cCntA);
stAval = String(cAval);
stSet = String(stNum + " " + stAval + "v " + stCntA + "c");
LCD_DISP_16_1();
// 2行目表示 LED音量ボリューム+カウント値+時分秒
d_val = digitalRead(digitalPin);
a_val = analogRead(analogPin);
if (d_val == LOW) {
digitalWrite(led03, LOW);
digitalWrite(led08, LOW);
digitalWrite(led07, LOW);
digitalWrite(led06, LOW);
digitalWrite(led05, LOW);
digitalWrite(led04, LOW);
}
if (d_val == HIGH) {
digitalWrite(led03, HIGH);
}
if (d_val == HIGH && a_val < 500) {
digitalWrite(led03, HIGH);
digitalWrite(led04, HIGH);
LCD_writer();
}
if (d_val == HIGH && a_val < 480) {
digitalWrite(led05, HIGH);
LCD_writer();
}
if (d_val == HIGH && a_val < 460) {
digitalWrite(led06, HIGH);
LCD_writer();
}
if (d_val == HIGH && a_val < 440) {
digitalWrite(led07, HIGH);
LCD_writer();
}
if (d_val == HIGH && a_val < 420) {
digitalWrite(led08, HIGH);
LCD_writer();
}
// リセットボタン
if (digitalRead(buttonBpin13) == LOW) {
LCD_writer();
}
// 文字数変換基準変更ボタン +1
if ((digitalRead(buttonBpin11) == LOW) && (num < 4.9)) {
num = num + 0.1;
tmpA = Wcnt;
cntB = 0;
}
// 文字数変換基準変更ボタン -1
if ((digitalRead(buttonBpin12) == LOW) && (num > 2.1)) {
num = num - 0.1;
tmpA = Wcnt;
cntB = 0;
}
}
// LCD_writer
void LCD_writer() {
// リセットボタン押した
if (digitalRead(buttonBpin13) == LOW) {
cntA = 0;
cntB = 0;
tmpA = 0;
tmpB = 0;
Wcnt = 0;
}
// リセットボタン押してない
if (digitalRead(buttonBpin13) == HIGH){
cntA = cntA + 1; // 総カウント用
cntB = cntB + 1; // 文字数計算用
}
// 時分秒 文字数 計算
sec = (cntB / 16) % 60;
min = ((cntB / 16) % 3600) / 60;
hour = (cntB / 16) / 3600;
tmpB = cntB / num;
Wcnt = tmpA + tmpB;
// LCD表示
sprintf(cSec, "%d", sec);
sprintf(cMin, "%d", min);
sprintf(cHour, "%d", hour);
sprintf(cWcnt, "%d", Wcnt);
stSec = String(cSec);
stMin = String(cMin);
stHour = String(cHour);
stWcnt = String(cWcnt);
stSet = String(stHour + "h" + stMin + "m" + stSec + "s" + " " + stWcnt + "w");
LCD_DISP_16_2();
Serial.println(a_val);
}
率直に言って、まだ試作品とも呼べない代物です。
マイクセンサー(KY-037)が音や声を検知している間はデジタル出力がHIGHになり、HIGHになっているあいだカウントが+1され続けます。LCD1行目の右側の値です。
そのカウント値を基準に、LCD2行目に時間と文字数が表示されます。カウント値が60秒間HIGHだと+100になるので徐算して実時間に合わせています。文字数はLCD1行目左の値を基準にこちらも徐算しています。写真だと「2.5」なので1秒間に「6.4」増える計算です。
つまり音センサー君の検知頼みなわけですが、この検知の精度が非常に調整しにくい。使い方を解説しているブログをいくつか渡り歩いて調整したんですが、普通の話し声の大きさだと口のすぐ近くにマイクがないと検知しないですし、手を叩いた音を検知させる場合も30cm以内じゃないと厳しいかな。
少なくとも「話し声を検知させる」という使い方をする上では、相性が良いものだと思えませんでした。
今の自分の実力だとこれくらいが限界です。
次回をお楽しみに!