ESP-WROOM-02開発ボードをArduino IDEで使う
ファイル→環境設定を開きます。
Settingタブ内のAdditional Boards Manager URLsに次のURLを入力します。
http://arduino.esp8266.com/stable/package_esp8266com_index.json
これだとボードマネージャーにesp8266 by WSP8266 Communityがありません。
以下に変更すると見えるようになったので、最新のバージョンをインストールしました。
https://github.com/esp8266/Arduino/releases/download/2.3.0/package_esp8266com_index.json
これで、ボードマネージャーで Generic ESP32 Moduleを選択することができました。
太陽光発電(オフグリッド)(2)
設備投資が2年程度で回収できたので、新たに太陽光パネルを1枚追加しました。
以前のと同サイズにもかかわらず出力が20Wもアップしています。
■サンテックパワー 太陽光発電パネル STP320S-20/Wfh H4コネクター(MC4ではない)
【製品仕様】
・セルタイプ:単結晶 78mm×156mm(6インチ)
・セルの配列:120枚(6×20)
・最大出力(Pmax):320W
・最大出力動作電圧(Vmp):33.3V
・最大出力動作電流(Imp):9.61A
・開放電圧(Voc):40.1V
・短絡電流(Isc):10.04A
・モジュール変換効率:19.3%
・サイズ:L1670mm×W992mm×D35mm
・重量:18.5kg
キッチンタイマーの製作(7)確認音の追加
①ポートの反転処理で発音する関数を追加します。
void beep(int time) { int i; for (i = 0; i < time; i++) { IO_RB14_SetHigh(); // portに’H’を出力 __delay_us(500); // [us]待つ IO_RB14_SetLow(); // portに’L’を出力 __delay_us(500); // [us]待つ } }
②スイッチ操作時に上記関数を呼び出します。
beep(70); // ピッ音
キッチンタイマーの製作(8)確認音の音程を変える
キッチンタイマーのタイムアップ時に、PWM機能を応用したオルゴールを鳴らす機能を追加したいと思います。
①まずは、TMR2をPeripheralsに追加しTimer Periodを1msに設定します。
②今回は、RP14(25Pin)をキャプチャーコンペア出力1に割り当てます。
マニュアルのSELECTABLE OUTPUT SOURCES (MAPS FUNCTION TO OUTPUT)を参考にします。
(Output Function Number) (Function) (Output Name) ーーーーーーーーーーーーーーーーーー 0 NULL(2) Null 1 C1OUT Comparator 1 Output 2 C2OUT Comparator 2 Output 3 U1TX UART1 Transmit 4 U1RTS(3) UART1 Request To Send 5 U2TX UART2 Transmit 6 U2RTS(3) UART2 Request To Send 7 SDO1 SPI1 Data Output 8 SCK1OUT SPI1 Clock Output 9 SS1OUT SPI1 Slave Select Output 10 SDO2 SPI2 Data Output 11 SCK2OUT SPI2 Clock Output 12 SS2OUT SPI2 Slave Select Output 18 OC1 Output Compare 1 ←これを使用する 19 OC2 Output Compare 2 20 OC3 Output Compare 3 21 OC4 Output Compare 4 22 OC5 Output Compare 5 23-28 (unused) NC 29 CTPLS CTMU Output Pulse 30 C3OUT Comparator 3 Output 31 (unused) NC
ポートRP14の設定Resistor(RP14R)は、RPOR7レジスタにあり、そのレジスタを18に設定するため、
pin_manager.cのvoid PIN_MANAGER_Initialize(void)関数の最後に以下の処理を追加します。
/************************************************************************** * Set the PPS ***************************************************************************/ __builtin_write_OSCCONL(OSCCON & 0xbf); // unlock PPS //------------------------------------ // PWM関係の設定 by fujihara //------------------------------------ RPOR7bits.RP14R = 18; // RP14ピンの機能を, 18:OC1に割り当てる OC1CON1bits.OCTSEL = 0; // 0:Timer2 Clock //OC1CON1bits.OCM = 0b011; // 3:シングルコンペア連続パルスモード(Fullカウントでトグルする) //OC1CON1bits.OCM = 0b110; // 6:OC1でエッジアラインPWMモード OC1CON1bits.OCM = 0b101; // 5:ダブルコンペア連続パルス(OC1RでHigh,OC1RSでLow) OC1R = PR2/2; // Highになるタイミング(仮の値) OC1RS = PR2; // Low になるタイミング(仮の値) // 実際の回路はトランジスタのためHigh/Lowが反転する OC1CON2bits.OCTRIS = 0; // 0:出力コンペアモジュールが駆動する // 1:OC1ピンを3ステートにする __builtin_write_OSCCONL(OSCCON | 0x40); // lock PPS /****************************************************************************/
③main.cに以下の発音関数を追加します。
/** * 発音関数 * @param freq:周波数(Hz) 例:A4の時、440 (Hz) */ void tone(int freq) { if (freq != NON) { #ifdef __24FJ128GB204_H PR2 = 8000000 / freq; //発音 #else PR2 = 4000000 / freq; //発音 #endif OC1R = PR2 / 2; // Highになるタイミング OC1RS = PR2; // Low になるタイミング } else { PR2 = 0; //発音停止 } }
④ボタンが押されたタイミングで以下の処理を行うと、ドミソドという音が発音されます。
tone(131); //C3(ド) __delay_ms(250); tone(165); //E3(ミ) __delay_ms(250); tone(196); //G3(ソ) __delay_ms(250); tone(262); //C4(ド) __delay_ms(250); tone(0);