Kazyoshi Morita / Mbed 2 deprecated friction_measure

Dependencies:   Dynamixel mbed

Committer:
yamaotoko
Date:
Fri Sep 07 15:52:16 2018 +0000
Revision:
1:f43ebe88228e
Parent:
0:4e684157ecca
Child:
2:d19d83df0d15
WIP0.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaotoko 0:4e684157ecca 1 #include "mbed.h"
yamaotoko 0:4e684157ecca 2 #include "HX711.hpp"
yamaotoko 0:4e684157ecca 3 #include "Dynamixel.h"
yamaotoko 0:4e684157ecca 4
yamaotoko 0:4e684157ecca 5 HX711 hx711(p21, p22);
yamaotoko 0:4e684157ecca 6 Serial pc(USBTX, USBRX);
yamaotoko 0:4e684157ecca 7 Dynamixel motor(p13,p14,p15,0xFE,57600);
yamaotoko 1:f43ebe88228e 8 Timer timeStamp;
yamaotoko 0:4e684157ecca 9
yamaotoko 0:4e684157ecca 10 //--------------------HX711
yamaotoko 0:4e684157ecca 11 void calibrate(float gram){
yamaotoko 0:4e684157ecca 12 hx711.setScale(1.f);
yamaotoko 0:4e684157ecca 13 hx711.tare();
yamaotoko 0:4e684157ecca 14 //この辺をProcessing用に組み替える
yamaotoko 0:4e684157ecca 15 printf("place the weight and put any key\n");
yamaotoko 0:4e684157ecca 16 char c = pc.getc();
yamaotoko 0:4e684157ecca 17
yamaotoko 0:4e684157ecca 18 float natural = hx711.readGram();
yamaotoko 0:4e684157ecca 19 float calibVal = natural / gram;
yamaotoko 0:4e684157ecca 20 hx711.setScale(calibVal);
yamaotoko 0:4e684157ecca 21 //printf("calibrated! %f %f %d\n", calibVal, natural, hx711.read());
yamaotoko 0:4e684157ecca 22 }
yamaotoko 0:4e684157ecca 23
yamaotoko 0:4e684157ecca 24
yamaotoko 1:f43ebe88228e 25 //Dynamixel回転方向対応用
yamaotoko 1:f43ebe88228e 26 //多分11bitのうちMSBが符号,最上位で回転方向を指定している
yamaotoko 1:f43ebe88228e 27 void move(int speed){
yamaotoko 1:f43ebe88228e 28 if(speed >= 0)
yamaotoko 1:f43ebe88228e 29 motor.setSpeed(speed);
yamaotoko 1:f43ebe88228e 30 else{
yamaotoko 1:f43ebe88228e 31 motor.setSpeed(-1*speed+1024); //11bitのうちMSBが符号
yamaotoko 1:f43ebe88228e 32 }
yamaotoko 1:f43ebe88228e 33 }
yamaotoko 1:f43ebe88228e 34
yamaotoko 1:f43ebe88228e 35 //シリアル受信時
yamaotoko 1:f43ebe88228e 36 void pc_rx(){
yamaotoko 1:f43ebe88228e 37 char c = pc.getc(); //P5からの入力
yamaotoko 1:f43ebe88228e 38
yamaotoko 1:f43ebe88228e 39 switch(c){
yamaotoko 1:f43ebe88228e 40 case 'c': //キャリブレーション
yamaotoko 1:f43ebe88228e 41 calibrate(50.0);
yamaotoko 1:f43ebe88228e 42 break;
yamaotoko 1:f43ebe88228e 43 case 's': //計測開始
yamaotoko 1:f43ebe88228e 44 timeStamp.reset();
yamaotoko 1:f43ebe88228e 45 move(-20); //(WIP)
yamaotoko 1:f43ebe88228e 46 timeStamp.start();
yamaotoko 1:f43ebe88228e 47 break;
yamaotoko 1:f43ebe88228e 48 case 'e': //計測終了
yamaotoko 1:f43ebe88228e 49 move(0); //(WIP)
yamaotoko 1:f43ebe88228e 50 timeStamp.stop();
yamaotoko 1:f43ebe88228e 51 break;
yamaotoko 1:f43ebe88228e 52 case 'z': //ゼロ点オフセット
yamaotoko 1:f43ebe88228e 53 hx711.tare();
yamaotoko 1:f43ebe88228e 54 break;
yamaotoko 1:f43ebe88228e 55 case 'l': //モータ左回転
yamaotoko 1:f43ebe88228e 56 move(-20); //(WIP)
yamaotoko 1:f43ebe88228e 57 break;
yamaotoko 1:f43ebe88228e 58 case 'r': //モータ右回転
yamaotoko 1:f43ebe88228e 59 move(20); //(WIP)
yamaotoko 1:f43ebe88228e 60 break;
yamaotoko 1:f43ebe88228e 61 case 'q': //モータ停止
yamaotoko 1:f43ebe88228e 62 move(0);
yamaotoko 1:f43ebe88228e 63 break;
yamaotoko 1:f43ebe88228e 64
yamaotoko 1:f43ebe88228e 65 case 'm': //モータ速度設定
yamaotoko 1:f43ebe88228e 66 char val_buf[20]; //数値受信用バッファ
yamaotoko 1:f43ebe88228e 67 char *p;
yamaotoko 1:f43ebe88228e 68 break;
yamaotoko 1:f43ebe88228e 69
yamaotoko 1:f43ebe88228e 70 default:
yamaotoko 1:f43ebe88228e 71 break;
yamaotoko 1:f43ebe88228e 72 }
yamaotoko 1:f43ebe88228e 73 }
yamaotoko 1:f43ebe88228e 74
yamaotoko 0:4e684157ecca 75 int main() {
yamaotoko 1:f43ebe88228e 76 pc.baud(115200);
yamaotoko 0:4e684157ecca 77 //ホイールモードにするための設定
yamaotoko 0:4e684157ecca 78 motor.setAngleLimit(0, ADDRESS_CW_ANGLE_LIMIT);
yamaotoko 0:4e684157ecca 79 motor.setAngleLimit(0, ADDRESS_CCW_ANGLE_LIMIT);
yamaotoko 1:f43ebe88228e 80
yamaotoko 1:f43ebe88228e 81 float gram = 0;
yamaotoko 1:f43ebe88228e 82 hx711.setScale(1.f);
yamaotoko 1:f43ebe88228e 83 hx711.tare();
yamaotoko 1:f43ebe88228e 84
yamaotoko 1:f43ebe88228e 85 timeStamp.reset();
yamaotoko 1:f43ebe88228e 86
yamaotoko 0:4e684157ecca 87 while(1) {
yamaotoko 1:f43ebe88228e 88 gram = hx711.readGram(3); //平均回数
yamaotoko 1:f43ebe88228e 89 pc.printf(">%f,%f\n", gram, timeStamp.read()); //(WIP)Processingに送るデータ format: >(gram),(Time)
yamaotoko 0:4e684157ecca 90 }
yamaotoko 0:4e684157ecca 91 }