Помогите пожалуйста с кодом

Alexander9300i

✩✩✩✩✩✩✩
14 Дек 2018
1
0
Меня зовут Саша

Алгоритм работы : заключается в расчете линейной скорости колеса и звездочки, ну и силы на цепи.
Реализация : 2 датчика холла, тензодатчик + HX711


Теперь давайте обсудим код :
Решил собрать велик - в котором отслеживается сила тяги, два датчика холла на D12 и D10 ну и сам тензодатчик на A0 и A1.Суть в том что не могу отдельно сделать цикл для тензодатчика (таким образом чтобы при открытии com порта высвечивалось по одному значению - а не так что в основном высвечивается сила тяги и изредка линейные скорости). Либо напутал я где то. Помогите.
P. S. Необходимо еще вывести все 3 параметра для построения графика.

Код:

C++:
int digitalPin1 = 10;
int digitalPin2 = 12;
unsigned long runTime1;
unsigned long runTime2;
int prevValue1 = 0;
int prevValue2 = 0;

#include <HX711.h>
HX711 scale(A1, A0);
float calibration_factor = +190.6;
float units;
float ounces;
float omega1;
float omega2;

void setup() {
  pinMode(digitalPin1, INPUT);
  pinMode(digitalPin2, INPUT);
  Serial.begin(9600);
  runTime1 = millis();
  runTime2 = millis();
  scale.set_scale();
  scale.tare();
  scale.set_scale(calibration_factor);
}

void loop() {

  int digitalValue1 = digitalRead(digitalPin1); // значение с цифрового канала
  if ((prevValue1 == HIGH) && (digitalValue1 == LOW)) { // ловим переход HIGH->LOW сигнала
  unsigned long timeSpan1 = millis() - runTime1; // время одного оборота, мс
  runTime1 = millis(); // запомним текущее время
  for(int i = 0;i < 2; i ++) runTime1 =+ millis(), 2;  
  timeSpan1 / 2;                                  
  omega1 = round(2*PI*0.07*3.6 / (timeSpan1 * 1.0E-3));
  Serial.println("$");
  Serial.println(omega1);
  Serial.println(" ");    
  }
  {
  int digitalValue2 = digitalRead(digitalPin2); // значение с цифрового канала
  if ((prevValue2 == HIGH) && (digitalValue2 == LOW)) { // ловим переход HIGH->LOW сигнала
  unsigned long timeSpan2 = millis() - runTime2; // время одного оборота, мс
  runTime2 = millis(); // запомним текущее время
  for(int j = 0;j < 2; j ++) runTime2 =+ millis(), 2;  
  timeSpan2 / 2;                                  
  omega2 = round(2*PI*0.025*3.6 / (timeSpan2 * 1.0E-3));
  Serial.println(omega2);
  Serial.println(";");
  }
  prevValue2 = digitalValue2; // запомним предыдущее значение датчика Холла
  prevValue1 = digitalValue1; // запомним предыдущее значение датчика Холла
       
  for(int h = 0;h < 5; h ++) units =+ scale.get_units(), 5;  
  units / 5;                                                
  ounces = units * 0.035274*102;                                            
  Serial.println("Сила тяги = " + (String)ounces + " Н*м");                                      
     }
}
 
Последнее редактирование:

dekort

✩✩✩✩✩✩✩
18 Дек 2018
11
0
подели на два блока , отдельно считай данные запоминай их в глобальные переменные (усредненное значение) , отдельно выводи все в сериал