投稿

ラベル(Arduino)が付いた投稿を表示しています

STM32での圧電スピーカーの使い方

イメージ
前回はArduinoで圧電スピーカーを使ってみたので、今度はSTM32で使っていきたい。 CubeMXでピンの設定を行う 圧電スピーカーを使うので「A0」のアナログピンを使うことにした。 設定は「PA0」を「TIM2_CH1」に設定する。 TimersからTIM2の設定を変更する。 ModeのChannel1を「PWM Generation CH1」に設定する。 ConfigrationのParameter SettingsのPrescalerを「84」に設定する。 設定が終わったら、保存を行いコードを更新する。 main.cでプログラムを書いていく Arduinoのtone()関数をSTM32ようにモドキ物を作成してみた。 TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; int period; void periodSet(int p){ htim2.Init.Period = p; sConfigOC.Pulse = p/2; HAL_TIM_Base_Init(&htim2); HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); } void tone(int freq,int ms){ long peri; peri=1000000L/(long)freq; period = (uint16_t)peri; //htim2.Init.Period = Hz; //HAL_TIM_Base_Init(&htim3); periodSet(period); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); HAL_Delay(ms); } void noTone(int ms){ HAL_TIM_PWM_Stop(&htim2,TIM_CHANNEL_1); HAL_Delay(ms); } MX_TIM2_Initの関数にある下の二行をコメントアウトしておく。 TIM_MasterConfigTypeDef ...

Arduinoでの圧電スピーカーの使い方(tone関数)

イメージ
Arduinoで簡単な音楽を流してみたいと思う。 圧電スピーカーならオルゴール音みたいな感じにできると思うので使っていく。 圧電スピーカーの回路を作る 回路を作ると書いているが、作るのはいたってシンプル。 Arduinoのアナログピンに圧電スピーカーをつなげるだけ。 今回は「A0」ピンからGNDにつなげた。 圧電スピーカーは秋月電子より購入。 秋月電子→ http://akizukidenshi.com/catalog/g/gP-04118/ ArduinoIDEのプログラム Arduinoには「tone()関数」というものがある。 簡単に説明すると、出力するピンと周波数、出力時間を引数として代入することが出来る関数になる。 周波数は音の音階によって異なってくる。 代表的なドレミ音の周波数はこのような感じになってくる。 音階 ド レ ミ ファ ソ ラ シ ド 周波数 261Hz 293Hz 329Hz 349Hz 391Hz 440Hz 493Hz 523Hz 今回は#音については除外させてもらった。 詳しい音階の周波数を知りたい人は自分で調べてほしい。 これを使って簡単なメロディを流すプログラムを作成した。 #define PIN_SPK (A0) void setup() { pinMode(A0,OUTPUT); delay(1000); } void loop() { tone(PIN_SPK,261,500); //ド delay(500); tone(PIN_SPK,293,500); //レ delay(500); tone(PIN_SPK,329,500); //ミ delay(500); tone(PIN_SPK,349,500); //ファ delay(500); tone(PIN_SPK,391,500); //ソ delay(500); tone(PIN_SPK,440,500); //ラ delay(500); tone(PIN_SPK,493,500); //シ delay(500); tone(PIN_SPK,523,500); //ド d...

Arduinoでのアナログジョイスティックの使い方

イメージ
Arduinoのアナログジョイスティックについてまとめておこうと思う。 秋月電子→ http://akizukidenshi.com/catalog/g/gK-10263/ ゲーム機に使われている操作機器なので、簡単にプログラミングすることが出来る。 アナログジョイスティックの回路を作る 上から見た感じはこんな風にしてみた。 これだとどうつないでいるのかわからないので、アナログジョイスティックを外した画像もはっておく。 CN1と書かれたほうが電源のつながっているピン側になる。 10kΩの抵抗を挟んでおくとよい。 ブレッドボードの下側を通るようにつないだので、LCDディスプレイを見やすくなる。 なるべくブレッドボードの端に置いたので、ほかのものをつなぎやすくなる。 ブレッドボードで回路を作るときの参考にしてほしい。 ArduinoIDEのプログラム // ------------------------------------------------------------ // インクルード // ------------------------------------------------------------ #include <Wire.h> #define PIN_AX (A0) #define PIN_AY (A1) void setup() { Wire.begin(); lcdInit(); pinMode(PIN_AX,INPUT); pinMode(PIN_AY,INPUT); lcdDisp1("Hello"); delay(1000); } void loop() { int aj; aj=ajoyget(); if(aj&0x08){ lcdDisp1("up"); } if(aj&0x04){ lcdDisp1("down"); } if(aj&0x02){ lcdDisp1("left"); } if(aj&0x01){ lcdDisp...

ArduinoでLCDモジュールの使い方(AQM0802)

イメージ
AQM0802とは AQM0802は、I2C接続の小型液晶モジュールと呼ばれるものになる。 8文字×2行の文字を表示することが出来る。 基本的に秋月電子で購入できる、ピッチ変換キットを使うことが多い。 秋月電子商品ページより ブレッドボードに簡単に挿して使えるようになるので、非常に便利。 I2C通信 AQM0802はI2C通信というもので、Arduinoとデータの通信を行う。 I2C通信はフィリップス社が開発したシリアル通信である。 Arduinoでは様々なセンサがこの通信規格を使ってデータのやりとりを行うことが出来る。 AQM0802を使う AQM0802モジュールのはんだ付け 秋月で購入したキットにはんだ付けを行っていく。 基板上のPUと書かれた部分をはんだ付けすると、基板内で10kΩのプルアップ抵抗を内蔵してくれる。 今回ははんだ付けせずに、ブレッドボード上でプルアップ抵抗をつけることにする。 ブレッドボードでの回路作成 AQM0802を使うには3.3Vの動作電圧で使うようにと秋月電子の商品ページには記載されている。 いろいろネットで調べてみるとAQM0802本体は5.5Vの電圧まで耐えることができるらしい。 だが、このブログでは3.3Vの動作電圧を守って動かしてみようと思う。 そのために必要になるのがレベル変換モジュールになる。 リンク このモジュールを使えば、5Vの電圧を安全に3.3Vに変換してくれる。 双方向なので、3.3Vを5Vに変換することもできる。 3.3Vの動作電圧のモジュールを扱うなら何個か持っておくと非常に便利。 こんな感じにブレッドボードに回路を組んでみた。 レベル変換モジュールはArduinoから5Vと3.3Vの電源を取っている。 Arduinoはピンから出力される電圧は5Vである。これをレベル変換モジュールで3.3Vに変換してAQM0802につなげている。 I2C通信はSCLとSDAという二つのピンにつなげる必要がある。Arduino nanoではA5がSCL、A4がSDAピンとして使える。 そして、AQM0802には3.3Vのプルアップ抵抗をブレッドボードで組んでおいた。 A...

ArduinoIDEのシリアルモニタから文字を表示する

イメージ
  Arduinoで文字を表示する方法はシリアルモニタで表示させるか、LCDディスプレイを使って表示させるかの二通りの方法が一般的である。 シリアルモニタで表示する Arduino IDEのシリアルモニタはルーペマークをクリックすると表示される。 これは、Arduinoとパソコン間でシリアル通信を行い、文字を表示させることのできる画面になる。 この画面から、データの入力を行ったりすることもできる。 Arduinoとパソコンでシリアル通信を行う シリアルモニタに表示する シリアルモニタで「Hello World」と表示させてみる。 ソースコードがこれ。 void setup(){  Serial.begin(9600);  delay(1000); Serial.print("Hello World"); } void loop(){ } シンプルに一回だけ表示させてみた。 setup()関数で「Serial.begin(9600);」と書いている。 これは、Arduinoでシリアル通信を行うために書かなければならないArduino専用の関数になる。 「9600」という数値は、シリアル通信の速度を示している。 シリアルモニタの下側に「9600bps」と表示されてるものである。 Arduino側とシリアルモニタ側でbpsの数値は合わせておく必要がある。 数値が違うと正常に通信が行われないので注意する。 Arduinoのデフォルト設定で使うなら、基本的に「9600」で問題ない。 「delay(1000);」はシリアル通信を行うまでに必要な待機時間になる。 シリアル通信もArduino側で準備する必要がある。 だいたい「1秒」待てば問題ないので、delay関数で待っている。 Serial.print()はArduinoのシリアルモニタに文字を表示させるための関数になる。 基本的に、C言語のprintf()関数と使い方は変わらない。変数を入れたり「"」で囲って文字を書いたりする。 シリアルモニタから入力データを送る シリアルモニタで送りたいデータを入力して、送信を押せばデータの入力ができる。 送ったデータを表示させるプログラム...

ArduinoでADC調光を行う

イメージ
PWM制御 Arduinoでアナログ制御を行おうとすると、PWM制御という単語にたどりつく。 Arduinoは基本的に0Vか5Vの電気の出力しか行えない。しかし、PWMは出力する電気を高速でON/OFFすることで、疑似的に出力する電気の量を変えることができる。 100回のON/OFFの切り替えで、50回だけ5Vを出力し、疑似的に2.5Vの電気を出力することができる。 アナログ出力とアナログ入力 アナログ出力でLEDの明るさを調節する ArduinoはPWM制御の行えるピンが決まっている。 3、5、6、9、10、11ピンが使える。 今回は3番ピンでPWMによるLEDの調光を行う。 使う回路はこんな感じ。 スイッチがついているが、今回は使わない。 int led; void setup() { pinMode(3,OUTPUT); } void loop() { for(led=0;led<256;led++){ analogWrite(3,led); delay(5); } for(led=255;led>0;led--){ analogWrite(3,led); delay(5); } } Arduinoでアナログ出力を行うときはanalogWrite()という関数を使う。 アナログ出力で注意するところは、Arduinoでは0Vから5Vの変化を0から255の数値に変換して行う。 5Vの電気を出力したいとき255を引数として与え、2.5Vなら127の数値を引数として与える。 アナログ入力を行ってアナログ出力を調節する Arduinoでアナログ入力を行うときはA0からA7というピンを使う。 「A」はanalogのAである。 アナログ入力を行うので、可変抵抗器をスイッチの代わりに使ってみた。 可変抵抗器はその名の通りに、抵抗の値を変化させることができる。 これを使って、抵抗値の変化をアナログ入力してLEDの調光を行ってみる。 int led; int sw; void setup() { pinMode(A1,INPUT); pinMode(3,OUTPUT); } void...

Arduinoでスイッチを使ったLED点灯(Lチカ)

イメージ
プルアップ回路とプルダウン回路 スイッチを使ったLチカを調べていくと、この二つの回路についての説明が出てくる。 ようするに、マイコンを守るための電気回路だと思っておけば大丈夫。 プルアップ回路 何もしてないときに電気を流しておくことをプルアップ回路といいます。 この回路は、電気が流れていると常にマイコンに電気が入力される回路になります。 スイッチを押すとマイコンに流れる電気がOFFになり、離すとONになる回路です。 メリットとして、常に電気が流れているので静電気に対して丈夫。 デメリットとして、マイコンへの入力がスイッチを押すとOFFになるのでプログラムではそれを気にした記述を行わなければならない。 プルダウン回路 スイッチを押したときに電気を流すことをプルダウン回路になります。 この回路は、プルアップとは反対の動きをする回路になります。 メリットとして、プログラムでON/OFFの反転を考えなくてよい。 デメリットとして、静電気がマイコンにONの入力をする恐れがある。 慣例的にプルアップ回路を使う 昔の半導体の特性によって、プルアップ回路が使われてきている。 いろいろ調べてもプルアップ回路が使われてきてるものが多いので、プルアップ回路を使っておけば問題ない。 スイッチを使ったLED点灯・点滅回路 今回はこんな感じの回路を組んでみた。 Arduino互換機にLEDアレイをつなげて、スイッチをつなげてある。 スイッチを押してるときLEDを点灯させる プログラムはこんな感じ。 void setup(){ pinMode(11,INPUT); pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); } void loop(){ if(digitalRead(11)==LOW){ digitalWrite(2,1); } else{ digitalWrite(2,0); } } digitalRead()というのはArduino専用の関数である。 ピンに対して入力信号を...

