###前提・実現したいこと
ロボットの動作の処理を行うRasPi2のMainプログラムで
ロータリーエンコーダの信号を
wiringPiISRの割り込みを使って読み取り、回転速度の計算を行おうと思っています。
###発生している問題・エラーメッセージ
プログラムを実行したところ、値の読み取りがうまくできませんでした。
どうすればRasPiでロータリーエンコーダの値を読み込めるのでしょうか…?
###ソースコード
Main.cpp
1#include <iostream> 2#include <wiringPi.h> 3#include <stdio.h> 4#include <stdlib.h> 5#include <unistd.h> 6#include <math.h> 7 8// ロータリーエンコーダ用割り込みピンの設定 9const int rot_pinA = 20; 10const int rot_pinB = 18; 11signed long int rot_count = 0; 12 13void rotary_changedPinA(void); 14void rotary_changedPinB(void); 15 16int main(void){ 17 wiringPiISR(rot_pinA, INT_EDGE_BOTH, rotary_changedPinA); 18 wiringPiISR(rot_pinB, INT_EDGE_BOTH, rotary_changedPinB); 19 20 //STARTボタンとCROSSボタンが押されるまでloopする 21 UPDATELOOP(controller, !(controller.button(START) && controller.button(CROSS))){ 22 //ここにメインの処理を書きます。 23 } 24} 25 26void rotary_changedPinA(void){ 27 if(digitalRead(rot_pinA)){ 28 if(digitalRead(rot_pinB)) ++rot_count; 29 else --rot_count; 30 }else{ 31 if(digitalRead(rot_pinB)) --rot_count; 32 else ++rot_count; 33 } 34} 35 36void rotary_changedPinB(void){ 37 if(digitalRead(rot_pinB)){ 38 if(digitalRead(rot_pinA)) ++rot_count; 39 else --rot_count; 40 }else{ 41 if(digitalRead(rot_pinA)) --rot_count; 42 else ++rot_count; 43 } 44} 45

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/05 09:02