Как объединить цифры в одно число?

Bina
Offline
Зарегистрирован: 13.12.2015

Здравствуйте!

Как объединить цифры в одно число?

К примеру a=20 b=15 то с должно иметь  2015 c=2015.

Kак слить цифры в одно числои записать их в переменного для использования . 

В программе они выглядят так 7 цифр 7 сегментов 1,4,5,0,0,0.

textfield[0],textfield[1],textfield[2],textfield[3],textfield[4],textfield[5],textfield[6]

а надо как 145000.

 

 

/////////////////////////////////sketch брал тут//////////////////////////////////////////////// 

////////////////////////////////////////////////////////////////////////////////////////////////
 
 
char textfield[7];
long Fstart_MHz;
void setup() {
Serial.begin(9600);  
}
void loop() {
        char  lcd[7]= {textfield[0],textfield[1],textfield[2],textfield[3],textfield[4],textfield[5],textfield[6]};
        int sig;
        for (sig = 0; sig < 7; sig = sig + 1)   {
        delay(10);
        Serial.println(lcd[sig]);  
        //tft.print(lcd[sig]);  //выводит мелкие на дисплей цифры по очереди //                 https://www.adafruit.com/products/1651
        Fstart_MHz=lcd[sig]-48; //задает частоту для генератора si5351
        
        //si5351.set_freq(Fstart_MHz*100000000ULL, SI5351_PLL_FIXED, SI5351_CLK0); //     https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/pinouts
}
}
 
 

 

Bina
Offline
Зарегистрирован: 13.12.2015

Radjah
Offline
Зарегистрирован: 06.08.2014

a+b*10+c*100+d*1000+...

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Bina, если не секрет - где вы учитесь?

Bina
Offline
Зарегистрирован: 13.12.2015

Секрета нет. Учиться закончил 1990. Пишу так для себя как хобби когда есть настроение . Восновном на Flowcode , Siemens Logo . Там графические редакторы . С++ знаю не очень.

Bina
Offline
Зарегистрирован: 13.12.2015

Radjah пишет:

a+b*10+c*100+d*1000+...

Очень благодарен, попробую !!!!! Я думал есть функция а нее просту математика ;).

Bina
Offline
Зарегистрирован: 13.12.2015
char a=1;
char b=2;
char c;
void setup() {
Serial.begin(9600);  
}
void loop() {
 c=b+a*10;
 Serial.print(c,DEC); 
 delay(500);    
}

 

Bina
Offline
Зарегистрирован: 13.12.2015

где то так 

char a=1;
char b=2;
char c=3;
char d=4;
char e=5;
char f=6;
char g=7;


double a1;
double b2;
double c3;
double d4;
double e5;
double f6;

void setup() {
Serial.begin(9600);

a1=b+a*10;
b2=c+a1*10;
c3=d+b2*10;
d4=e+c3*10;
e5=f+d4*10;
f6=g+e5*10;
Serial.print(f6);
}
void loop() {    
}

может умнее предложил кто

Radjah
Offline
Зарегистрирован: 06.08.2014

Массивы и циклы.

Bina
Offline
Зарегистрирован: 13.12.2015

Массивы не могу поменять они раздроблены на 7 a циклы можно.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Bina пишет:

Секрета нет. Учиться закончил 1990. Пишу так для себя как хобби когда есть настроение . Восновном на Flowcode , Siemens Logo . Там графические редакторы . С++ знаю не очень.

Заканчивается год. Вероятно в ВУЗах заканчивается семестр. За несколько недель я вижу вопрос, аналогичный вашему третий или четвертый раз.

Bina
Offline
Зарегистрирован: 13.12.2015

Pад бы вернуть годы но время ушло. ;)

http://www.qrz.com/db/DL3LD/?mlab=

Что то типо этого пишу.

https://www.youtube.com/watch?v=tDRM7mG8XG8

Тут есть пару моих переделок под Si5351.

https://groups.yahoo.com/neo/groups/k6bez_projects/info

Bina
Offline
Зарегистрирован: 13.12.2015

Sindbad
Offline
Зарегистрирован: 08.12.2015

Bina пишет:

char a=1;
char b=2;
char c;
/* ....*/
c=b+a*10;

В исходном массиве char хранятся коды символов или числовые значения? Если коды, то они отличаются от числовых значений на 48. Естественно, умножать на степени десяти нужно не коды, а числовые значения.

Далее. переменная с объявлена как char, но по смыслу в ней собирается многозначеное число. Логично объявлять её как числовой целочисленный тип (byte, int или long). Конечно, язык С позволяет абстрагироваться от типа и работать с char как с byte, но зачем? В любом случае при таком объявлении в переменную с поместится не более чем двузначное число.

arduinec
Offline
Зарегистрирован: 01.09.2015
Примерно так:
byte sig;
long int rezultat = 0;
for (sig = 0; sig < 7; sig++) {
  rezultat = 10 * rezultat + textfield[sig] - 48;
}
Serial.println(rezultat);

Зачем нужен массив lcd[7] если уже есть textfield[7] ?

 

Bina
Offline
Зарегистрирован: 13.12.2015

Я знаю спасибо . Все верно -48.

char a=1.......a=7 , 0=48........9=57

есть,

#define TEXT_LEN 7
char textfield[TEXT_LEN+1] = "";
uint8_t textfield_i=0;

-------------------------------------

//if a numberpad button, append the relevant # to the textfield
        if (b>=3 ){                                                         
          if (textfield_i < TEXT_LEN) {
            
            textfield[textfield_i] = buttonlabels[b][0];
            textfield_i++;
	    textfield[textfield_i] = 0; // zero terminate
            
          }
        }

 

Bina
Offline
Зарегистрирован: 13.12.2015

       if (b == 0) { 
       tft.setCursor(180,20);
       tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
       tft.setTextSize(1);  
       long int rezultat = 0;
       for (textfield_i = 0; textfield_i < 7; textfield_i++) {
       rezultat = 10 * rezultat + textfield[textfield_i] - 48;
        }
       si5351.set_freq(rezultat*1000ULL, SI5351_PLL_FIXED, SI5351_CLK0);
       tft.print(rezultat); 
               
        }

 

Bina
Offline
Зарегистрирован: 13.12.2015
Подменил удалил запустил.Спасибо огромное всем за помощь .
Осталось пару косяков убрать . 
Чтобы понимала 1 разряд 2..до 7.
А то при вводе 100 выдает 946672 ;)
 
 
 
Bina
Offline
Зарегистрирован: 13.12.2015
       // F1 frequency Start
       if (b == 0) { 
       tft.setCursor(180,20);
       tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
       tft.setTextSize(1);  
       int sig;
       long int F = 0;
       for (sig = 0; sig < textfield_i; sig++) {
       F = 10 * F + textfield[sig] - 48;
        }
       si5351.set_freq(F*100000ULL, SI5351_PLL_FIXED, SI5351_CLK0);
       tft.print(F); 
               
        }
Ну вот убрал все партаки.
Без переменной int sig; нее обошлось всетаки.
Иначе textfield_i мешают друг другу .
Сейчас все работает . Спасибо всем кто  откликнулся и помог .