Tetsuki Fukuda / Mbed 2 deprecated Green_Switch_SerialSend

Dependencies:   mbed

Committer:
Tetsuki
Date:
Sun Nov 29 05:55:29 2020 +0000
Revision:
0:470a92800884
serialsend

Who changed what in which revision?

UserRevisionLine numberNew 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 }