質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

3回答

7173閲覧

arduinoを使っています。初めての質問です。お願いいたします。

hidebon_sp

総合スコア13

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

2グッド

1クリップ

投稿2016/10/18 08:49

編集2016/10/19 00:22

###前提・実現したいこと
blynkというアプリでスマートホンからコントロールしようとしています。
ボタンのコントロールはできるようになりました。
ちなみに、ボタンからの操作で動かしているものはリレーです。

次の段階として、二つのボタンを順番に押す動作を一個のボタンでできるようになりたいのです。

イメージとして二つあります。
arduinoのスケッチにとあるボタンが押されて、リレーが動作したら
そのことを条件として、もう一個のリレーも駆動させる。
というif構文を書き込む。

もう一つはヴァーチャルピンを利用して、
ヴァーチャルピンがHIGHになったら、
二つのリレーを順次駆動させる。
これをスケッチに書き込んでおく。

どちらも、条件の設定の仕方がわかりません。
初心者で、質問の体すらなってないかもわかりませんが、アドバイスをよろしくお願いいたします。

現状はBLYNKのすけっちのみです。

* Blynk is a platform with iOS and Android apps to control * Arduino, Raspberry Pi and the likes over the Internet. * You can easily build graphic interfaces for all your * projects by simply dragging and dropping widgets. * * Downloads, docs, tutorials: http://www.blynk.cc * Blynk community: http://community.blynk.cc * Social networks: http://www.fb.com/blynkapp * http://twitter.com/blynk_app * * Blynk library is licensed under MIT license * This example code is in public domain. * ************************************************************** * This example runs directly on ESP8266 chip. * * You need to install this for ESP8266 development: * https://github.com/esp8266/Arduino * * Please be sure to select the right ESP8266 module * in the Tools -> Board menu! * * Change WiFi ssid, pass, and Blynk auth token to run :) * **************************************************************/ #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "********************"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = ""; char pass[] = "**********"; void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); }

自分としては、条件が満たされたとき、
例えば、ヴァーチャルピンがlowからHIGHになったとき、
下記のように作動させればよいのではないかと考えていました。

Serial.print("open\n"); digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(100); digitalWrite(14, HIGH); delay(100); digitalWrite(14, LOW); break;

補足ですが、
自宅のパナソニックのインターホンから、子機登録したandroid携帯を、
teamviewerでリモートコントロールして、外部から開錠施錠することができるようになっています。これはPCのみです。
携帯端末から携帯端末のリモートコントロールができないためです。
この開錠施錠利用目的のみで設置してあるスマホをリレータッチボードでコントロールしようとしています。
一つ目のtouchで開錠ボタンを押して、二つ目のタッチでokボタンをクリックさせます。
ok・キャンセルのダイアログが必ず出るためです。
これをワンボタンで処理できないかというのが、今回の質問の主旨です。
よろしくお願いいたします。

imutakaoru, MasahikoHirata👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2016/10/18 12:29