Arduinoで外付けLEDを点滅させる(Lチカ)

イメージ
LEDと抵抗について LEDには電気の流れる向きが決まる極性というものがある。(プラス方向とマイナス方向) 金属線の長いほうがアノード(プラス方向)短いほうがカソード(マイナス方向)という。(下の画像は秋月電子の商品ページより) それをブレッドボードに差し込みやすく加工してみた。 左側がアノードで右側がカソードになっている。 短くしたことで、ブレッドボードに差し込んだとき、金属線がむき出しにならなくてよくなる。斜めにカットしておけば、ブレッドボードに差し込みやすくなる。 LEDには許容電圧というものがある。これは、LEDに流していい電圧の大きさをしめしている。 基本的にはデータシートと呼ばれるものを読んで調べる必要がある。 そして、電圧を調整するために使うのが抵抗器である。 ArduinoでLEDを点灯するには、電気について少し勉強する必要がある。 だが、僕のブログでは詳しくはまとめないので、他のサイトを参考にしてほしい。 とりあえず覚えておけばいいのは、 ArduinoでLEDを点灯するためは500Ωくらいの抵抗器 をつけておけばよい。 ArduinoにLEDをつなげる ArduinoでLEDを点灯してみる。 必要なものがこちら Arduino nano LED カーボン抵抗(緑茶茶金)510Ω ジャンパーケーブル ブレッドボード これらを写真のようにつなげる。 D2のピンからLEDのアノード(+)につなげる。 LEDのカソード(-)からカーボン抵抗につなげる。 カーボン抵抗からArduinoのGNDをつなげる。 写真の5vのにつながっている赤い線と、3.3vからつながっている橙の線はつなげなくても大丈夫。これは別の機会に使うもモノなので気にしないでほしい。 Arduino IDEでプログラムを書き込む Arduino IDEで書き込むソースプログラムを書いてみた。 void setup(){ pinMode(2,OUTPUT); } void loop(){ digitalWrite(2,1); delay(300); digitalWrite(2,0); delay(300); digital...

僕がマイコンプログラミングで使っているもの

マイコンプログラミングで必要なもの マイコンを使ったプログラミングに必要なものをまとめてみた。 マイコンボード マイコン用のUSBケーブル ブレッドボード ジャンパーケーブル LED カーボン抵抗 スイッチ LCDモジュール 簡単なプログラミングの勉強なら、これぐらいあれば十分だと思う。 マイコンボード 初心者や入門用に使うマイコンボードは「 Arduino 」や「 Raspberry Pi 」がいいと思う。 この二つがオススメな理由として、ネットで調べると使っている人が多いので何かやるには勉強がしやすい。 個人的にはC言語でプログラミングをしたいので、「Arduino」が一番オススメ。 リンク リンク そのなかで一番使いやすいのは、「Arduino Nano」がいい。ブレッドボードに差し込んだりできるので、コンパクトになる。中華性の互換機なら、純正品を買うよりも安く買えるのもいい。 個人的にオススメなもの マイコンを使ったプログラミング勉強で使ったものをまとめてみる。 これから勉強する人は参考にしてほしい。 マイコンで使うパーツは基本的に秋月電子で買うことが多い。 ブレッドボード 秋月電子  http://akizukidenshi.com/catalog/g/gP-00285/ リンク ジャンパーケーブル 秋月電子  http://akizukidenshi.com/catalog/g/gP-08996/ リンク ワイヤーストリッパ リンク このセットにした理由は、ケーブルの長さを自由にできるから。 ブレッドボード上でケーブルのつながりを見やすくできる。 あと、断線しにくい。 LED 秋月電子  http://akizukidenshi.com/catalog/g/gI-11637/       http://akizukidenshi.com/catalog/goods/search.aspx?search=x&keyword=LED%83o%81%5B&image=%8C%9F%8D%F5 いろんな色がある...

ArduinoIDEをインストールする

イメージ
ArduinoIDEをインストールする Arduinoにプログラムを書き込むためにはArduinoIDEという専用のエディタを使うのが一般的です。 まずは、「ArduinoIDE」で検索します。 検索結果がでたら、「Software - Arduino」をクリックします。 「Download the Arduino IDE」と書かれた欄から、「Windows Installer, for Windous 7 and up」をクリックします。 「JUST DOWNLOAD」をクリックしてファイルをダウンロードします。 ダウンロードしたファイルを起動して、ArduinoIDEをインストールしていきます。 インストールが完了すると「Close」ボタンが押せるようになるので、押して終了です。 デフォルトでインストールを行っていけば、デスクトップ画面にショートカットキーが作成されるので、それでArduinoIDEを起動できるようになります。