ラズベリーパイのウィンドウカウンタ10のiotコアでパルスカウンタ(コインカウンタ)を開発しています。このように25ミリ秒のインターバル時間を持つパルスをカウントする必要があります:パルス入力を何らかのインターバル時間でカウントするにはどうすればよいですか?
,0,05 - 1パルス 0,10€ - 2パルス 0,20€ - 4パルス 0,50€ - 10パルス 1€ - 20パルス 2€ - 40のパルスこの画像等
Iインターバル時間がdifのときにパルスの数を印字する(値を挿入する)必要がある25ミリ秒の間に。
私はこのコードを持っている:
public MainPage()
{
this.InitializeComponent();
InitGPIO();
}
private void InitGPIO()
{
var gpio = GpioController.GetDefault();
if (gpio == null)
{
GpioStatus.Text = "There is no GPIO controller on this device.";
}
coinPin = gpio.OpenPin(coin_Pin);
if (coinPin.IsDriveModeSupported(GpioPinDriveMode.InputPullUp))
{
coinPin.SetDriveMode(GpioPinDriveMode.InputPullUp);
} else
{
coinPin.SetDriveMode(GpioPinDriveMode.Input);
}
coinPin.DebounceTimeout = TimeSpan.FromMilliseconds(25);
coinPin.ValueChanged += coinPin_ValueChanged;
GpioStatus.Text = "GPIO pins initialized correctly.";
}
private void coinPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e)
{
if (e.Edge == GpioPinEdge.FallingEdge)
{
counter++;
}
var task = Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
if (e.Edge == GpioPinEdge.FallingEdge)
{
//counter++;
var time = PulseIn(coinPin, e.Edge);
value = (counter * 5);
value100 = value/100;
//money.Text = "Eur: " + (decimal)value100 + " €";
if (time != 25)
{
money.Text = "Eur: " + (decimal)value100 + " €";
GpioStatus.Text = "" + time;
} else
{
GpioStatus.IsEnabled = false;
}
//GpioStatus.Text = "" + time + "";
} else
{
///GpioStatus.Text = "" + coinPin.DebounceTimeout;
}
});
}
private double PulseIn(GpioPin pin, GpioPinEdge edge)
{
var sw = new Stopwatch();
while (edge.Equals(GpioPinEdge.RisingEdge))
{
//sw.Start();
}
sw.Start();
if (!edge.Equals(GpioPinEdge.RisingEdge))
{
//sw.Stop();
}
sw.Stop();
return sw.Elapsed.TotalMilliseconds;
}
private const int coin_Pin = 24;
private int counter = 0;
private double value = 0;
private double value100 = 0;
private GpioPin coinPin;
あなたは私助けてくださいことはできますか? ありがとうございます。あなたのコードから
私は2コイン(0,2€と0,05€)の入力例で質問を更新しました。結果は0,20€と0,25€になり、今度は "0,05 0,1 0,15 0,20 0,25 "...私は合計値を表示するだけです。 – rmntavares
どのように0,2ユーロを入力しますか? 4つのパルスはありませんか? –