Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:470a92800884, 2020-11-29 (annotated)
- Committer:
- Tetsuki
- Date:
- Sun Nov 29 05:55:29 2020 +0000
- Revision:
- 0:470a92800884
serialsend
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Tetsuki | 0:470a92800884 | 1 | /************************** |
| Tetsuki | 0:470a92800884 | 2 | 2020/10/09 |
| Tetsuki | 0:470a92800884 | 3 | 編集者:福田哲生 |
| Tetsuki | 0:470a92800884 | 4 | |
| Tetsuki | 0:470a92800884 | 5 | 回路が新しくなり、AnalogOutから電圧が出力できるようになった。これを受けて出力場所の変更を行う。 |
| Tetsuki | 0:470a92800884 | 6 | これに伴いプログラムを一新することにした。 |
| Tetsuki | 0:470a92800884 | 7 | p18に0~1の出力を行うとそれが0~570Vとして出力できる。 |
| Tetsuki | 0:470a92800884 | 8 | p14~p17で電圧、周波数を10V/Hzずつ変更するようにした。 |
| Tetsuki | 0:470a92800884 | 9 | 電圧周波数の初期値は570V/100Hz |
| Tetsuki | 0:470a92800884 | 10 | |
| Tetsuki | 0:470a92800884 | 11 | 黄色:電圧10V上昇 |
| Tetsuki | 0:470a92800884 | 12 | 青色:電圧10V下降 |
| Tetsuki | 0:470a92800884 | 13 | 白色:周波数10Hz上昇 |
| Tetsuki | 0:470a92800884 | 14 | 黒色:周波数10Hz下降 |
| Tetsuki | 0:470a92800884 | 15 | |
| Tetsuki | 0:470a92800884 | 16 | 2020/11/26 |
| Tetsuki | 0:470a92800884 | 17 | 編集者:福田哲生 |
| Tetsuki | 0:470a92800884 | 18 | |
| Tetsuki | 0:470a92800884 | 19 | 先方の要望により、シリアル通信を用いてボタンを押すと現在の |
| Tetsuki | 0:470a92800884 | 20 | 電圧値・周波数を確認できるようにした。(要Teraterm) |
| Tetsuki | 0:470a92800884 | 21 | ***************************/ |
| Tetsuki | 0:470a92800884 | 22 | #include "mbed.h" |
| Tetsuki | 0:470a92800884 | 23 | #include <stdio.h> |
| Tetsuki | 0:470a92800884 | 24 | #include <stdlib.h> |
| Tetsuki | 0:470a92800884 | 25 | |
| Tetsuki | 0:470a92800884 | 26 | AnalogOut signal(p18);//AnalogOutピン(1768は18番ピン) |
| Tetsuki | 0:470a92800884 | 27 | Timer timer;//カウンタ |
| Tetsuki | 0:470a92800884 | 28 | Timer chtimer;//チャタリング用タイマー |
| Tetsuki | 0:470a92800884 | 29 | int Freq;//正弦波の周波数 |
| Tetsuki | 0:470a92800884 | 30 | int Volt;//印加電圧値 |
| Tetsuki | 0:470a92800884 | 31 | |
| Tetsuki | 0:470a92800884 | 32 | //スイッチ用ピンの宣言 |
| Tetsuki | 0:470a92800884 | 33 | DigitalIn VoltUp(p14); |
| Tetsuki | 0:470a92800884 | 34 | DigitalIn VoltDown(p15); |
| Tetsuki | 0:470a92800884 | 35 | DigitalIn FreqUp(p16); |
| Tetsuki | 0:470a92800884 | 36 | DigitalIn FreqDown(p17); |
| Tetsuki | 0:470a92800884 | 37 | |
| Tetsuki | 0:470a92800884 | 38 | int swflag = 0;//スイッチ用フラグ |
| Tetsuki | 0:470a92800884 | 39 | |
| Tetsuki | 0:470a92800884 | 40 | #define MIN_TIME_DIFF 200//チャタリング用待機時間 |
| Tetsuki | 0:470a92800884 | 41 | |
| Tetsuki | 0:470a92800884 | 42 | //LEDの宣言 |
| Tetsuki | 0:470a92800884 | 43 | DigitalOut led1(LED1); |
| Tetsuki | 0:470a92800884 | 44 | DigitalOut led2(LED2); |
| Tetsuki | 0:470a92800884 | 45 | DigitalOut led3(LED3); |
| Tetsuki | 0:470a92800884 | 46 | DigitalOut led4(LED4); |
| Tetsuki | 0:470a92800884 | 47 | |
| Tetsuki | 0:470a92800884 | 48 | //シリアル通信用の宣言 |
| Tetsuki | 0:470a92800884 | 49 | Serial pc(USBTX, USBRX); |
| Tetsuki | 0:470a92800884 | 50 | |
| Tetsuki | 0:470a92800884 | 51 | char vol[12]; |
| Tetsuki | 0:470a92800884 | 52 | char fre[12]; |
| Tetsuki | 0:470a92800884 | 53 | |
| Tetsuki | 0:470a92800884 | 54 | #define POWER_UP 0xF1 |
| Tetsuki | 0:470a92800884 | 55 | #define POWER_DOWN 0xF2 |
| Tetsuki | 0:470a92800884 | 56 | #define FREQ_UP 0xF3 |
| Tetsuki | 0:470a92800884 | 57 | #define FREQ_DOWN 0xF4 |
| Tetsuki | 0:470a92800884 | 58 | |
| Tetsuki | 0:470a92800884 | 59 | |
| Tetsuki | 0:470a92800884 | 60 | int main() { |
| Tetsuki | 0:470a92800884 | 61 | double t=0.0; |
| Tetsuki | 0:470a92800884 | 62 | int timediff = 0; |
| Tetsuki | 0:470a92800884 | 63 | timer.start(); |
| Tetsuki | 0:470a92800884 | 64 | chtimer.start(); |
| Tetsuki | 0:470a92800884 | 65 | Volt = 570; |
| Tetsuki | 0:470a92800884 | 66 | Freq = 100; |
| Tetsuki | 0:470a92800884 | 67 | while(1) { |
| Tetsuki | 0:470a92800884 | 68 | if(VoltUp.read() == 1){//黄押すと電圧10V増加 |
| Tetsuki | 0:470a92800884 | 69 | timediff = chtimer.read_ms(); |
| Tetsuki | 0:470a92800884 | 70 | if(timediff > MIN_TIME_DIFF) { |
| Tetsuki | 0:470a92800884 | 71 | Volt = Volt + 10; |
| Tetsuki | 0:470a92800884 | 72 | if(Volt > 570){ |
| Tetsuki | 0:470a92800884 | 73 | Volt = 570; |
| Tetsuki | 0:470a92800884 | 74 | } |
| Tetsuki | 0:470a92800884 | 75 | } |
| Tetsuki | 0:470a92800884 | 76 | chtimer.reset(); |
| Tetsuki | 0:470a92800884 | 77 | led1 = 1; |
| Tetsuki | 0:470a92800884 | 78 | led2 = 0; |
| Tetsuki | 0:470a92800884 | 79 | led3 = 0; |
| Tetsuki | 0:470a92800884 | 80 | led4 = 0; |
| Tetsuki | 0:470a92800884 | 81 | int n = sprintf(vol,"Voltage:%d\n",Volt);//シリアル通信で送る文字列 |
| Tetsuki | 0:470a92800884 | 82 | pc.printf(vol); |
| Tetsuki | 0:470a92800884 | 83 | |
| Tetsuki | 0:470a92800884 | 84 | wait(0.5); |
| Tetsuki | 0:470a92800884 | 85 | } |
| Tetsuki | 0:470a92800884 | 86 | if(VoltDown.read() == 1){//青押すと電圧10V減少 |
| Tetsuki | 0:470a92800884 | 87 | timediff = chtimer.read_ms(); |
| Tetsuki | 0:470a92800884 | 88 | if(timediff > MIN_TIME_DIFF) { |
| Tetsuki | 0:470a92800884 | 89 | Volt = Volt - 10; |
| Tetsuki | 0:470a92800884 | 90 | if(Volt < 0){ |
| Tetsuki | 0:470a92800884 | 91 | Volt = 0; |
| Tetsuki | 0:470a92800884 | 92 | } |
| Tetsuki | 0:470a92800884 | 93 | } |
| Tetsuki | 0:470a92800884 | 94 | chtimer.reset(); |
| Tetsuki | 0:470a92800884 | 95 | led1 = 0; |
| Tetsuki | 0:470a92800884 | 96 | led2 = 1; |
| Tetsuki | 0:470a92800884 | 97 | led3 = 0; |
| Tetsuki | 0:470a92800884 | 98 | led4 = 0; |
| Tetsuki | 0:470a92800884 | 99 | int n = sprintf(vol,"Voltage:%d\n",Volt); |
| Tetsuki | 0:470a92800884 | 100 | pc.printf(vol); |
| Tetsuki | 0:470a92800884 | 101 | wait(0.5); |
| Tetsuki | 0:470a92800884 | 102 | } |
| Tetsuki | 0:470a92800884 | 103 | if(FreqUp.read() == 1){//白押すと周波数10Hz増加 |
| Tetsuki | 0:470a92800884 | 104 | timediff = chtimer.read_ms(); |
| Tetsuki | 0:470a92800884 | 105 | if(timediff > MIN_TIME_DIFF) { |
| Tetsuki | 0:470a92800884 | 106 | Freq = Freq + 10; |
| Tetsuki | 0:470a92800884 | 107 | } |
| Tetsuki | 0:470a92800884 | 108 | chtimer.reset(); |
| Tetsuki | 0:470a92800884 | 109 | led1 = 0; |
| Tetsuki | 0:470a92800884 | 110 | led2 = 0; |
| Tetsuki | 0:470a92800884 | 111 | led3 = 1; |
| Tetsuki | 0:470a92800884 | 112 | led4 = 0; |
| Tetsuki | 0:470a92800884 | 113 | int n = sprintf(fre,"Frequency:%d\n",Freq); |
| Tetsuki | 0:470a92800884 | 114 | pc.printf(fre); |
| Tetsuki | 0:470a92800884 | 115 | wait(0.5); |
| Tetsuki | 0:470a92800884 | 116 | } |
| Tetsuki | 0:470a92800884 | 117 | if(FreqDown.read() == 1){//黒押すと周波数10Hz減少 |
| Tetsuki | 0:470a92800884 | 118 | timediff = chtimer.read_ms(); |
| Tetsuki | 0:470a92800884 | 119 | if(timediff > MIN_TIME_DIFF) { |
| Tetsuki | 0:470a92800884 | 120 | Freq = Freq - 10; |
| Tetsuki | 0:470a92800884 | 121 | if(Freq < 0){ |
| Tetsuki | 0:470a92800884 | 122 | Freq = 0; |
| Tetsuki | 0:470a92800884 | 123 | } |
| Tetsuki | 0:470a92800884 | 124 | } |
| Tetsuki | 0:470a92800884 | 125 | chtimer.reset(); |
| Tetsuki | 0:470a92800884 | 126 | led1 = 0; |
| Tetsuki | 0:470a92800884 | 127 | led2 = 0; |
| Tetsuki | 0:470a92800884 | 128 | led3 = 0; |
| Tetsuki | 0:470a92800884 | 129 | led4 = 1; |
| Tetsuki | 0:470a92800884 | 130 | int n = sprintf(fre,"Frequency:%d\n",Freq); |
| Tetsuki | 0:470a92800884 | 131 | pc.printf(fre); |
| Tetsuki | 0:470a92800884 | 132 | wait(0.5); |
| Tetsuki | 0:470a92800884 | 133 | } |
| Tetsuki | 0:470a92800884 | 134 | //sin波の出力※0~1の値をp18に送るため570で割る |
| Tetsuki | 0:470a92800884 | 135 | t = (double)timer.read_us() * 0.000001; |
| Tetsuki | 0:470a92800884 | 136 | signal = ((0.5 + sin(2.0 * 3.1415926 * Freq * t)/2) * Volt) / 570; |
| Tetsuki | 0:470a92800884 | 137 | led1 = 1; |
| Tetsuki | 0:470a92800884 | 138 | led2 = 1; |
| Tetsuki | 0:470a92800884 | 139 | led3 = 1; |
| Tetsuki | 0:470a92800884 | 140 | led4 = 1; |
| Tetsuki | 0:470a92800884 | 141 | } |
| Tetsuki | 0:470a92800884 | 142 | } |