Я разрабатываю программу для расчета статического запаса самолета посредством расчетов массы, момента и руки. По существу, имеет дело с большими числами.
Мне сложно настроить мой код так, чтобы арифметика правильно применялась к большим числам. То, что я до сих пор работает, но только при вводе 0-9. Арифметика не может вычислить цифры за пределами.
Я понимаю, что я разбиваю цифры на отдельные переменные, чтобы преобразовать их из формата ASCII в их предполагаемое значение. Проблема заключается в том, чтобы вернуть эти цифры вместе.
Я знаю, что это, наверное, очень просто, но после долгого перерыва я снова собираю ардуинов, и я очень ржавый.
Вот мой код:
long batterymoment,num1,num2,answer;
int batterymass = 720;
int batteryposition;
boolean mySwitch = false;
void setup() {
Serial.begin(9600);
num1=0;
num2=0;
Serial.println("Enter battery position");
}
void loop() {
while (Serial.available()){
batteryposition = Serial.read();
if(batteryposition>47 && batteryposition<58){
if(!mySwitch){
num1=(num1*10)+(batteryposition-48);
}else{
num2=(num2*10)+(batteryposition-48);
}
}
answer=num1+num2;
batterymoment=answer*batterymass;
Serial.print("Battery moment is: ");
Serial.println(batterymoment);
num1=0;
num1=0;
mySwitch=false;
}
}
Благодарю.
Вы хотите повторить num1 = 0; в цикле()?
Он читает только один символ за цикл (), потому что цикл () происходит намного быстрее, чем Serial.available () и Serial.read ().
Выполняйте отчет и очистку, когда вы получаете какой-то разделитель/символ без цифр.