Қарапайым Arduino сериялық арифметика

Мен ұшақтың статикалық маржасын массасын, сәтін және қолын есептеу арқылы есептеу үшін бағдарлама жасаймын. Шындығында үлкен сандармен айналысады.

Арифметиканың үлкен сандарға дұрыс қолданылатындай етіп менің кодты орнатуда қиындық туды. Мен әлі күнге дейін жұмыс істеймін, бірақ кіріс 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;
  }
}

Рахмет.

0
Бұдан әрі қарай жүрместен оқып, түсініп алыңыз: hackingmajenkoblog .wordpress.com/2016/02/01/hellip;
қосылды автор Majenko, көзі
@ Маженко жасайды
қосылды автор TestOChangeO, көзі

1 жауаптар

Num1 = 0 қайталауды қалайсыз ба? in loop() ішінде?

Циклдік() Serial.available() және Serial.read() нұсқаларынан әлдеқайда жылдамырақ болғандықтан, ол тек бір цикл үшін бір таңбаны оқиды.

Бөлгіш/сандық емес таңбаны алған кезде есепті және клирингті жасаңыз.

1
қосылды
Ия. Бұл жұмысты орындау үшін соңғы кодының айналасында else {...} қосуға болады. Бұл кейіпкерлерді буферге көшіріп, одан кейін барлық хабарламаны білетіннен кейін, atol (), atoi (), atof() ... және т.б. сияқты буферде жасауға болады.
қосылды автор Dave X, көзі
сондықтан 'жауап = num1 + num2' алдында қанағаттанбайтын сандық емес таңба қажет ететін өтініш бар ма?
қосылды автор TestOChangeO, көзі