コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

バーチャル電子工作

なろうバーチャル

はい、どーも。肉体を捨てあらゆる世界でバーチャル的存在となりつつある僕です(?)。今日も今日とて電子の砂漠で死体を見て、呟くんすわ it'a true wolrd.狂ってる?それ、誉め言葉ね。

僕は何を書いているんですかね……。どうでもいい話だけど、上の初カキコどもコピペの「it'a true wolrd」って誤字ってたんですね。今まで全然気づかなかった。そういえば、カキコも完全に死語やなあ。何の話をしているんだ僕は……。


さて、そうしたわけで今日はバーチャル電子工作やっていきます。なぜそんなことをやるのかと言えば、この世の全てはバーチャルだからさ……。



バーチャル Arduino

というわけでして、僕がやりたい本題です。ドットインストールというサイトにArduino入門レッスンがあるのをみなさんご存知でしょうか?ハードウェアがないとやる機会なんてないもんだと思っていたんですけど、こちらのTinkercadを利用することでこの講座、いや……Arduinoでできること大体できるようになっていたので今回試してみたいと思います。

ちなみに件のArduinoは以下のようなやつです。

Arduino(アルデュイー、AVRマイコン、入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino LLC および Arduin SRL が設計・製造を行い、登録商標を持っている。

簡単に言うとマイコンです。入出力とかの操作とかそういったのがざっくりできる制御機器といった感じです。


ドットインストール
Arduino入門

Tinkercad
Tinkercad | Create 3D digital designs with online CAD


やってみよう

Tinkercadさん、一見するとただの3Dデザインツールなんですけど、Arduinoもできるようですよ。
f:id:andron:20180821213146p:plain


ということで、使える機材とかを確認していきます。まずは Arduino UNO R3 が……ある。

f:id:andron:20180625212915p:plainf:id:andron:20180625212912p:plain

そして……、使えそうな部品も……ある。
f:id:andron:20180625213027p:plain


てなわけで、さっそくヴァーチャル電子工作をやっていきましょう。まずはコードを書いた制御とかなしにLEDチカチカさせましょう。
f:id:andron:20180625213140g:plain
たのしい……。

ちなみに現実に同じく抵抗がちゃんとなってないとLEDが壊れます。
f:id:andron:20180625213226p:plain



ということで、今度はコードを書いて制御していきます。
f:id:andron:20180625213417g:plain
若干見づらいけども基盤のL文字の個所が光っていることが確認できました。たのしい……。

Lチカソースコード

#define PIN 13
void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){
  digitalWrite(PIN, HIGH);
  delay(500);
  digitalWrite(PIN, LOW);
  delay(500);
}



次は部品使ってLED光らせてみます。
f:id:andron:20180625213557g:plain
光り方が地味すぎる……。でも光っているのがわかると、たのしい…。

9番ピンを段階的に光らせてみるソースコード

#define PIN 9
void setup()
{
  pinMode(PIN, OUTPUT);
}

void loop()
{
  int i;
  for( i=0; i<256; i++){
    analogWrite(PIN, i);
    delay(10);
  }
}



次は圧電スピーカーで音をならしてみます。このツール、圧電スピーカーって名前で並んでないからよくわかってないけど、多分ピエゾってやつだと思ってる。
f:id:andron:20180625214140p:plain
動きがなくてあれですけど、マジで音が出るので楽しいです(伝わらない)……。

音を鳴らしてみるソースコード

#define PIN 9
void setup()
{
  pinMode(PIN, OUTPUT);
}

void loop()
{
  int i;
  for(i=0; i<256; i++){
    tone(PIN, i*10, 20);
    delay(10);
  }
}



スイッチでの制御とかもみてみます。
f:id:andron:20180625214254g:plain
また見づらいけどもLの文字部分がチカチカなるのが確認できます。たのしい……。

スイッチでチカチカする制御ソースコード

#define LED 13
#define BUTTON 2

void setup(){
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
}

void loop(){
  if(digitalRead(BUTTON) == HIGH){
    digitalWrite(LED, HIGH);
  }else{
    digitalWrite(LED, LOW);
  }
}



CdSセルをつかってみるよ。
f:id:andron:20180625214527g:plain
CdSセルって何かって言いますと光センサなんですよね……。このバーチャル空間でどうやって測定するんだと思ったらこのように、上の図のように手動で環境を変更することでセンシングできるようです。センシングとは……。あ、電源が入ってないときは操作できないっぽいです。

モニタ出力結果

3
3
3
237
533
321
263
408
174
174
174
174

明るくしていくと数字があがっていくことが確認できました。たのしい…。

CdSセルをつかってみるよソースコード

#define SEN 0
void setup(){
  pinMode(SEN, INPUT);
  Serial.begin(9600);
}

void loop(){
  int i;
  i = analogRead(SEN);
  Serial.print(i, DEC);
  Serial.print("\n");
  delay(1000);
}



とまあそんな感じに Arduino の操作がバーチャルで動かせるんですよ。いい時代になったものだ。まんまの写経記事は面白くないから普段やらなけど(といいつつ割と書いているような気もする……)普通にドットインストールの内容そのまま書いてしまった。だけどまあ、あの環境でできてしまったからしょうがない。それにリファレンス見る限りそこまで命令が多いわけでもないし簡単なやつだとこんな感じにまとまりそう……。そしてLEDチカチカで満足しておけばよかったのに、センシングまで手を出してしまうと実機がほしいところだよね。ほしいよね(チラチラ……


参考: Arduino リファレンス
Arduino Reference