やあやあはじめまして。面白いことをやっていますね。現時点のスケッチを質問に貼りつけられますか。スケッチの前後を ``` で囲むときれいに整形されます。
guest

回答3

0

ベストアンサー

ボタンを押すことで一連の流れを処理したいのでしたら、質問者さんのイメージ通りButtonウィジェットにVirtualPinを指定し、ArduinoにそのVertualPinに対応した処理関数を追加すれば可能です。
ただし、質問者さんのdelay(100)というのは100msec待ちですので、早すぎてリレータッチボードで制御するスマホアプリ側がきちんと動作しないと思われます。余裕を見て1秒程度(delay(1000))見ておいた方がよろしいと思います。
デバッグしながら調整して見てください。

補足: VirtualPinを使用する場合(例:V0)
BLYNK_WRITE(V0)の中には自分の処理したいブログラムを自由に設定できます。
今回は、デジタルピン13,14番を出力として使用する手続きが必要です。
① Blynk.run()の呼び出し前に、使用するデジタルピンのpinModeを設定
下記の例では、setup()内でpinMode設定しています。
② BLYNK_WRITE(V0)内で、[どのデジタルピン]に、[どんな条件]で、[何を出力するか]の処理を記述
1.Blynk側

  • リストボタンウィジェットを配置し、VertualPin(V0)に設定する。

1.ボタンを配置
2.ウィジェット設定

2.Arduino側

Arduino

1#define BLYNK_PRINT Serial // Comment this out to disable prints and save space 2#include <ESP8266WiFi.h> 3#include <BlynkSimpleEsp8266.h> 4 5#define RELAY01 13 // デジタルピン13番を[RELAY01]と定義 6#define RELAY02 14 // デジタルピン14番を[RELAY02]と定義 7 8// You should get Auth Token in the Blynk App. 9// Go to the Project Settings (nut icon). 10char auth[] = "********************"; 11 12// Your WiFi credentials. 13// Set password to "" for open networks. 14char ssid[] = ""; 15char pass[] = "**********"; 16 17void setup() 18{ 19 Serial.begin(9600); 20 Blynk.begin(auth, ssid, pass); 21 22 pinMode(RELAY01, OUTPUT); // RELAY01を出力に設定 23 pinMode(RELAY02, OUTPUT); // RELAY02を出力に設定 24} 25 26void loop() 27{ 28 Blynk.run(); 29} 30 31// ここから下の関数は、loop()のBlynk.run関数から自動で呼び出されます 32 33// BlynkアプリケーションのV0状態をArduinoの変数に書き込みます 34// ここではBlynkのButtonウィジェットでバーチャルピンV0を使用した場合 35BLYNK_WRITE(V0) 36{ 37 int button = param.asInt(); // BlynkアプリのButtonのV0状態を書き込みます 38 39 if (button == 1) // もしボタンが押されているなら 40 { 41 Serial.print("open\n"); 42 digitalWrite(RELAY01, HIGH); 43 delay(1000); 44 digitalWrite(RELAY01, LOW); 45 delay(1000); 46 digitalWrite(RELAY02, HIGH); 47 delay(1000); 48 digitalWrite(RELAY02, LOW); 49 } 50}

3.動作例:

  • 例では2個のリレーをLED(Green/Red)に置き換えて動作デモしています。

動作例

投稿2016/10/20 05:16

編集2016/10/20 11:39
momomona

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidebon_sp

2016/10/20 23:27

丁寧に回答くださいましてありがとうございます。 早速、自分でもやってみたいと思います。 うまくできましたら、またご報告させていただきます。
hidebon_sp

2016/10/21 05:57

eps-wroom-02ボードにおいて、アドバイス通り実行できました。 これによりワンボタンクリックで、開錠施錠ができるようになりました! 感激です。ありがとうございました。 せっかくお教えいただいたので、応用しようとgenuino101のBLEで同じことをしようと思って、#define・void setup()・void loop()に記述したのですが、エラーでコンパイルができません。何がいけないのでしょうか?
hidebon_sp

2016/10/21 10:02

Arduino:1.6.12 (Windows 10), ボード:"Arduino/Genuino 101" C:\Users\Black7\Documents\Arduino\Arduino_101_BLE\Arduino_101_BLE.ino: In function 'void loop()': Arduino_101_BLE:71: error: a function-definition is not allowed here before '{' token { ^ Arduino_101_BLE:86: error: expected '}' at end of input } ^ exit status 1 a function-definition is not allowed here before '{' token
hidebon_sp

2016/10/21 10:18

記述が間違っていました!解決しました!ありがとうございました!
momomona

2016/10/21 12:30

一発でうまくいったようで良かったです。 Blynkは色々遊べそうですね。 すでにご存知と思いますが、本家サイト(英語)やAuduinoIDE上で「スケッチの例」→「Blynk」に沢山基本サンプルがありますので漁ってみてください。結構勉強になると思います。 本家サイト:英語ですが比較的やさしく書かれており読みやすいです。 「GETTING STARTED」や「DOCS」にも有用な情報が沢山書かれています。 http://docs.blynk.cc
guest

0

delay を使うのだろう

投稿2020/05/20 07:44

zaudy

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

blynkについては興味があったので、IotとしてRaspberry PiやArduinoに対してサーバー経由で操作ができるものですね。手っ取り早い方法では、blynkの出力と外部に簡単な回路で(例えばblynkのPUSHで出力されるPIN)とリレーの状態からICとディスクリートで次のリレーを動作させる事で簡単に要望に応えられると思いますが。

投稿2016/10/18 13:38

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidebon_sp

2016/10/18 23:52

回答いただきまして、ありがとうございます。 できるなら、別回路なしでと思っていますが、不可能な場合回路を組むことも考えたいと思います。その時はまたご指南くださいませ。 BLYNkはプログラミンが知識の全くない私でも、あっという間に、arduinoがコントロールできてびっくりしております。しかも設定が終われば、ネット環境を離れても操作可能です。質問の件以前に取り組んだのが、電動シャッターの電波式リモコンの基盤のスイッチ3か所から配線し、リレー制御でBLE利用で、スマホからコントロールできるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問