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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Arduino

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

Q&A

0回答

1338閲覧

pyfirmataでEncoderを使いたい

kyonosuke

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Arduino

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

0グッド

0クリップ

投稿2017/11/14 09:43

編集2022/01/12 10:55

###実現したいこと
Arduinoへの書き込み用のプログラムを、python言語に書き換えたいんです。
python3でfirmataを使いたいんですが、GROVE-Encoderの値を表示できません。Noneしか表示されないんです。

###発生している問題
下のArduinoコードをfirmata(python3)に書き換えて、
print(Count)を(None以外)取得したいんです。

###該当のソースコード

#define ECA D3 #define ECB D4 byte curDat; //(変数)現在の入力ポートの読み出し値を保持 byte befDat = 0; //(変数)前回の読み出し値を保持 byte rotDir = 0; //←よくわからん。出てこない。 int Count = 0; byte inputMatch; //(変数)回転方向の変化を保持 byte matchCnt; //(変数)同状態の連続読み出しの回数を保持 byte rotPat = 0; // //↓初期化 // void setup() { pinMode(ECA,INPUT); pinMode(ECB,INPUT); curDat = 0; if(digitalRead(ECA)){ befDat |= 2; } if(digitalRead(ECB)){ befDat |= 1; } Serial.begin(19200); //シリアルボードの設定[bps] } // //↓メインループ // void loop() { byte dat; signed char val; curDat = 0; if(digitalRead(ECA)){ curDat |= 2; } if(digitalRead(ECB)){ curDat |= 1; } if(befDat == curDat){ if(!inputMatch){ //回転させてない間でずっと同じ信号発信 matchCnt++; if(matchCnt >= 3){ //状態確定 inputMatch = true; val = checkEnc(curDat); if(val != 0){ Count += val; Serial.print(Count); } } } //_↑ } else{ //1カチした時一瞬挙動 befDat = curDat; matchCnt = 0; inputMatch = false; //_↑ } // char c; //↓データをIDEからボードへ入力 // if(Serial.available()>0){ // c = Serial.read(); //データを1バイト読み込む // Serial.write(c); //そのままデータを送り返す // } //_↑ } signed char checkEnc(byte dat){ byte pat,i,j; rotPat <<= 2; rotPat |= (dat & 0x03); //←特にこの表記がわからんです if(rotPat == 0x4B){ //+パターン(時計回りに1カチ) return 1; } else if(rotPat == 0x87){ //-パターン(反時計回りに1カチ) return -1; } else{ return 0; } }

###試したこと
アナログピンにEncoderをつなぎ電圧を測定したら、5.0か0.0Vが出力されてました。
その電圧の値を回転の量に変換してほしいです。

###補足情報(言語/FW/ツール等のバージョンなど)
pyfirmataをVScodeのpython3でimportしてやろうとしているところです。
プログラムをはじめて半年で、絶賛勉強中です。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問