amt102-vのライブラリです

Revision:
0:60d903b5752f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/incenc.cpp	Thu Feb 20 08:59:27 2020 +0000
@@ -0,0 +1,61 @@
+#include "incenc.h"
+//Xは使いませええん!!なので4ピンでだいじょうぶでs
+incEnc::incEnc(PinName p1,PinName p2):A(p1), B(p2)
+{
+    A.rise(&Ar_f);//関数に引数を入れてはいけない
+    A.fall(&Af_f);
+    B.rise(&Br_f);
+    B.fall(&Bf_f);  
+}
+incEnc incenc[enc_MAX]= {
+    incEnc(PC_10,PC_9),
+    incEnc(PC_3,PC_4)
+};
+void Ar_f()//引数なしにするために
+{
+    Ar(incenc,enc_MAX);
+}
+void Af_f()
+{
+    Af(incenc,enc_MAX);
+}
+void Br_f()
+{
+    Br(incenc,enc_MAX);
+}
+void Bf_f()
+{
+    Bf(incenc,enc_MAX);
+}
+void Ar(incEnc *e,uint8_t MAX)
+{
+    for(int i=0; i<MAX; i++) {
+        if(e[i].B==0)e[i].read_buf++;
+        else e[i].read_buf--;
+        e[i].degree=e[i].read_buf*360/8192;
+    }
+}
+void Af(incEnc *e,uint8_t MAX)
+{
+    for(int i=0; i<MAX; i++) {
+        if(e[i].B==1)e[i].read_buf++;
+        else e[i].read_buf--;
+        e[i].degree=e[i].read_buf*360/8192;
+    }
+}
+void Br(incEnc *e,uint8_t MAX)
+{
+    for(int i=0; i<MAX; i++) {
+        if(e[i].A==1)e[i].read_buf++;
+        else e[i].read_buf--;
+        e[i].degree=e[i].read_buf*360/8192;
+    }
+}
+void Bf(incEnc *e,uint8_t MAX)
+{
+    for(int i=0; i<MAX; i++) {
+        if(e[i].A==0)e[i].read_buf++;
+        else e[i].read_buf--;
+        e[i].degree=e[i].read_buf*360/8192;
+    }
+}
\ No newline at end of file