開発環境は、送信側はC#、Visual Studio 2019 windows フォームアプリケーション(.NET Framework)、受信側はc言語でCube Suite+です。マイコンは78K0R、UART-シリアル変換モジュールはFT232RLを使っています。
パソコンの画面上に3つのTrackBarを表示し、それらをスクロールすることで3色LEDに各色の明るさを制御できるようにしたいと思っています。現時点では、1つの色を制御できるようになっています。TrackBarがスクロールされるたびに、0~100のTrackBarの値をシリアル通信で送信をして、受信側でその値をそのままデューティー比として用いてPWM制御により明るさを制御できるようにしました。これを2色、3色出来るようにしたいのですが、TrackBarを増やして、赤色、青色、緑色それぞれの値を送信するにしても、それをどのように受信側で判別するようにすればよいかわかりません。なにかアイデアを頂けないでしょうか。
送信側のコードを示しておきます。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); mySerialPort.Open(); } private string String; private void Form1_Load(object sender, EventArgs e) { // 最小値、最大値を設定 trackBar1.Minimum = 0; trackBar1.Maximum = 100; // 初期値を設定 trackBar1.Value = 0; // 描画される目盛りの刻みを設定 trackBar1.TickFrequency = 10; // スライダーをキーボードやマウス、 // PageUp,Downキーで動かした場合の移動量設定 trackBar1.SmallChange = 1; trackBar1.LargeChange = 10; // 値が変更された際のイベントハンドラーを追加 trackBar1.ValueChanged += new EventHandler(trackBar1_ValueChanged); } private void trackBar1_Scroll(object sender, EventArgs e) { } private void trackBar1_ValueChanged(object sender, EventArgs e) { // TrackBarの値が変更されたらラベルに表示 label1.Text = trackBar1.Value.ToString(); //TrackBarの値を文字列に変換(2桁) String = trackBar1.Value.ToString("D2"); //送信 mySerialPort.Write(String ); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { mySerialPort.Close(); } } }
回答1件
あなたの回答
tips
プレビュー