Взять сигнал с цифровых пинов и перевести в десятичное число ( ARDUINO)
- Войдите на сайт для отправки комментариев
Ср, 19/07/2017 - 10:48
Всем привет, народ в общем такая проблема, подключил прибор на цифровые входы.
Прибор при подаче напряжения соотвественно выдаёт значения по на своих выходах соответственно либо 0 либо +5v (соответственно либо выводится значение в виде 0 или 1 )
void setup() { Serial.begin(9600); // установка скорости работы серийного порта на 9600 бит/сек } void loop() { char output_string[25]; //создаём массив sprintf ( output_string, "%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i", digitalRead(46), digitalRead(45), digitalRead(44), digitalRead(43), digitalRead(42), digitalRead(41), digitalRead(40), digitalRead(39), digitalRead(38), digitalRead(37), digitalRead(36), digitalRead(35), digitalRead(34), digitalRead(33), digitalRead(32), digitalRead(31), digitalRead(30), digitalRead(29), digitalRead(28), digitalRead(27), digitalRead(26), digitalRead(25), digitalRead(24), digitalRead(23), digitalRead(22) ); //записываем в значение с pin 22, 23 и т.д Serial.println(output_string); //вывести массив на экран delay(1000); // задержка 1 сек. }
выглядит это в работе вот так
но хочется увидет нормальное число в десятичном виде , к примеру на 1 значении
0010101010100100100101000 = 5589288
помогите пожалуйста новичку в этом нелёгком деле)))))
Мда . Скоро будут спашивать на форуме как умножить 2 на 2. Эта нелегкая операция сломала мозг передовым новичкам Ардуино. Вы что школьник маладших классов?
Теперь по теме. Есть бинарное число 0101 . Как это будет в десятичной системе 0*2(в степени)3+1*2(в степени)2+0*2(в степени)1+1*2(в степени)0
ПС: степень двойка это сдвиг влево (<<)
0*(0x1<<3)+1*(0x1<<2)+0*(0x1<<1)+1*(0x1<<0)
Я спрашиваю как это реализовать с помощью кода на arduino a не сколько будет 2 на 2
Теперь по теме, прибор выводит число которое мне нужно преобразовать в десятичную систему счисления
если тут сидят действительно умные ребята, подскажите КОД а не примеры которые нужно решать и получать число 5
К сожалению код не работает, всегда выдает 0. И еще вопрос, как потом это число записать в переменную.
К сожалению код не работает, всегда выдает 0. И еще вопрос, как потом это число записать в переменную.
Начните с бета-тестирования. Возьмите код из 8 входов. Может у вас идет переполнение. Направление я вам дал. А дальше вы сами.
Не могу понять, вообще какаято хрень получается, взял сигнал с трех ножек (до первой единицы).
выводит совсем разные вещи:
Вот что рисует:
Команда ^ в Си это исключающее ИЛИ . А вот и приходится 2 в степени n делать сдигом влево.
http://cppstudio.com/post/300/
https://habrahabr.ru/post/146793/ строка 14
1. Порты подряд. поэтому проще.
2. Квон, а зачем ты возишся с дураком, который тебе нахамил?
2. Квон, а зачем ты возишся с дураком, который тебе нахамил?
Правильно! Пока не прочитал ответ, собирался уже было про скобки подсказать, но потом передумал.
Третий закон Ньютона никто не отменял: "Всякому взбрыкнувшему, да отбрыкнется, ибо нефиг!"
Спасибо большое!!!!
Только порты в обратном порядке обходить. Это все благодоря переменной zhopa, без нее ничего бы не получилось))
"Всякому взбрыкнувшему, да отбрыкнется, ибо нефиг!"
Хорошая формулировка! Главное - точная. Не удивлюсь, если сэр Исаак Ньютон примерно так и формулировал.