Tetsuki Fukuda / Mbed 2 deprecated Green_Switch_sinwave

Dependencies:   mbed

Committer:
Tetsuki
Date:
Fri Oct 09 09:07:35 2020 +0000
Revision:
0:26508adf6f76
Child:
1:3e1c05f8d7e8
Green Switch sinewave

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Tetsuki 0:26508adf6f76 1 /**************************
Tetsuki 0:26508adf6f76 2 2020/10/09
Tetsuki 0:26508adf6f76 3 編集者:福田哲生
Tetsuki 0:26508adf6f76 4
Tetsuki 0:26508adf6f76 5 回路が新しくなり、AnalogOutから電圧が出力できるようになった。これを受けて出力場所の変更を行う。
Tetsuki 0:26508adf6f76 6 これに伴いプログラムを一新することにした。
Tetsuki 0:26508adf6f76 7 p18に0~1の出力を行うとそれが0~570Vとして出力できる。
Tetsuki 0:26508adf6f76 8 p14~p17で電圧、周波数を10V/Hzずつ変更するようにした。
Tetsuki 0:26508adf6f76 9 電圧周波数の初期値は570V/100Hz
Tetsuki 0:26508adf6f76 10
Tetsuki 0:26508adf6f76 11 2ボタン同時押しでリセットされるようにしたがうまく動作しなかったためその部分は変更が必要。
Tetsuki 0:26508adf6f76 12
Tetsuki 0:26508adf6f76 13 ***************************/
Tetsuki 0:26508adf6f76 14 #include "mbed.h"
Tetsuki 0:26508adf6f76 15 #include <stdio.h>
Tetsuki 0:26508adf6f76 16 #include <stdlib.h>
Tetsuki 0:26508adf6f76 17
Tetsuki 0:26508adf6f76 18 AnalogOut signal(p18);//AnalogOutピン(1768は18番ピン)
Tetsuki 0:26508adf6f76 19 Timer timer;//カウンタ
Tetsuki 0:26508adf6f76 20 Timer chtimer;//チャタリング用タイマー
Tetsuki 0:26508adf6f76 21 int Freq = 100;//正弦波の周波数
Tetsuki 0:26508adf6f76 22 int Volt = 570;//印加電圧値
Tetsuki 0:26508adf6f76 23
Tetsuki 0:26508adf6f76 24 //スイッチ用ピンの宣言
Tetsuki 0:26508adf6f76 25 DigitalIn VoltUp(p14);
Tetsuki 0:26508adf6f76 26 DigitalIn VoltDown(p15);
Tetsuki 0:26508adf6f76 27 DigitalIn FreqUp(p16);
Tetsuki 0:26508adf6f76 28 DigitalIn FreqDown(p17);
Tetsuki 0:26508adf6f76 29
Tetsuki 0:26508adf6f76 30 int swflag = 0;//スイッチ用フラグ
Tetsuki 0:26508adf6f76 31
Tetsuki 0:26508adf6f76 32 #define MIN_TIME_DIFF 200//チャタリング用待機時間
Tetsuki 0:26508adf6f76 33
Tetsuki 0:26508adf6f76 34 //LEDの宣言
Tetsuki 0:26508adf6f76 35 DigitalOut led1(LED1);
Tetsuki 0:26508adf6f76 36 DigitalOut led2(LED2);
Tetsuki 0:26508adf6f76 37 DigitalOut led3(LED3);
Tetsuki 0:26508adf6f76 38 DigitalOut led4(LED4);
Tetsuki 0:26508adf6f76 39
Tetsuki 0:26508adf6f76 40
Tetsuki 0:26508adf6f76 41 int main() {
Tetsuki 0:26508adf6f76 42 double t=0.0;
Tetsuki 0:26508adf6f76 43 int timediff = 0;
Tetsuki 0:26508adf6f76 44 timer.start();
Tetsuki 0:26508adf6f76 45 chtimer.start();
Tetsuki 0:26508adf6f76 46 while(1) {
Tetsuki 0:26508adf6f76 47 if(VoltUp.read() == 1){//黄押すと電圧10V増加
Tetsuki 0:26508adf6f76 48 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 49 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 50 Volt = Volt + 10;
Tetsuki 0:26508adf6f76 51 if(Volt > 570){
Tetsuki 0:26508adf6f76 52 Volt = 570;
Tetsuki 0:26508adf6f76 53 }
Tetsuki 0:26508adf6f76 54 }
Tetsuki 0:26508adf6f76 55 chtimer.reset();
Tetsuki 0:26508adf6f76 56 led1 = 1;
Tetsuki 0:26508adf6f76 57 led2 = 0;
Tetsuki 0:26508adf6f76 58 led3 = 0;
Tetsuki 0:26508adf6f76 59 led4 = 0;
Tetsuki 0:26508adf6f76 60 wait(0.5);
Tetsuki 0:26508adf6f76 61 }
Tetsuki 0:26508adf6f76 62 if(VoltDown.read() == 1){//青押すと周波数10Hz減少
Tetsuki 0:26508adf6f76 63 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 64 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 65 Volt = Volt - 10;
Tetsuki 0:26508adf6f76 66 if(Volt < 0){
Tetsuki 0:26508adf6f76 67 Volt = 0;
Tetsuki 0:26508adf6f76 68 }
Tetsuki 0:26508adf6f76 69 }
Tetsuki 0:26508adf6f76 70 chtimer.reset();
Tetsuki 0:26508adf6f76 71 led1 = 0;
Tetsuki 0:26508adf6f76 72 led2 = 1;
Tetsuki 0:26508adf6f76 73 led3 = 0;
Tetsuki 0:26508adf6f76 74 led4 = 0;
Tetsuki 0:26508adf6f76 75 wait(0.5);
Tetsuki 0:26508adf6f76 76 }
Tetsuki 0:26508adf6f76 77 if(FreqUp.read() == 1){//白押すと周波数10Hz増加
Tetsuki 0:26508adf6f76 78 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 79 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 80 Freq = Freq + 10;
Tetsuki 0:26508adf6f76 81 }
Tetsuki 0:26508adf6f76 82 chtimer.reset();
Tetsuki 0:26508adf6f76 83 led1 = 0;
Tetsuki 0:26508adf6f76 84 led2 = 0;
Tetsuki 0:26508adf6f76 85 led3 = 1;
Tetsuki 0:26508adf6f76 86 led4 = 0;
Tetsuki 0:26508adf6f76 87 wait(0.5);
Tetsuki 0:26508adf6f76 88 }
Tetsuki 0:26508adf6f76 89 if(FreqDown.read() == 1){//黒押すと周波数10Hz減少
Tetsuki 0:26508adf6f76 90 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 91 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 92 Freq = Freq - 10;
Tetsuki 0:26508adf6f76 93 if(Freq < 0){
Tetsuki 0:26508adf6f76 94 Freq = 0;
Tetsuki 0:26508adf6f76 95 }
Tetsuki 0:26508adf6f76 96 }
Tetsuki 0:26508adf6f76 97 chtimer.reset();
Tetsuki 0:26508adf6f76 98 led1 = 0;
Tetsuki 0:26508adf6f76 99 led2 = 0;
Tetsuki 0:26508adf6f76 100 led3 = 0;
Tetsuki 0:26508adf6f76 101 led4 = 1;
Tetsuki 0:26508adf6f76 102 wait(0.5);
Tetsuki 0:26508adf6f76 103 }
Tetsuki 0:26508adf6f76 104 if(VoltUp.read() == 1 && VoltDown.read() == 1){//黄,青同時押しで電圧を570Vにリセット
Tetsuki 0:26508adf6f76 105 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 106 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 107 Volt = 570;
Tetsuki 0:26508adf6f76 108 }
Tetsuki 0:26508adf6f76 109 chtimer.reset();
Tetsuki 0:26508adf6f76 110 led1 = 1;
Tetsuki 0:26508adf6f76 111 led2 = 1;
Tetsuki 0:26508adf6f76 112 led3 = 0;
Tetsuki 0:26508adf6f76 113 led4 = 0;
Tetsuki 0:26508adf6f76 114 wait(0.5);
Tetsuki 0:26508adf6f76 115 }
Tetsuki 0:26508adf6f76 116 if(FreqUp.read() == 1 && FreqDown.read() == 1){//白,黒同時押しで周波数を100Hzにリセット
Tetsuki 0:26508adf6f76 117 timediff = chtimer.read_ms();
Tetsuki 0:26508adf6f76 118 if(timediff > MIN_TIME_DIFF) {
Tetsuki 0:26508adf6f76 119 Freq = 100;
Tetsuki 0:26508adf6f76 120 }
Tetsuki 0:26508adf6f76 121 chtimer.reset();
Tetsuki 0:26508adf6f76 122 led1 = 0;
Tetsuki 0:26508adf6f76 123 led2 = 0;
Tetsuki 0:26508adf6f76 124 led3 = 1;
Tetsuki 0:26508adf6f76 125 led4 = 1;
Tetsuki 0:26508adf6f76 126 wait(0.5);
Tetsuki 0:26508adf6f76 127 }
Tetsuki 0:26508adf6f76 128 //sin波の出力※0~1の値をp18に送るため570で割る
Tetsuki 0:26508adf6f76 129 t = (double)timer.read_us() * 0.000001;
Tetsuki 0:26508adf6f76 130 signal = ((0.5 + sin(2.0 * 3.1415926 * Freq * t)/2) * Volt) / 570;
Tetsuki 0:26508adf6f76 131 led1 = 1;
Tetsuki 0:26508adf6f76 132 led2 = 1;
Tetsuki 0:26508adf6f76 133 led3 = 1;
Tetsuki 0:26508adf6f76 134 led4 = 1;
Tetsuki 0:26508adf6f76 135 }
Tetsuki 0:26508adf6f76 136 }