Tetsuki Fukuda / Mbed 2 deprecated Green_Switch_sinwave

Dependencies:   mbed

Committer:
Tetsuki
Date:
Tue Oct 20 09:05:02 2020 +0000
Revision:
1:3e1c05f8d7e8
Parent:
0:26508adf6f76
meaning of each color, commenting out the reset

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