Извлечь число

bazilio
Offline
Зарегистрирован: 06.02.2017
Прошу сильно не пинать в программирование не селен.
Вообшем имеется программа которая шлет в UART  слово типа AB0123456789;
Как я понимаю АВ-идентификатор, 0123456789-переменная которую надо вытащить умножить на 4 и отправить на LCD, ;-конец слова.
Слово я получяю а вот как вытянуть число не могу понять
#include <LiquidCrystal.h>

char ind;
long out; 
LiquidCrystal lcd(12, 13, 7, 6, 5, 4);
void setup() {
  lcd.begin(16, 1);
  Serial.begin(9600);
}

void loop() {
   while(Serial.available() > 0) {
            ind=Serial.read();
 
     out=atoi(ind);
 

lcd.print(out);
      
   }
}

 

 
 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Сначала пропускаете "AB" и одновременно обнуляете out, заем в цикле out = out*10 + ind, пока не встретится ";".

bazilio
Offline
Зарегистрирован: 06.02.2017

andriano пишет:

Сначала пропускаете "AB"

Вот с этого места по подробнее пожалуйста. Я разобрался как убрать ";" в конце функцией replace() , а как убрать "AB"?

Nosferatu
Offline
Зарегистрирован: 04.11.2012

Если кроме этого ничего не принимаете, то можно цикл while заменить на:

  if (Serial.available() > 0)
    out = Serial.parseInt();

https://www.arduino.cc/en/Serial/ParseInt

bazilio
Offline
Зарегистрирован: 06.02.2017

Всем откликнувшимся спасибо. задачу решил substring() c последующим toInt();