массив
- Войдите на сайт для отправки комментариев
Сб, 17/12/2016 - 01:16
доброго времени всем.
не могу разобратся с применением масивов , требуется при получении с аналогового входа значений заменять их другими значениями и отправлять на выход pwm.
есть массив входа и есть массив выхода
[code] const int PWM_PIN = 3; // выход расходомер const int AIN_PIN = 0; // вход расходомер byte VAF[256] //таблица выход { 205, 202, 200, 197, 195, 192, 190, 188, 186, 183, 181, 178, 176, 173, 170, 168, 166, 163, 160, 158, 156, 153, 150, 148, 146, 143, 140, 138, 136, 133, 130, 128, 126, 123, 120, 118, 116, 113, 110, 108, 106, 103, 103, 102, 102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97, 96, 96, 95, 95, 94, 94, 93, 93, 92, 92, 91, 91, 90, 90, 90, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 83, 82, 82, 81, 81, 80, 80, 79, 79, 78, 78, 77, 77, 77, 76, 76, 75, 75, 74, 74, 73, 73, 72, 72, 71, 71, 70, 70, 69, 69, 68, 68, 67, 67, 66, 66, 65, 65, 64, 64, 64, 63, 63, 62, 62, 61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 56, 56, 55, 55, 54, 54, 53, 53, 52, 52, 52, 51, 51, 50, 50, 49, 49, 48, 48, 47, 47, 46, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 34, 34, 33, 33, 32, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0 }; byte MAF[256]// таблица вход { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 20
прошу помощи я только учусь
Непонятно, чего Вы хотите. В сообщении отсутствуют вопросы.
как присвоить аналоговый вход к одному массиву
и pwm выход к другому массиву
тоесть массив VAF к PWM_PIN
а массив MAF к AIN_PIN
чтоб получилось потом что функция map будет работать по значениям из массивов
Код неполный, потому непонятно. у Вас массив входов содержит 256 значений? так? При этом в нулевом элементе массива сидит 0, в первом - 1, в 151-ом - 151 и т.д. Правильно?
А что Вы собираетесь делать, если на аналоговый вход пришло большее число? например, 700? Или Вы уверены, что не придёт?
я планирую применить сначало функцию map (0,1023,0,255)
Вы не ответили на первый и главный вопрос, прадва ли что в нулевом элементе массива сидит 0, в первом - 1, в 151-ом - 151 и т.д. Правильно? Это важно. Если это так, то Вам один из двух Ваши массивов нафиг не нужен вообще. Итак? Правильно или нет?
да все правильно
Тогда Вам этот массив вовсе не нужен. Оставляете только массив выходных сигналов (VAF). В этом массиве
в нулевом элементе выходное значение для случая, когда на входе 0
в первом элементе выходное значение для случая, когда на входе 1
во втором элементе выходное значение для случая, когда на входе 2
в тертьем элементе выходное значение для случая, когда на входе 3
......
в 255-ом элементе выходное значение для случая, когда на входе 255
Идея понятна?
Когда у Вас есть такой массив, то дальше всё пишется в одну строчку (я без map для простоты, map сами добавите)
Вот, собственно и всё.
Понятно?
вечером буду дома и сяду разбираться дальше , но примерно понял огромное спасибо
Работать не будет, т.к. пин 0 не является аналоговым входом АЦП. Посмотрите внимательно на плату, как там называются пины.
Жека,
если использовать его в качестве параметра analogRead, то всё нормально. Он (analogRead) умный. Он ожидает либо номера аналогового входа (от 0 до 5) либо сквозного номера от 14, который он сам преобразует к "от 0 до 5" там прямо стоит
if (pin >= 14) pin -= 14
посмотрите сами. А дальше он считает, что это номер входа ADC. Так что, всё там будет нормально.
получилось чтото такое , на железках пока время нет проверить .
но думаю что работать должно.
Вроде должно.
У меня совет чисто эстетический, не растаскивайте вы масив на "две простыни".
Так даже можно код и не сворачивать.
спасибо за подсказку буду делать все красивше
доброго времени
с наступившим новым годом
всем счастья и всех благ
у меня такой вопрос появился ,решил добавить к своему проэкту lcd дисплей
впринцепи все работает но показания напряжения которые выводятся на дисплей постоянно мигают подскажите что я зделал не так?
А почему Вы решили, что что-то жделаете не так?
Процесс вывода на экран сопряжен с "миганием".
Если хотите, чтобы вообще ничего не мигало, выводите показания один раз из setup().
Если хотите, чтобы мигало реже, реже выводите на экран.
Тогда Вам этот массив вовсе не нужен. Оставляете только массив выходных сигналов (VAF). В этом массиве
в нулевом элементе выходное значение для случая, когда на входе 0
в первом элементе выходное значение для случая, когда на входе 1
во втором элементе выходное значение для случая, когда на входе 2
в тертьем элементе выходное значение для случая, когда на входе 3
......
в 255-ом элементе выходное значение для случая, когда на входе 255
Идея понятна?
Когда у Вас есть такой массив, то дальше всё пишется в одну строчку (я без map для простоты, map сами добавите)
Вот, собственно и всё.
Понятно?
а у интел это одна команда xlat )))
то что реже выводить на экран это понятно но не могу сообразить как реже выводить информацию на экран но чтоб не замедлилось остальная программа
может както реализовать это по количеству изменений на pwm ножке
например каждые 100 изменений ?
Доб рого времени все не было возможности ответить всем .) Большое спамибо что помогаете таким как я "любителям начинающим" вообщем все получилось что задумывал и с lcdтоже оказалось что можно пользоваться millis и все прекрасно начинает работать )) попозже выложу скетч то что получилось . СПАСИБО
вот что получилось , и не моргает ))))
1. Зачем запятая в строке 269?
2. Переменная sekunda используется только при истинности условия в блоке стр. 330-342. Почему она определяется и вычисляется вне этого блока при каждом проходе, независимо от условия? Зачем?
3. Переменные currentMillis, previousMillis и interval используются при вычислении одного и того же условия, однако две из них объявлены беззнаковыми, а одна - знаковой. Зачем?
Я не знал как милисекунды перевести в секунды чтоб на lcd выводились секунды
В строке 269 запятую случайно поставил уберу
А переменную sekunda лучше в блоке ?
Конечно, зачем она нужна снаружи-то? Вычислять её только каждый раз. Кстати, то же самое про все остальные (строки 321-325). Что они все делают вне блока, если используются только в блоке? Всё туда.
Спасибо за совет обязательно воспользуюсь им )))
добрый вечер , люди помогите плиз ,ни как не разберусь с кнопкой
вродибы все просто но ни как не могу применить чегото упускаю видимо
смысл такой , ардуинки будет две одна будет работать как конвертор выходного сигнала и включатель одного насоса а на второй будет куча всего что не требует быстрой обработки
в первой будет несколько массивов которые должны переключатся по команде со второй дуинке я представляю это так ,например со второй дуинки прилетел один импульс включился первый массив прилетел еще один переключились на второй массив
я понимаю что можно пременить в программе нажатие кнопки но не могу понять как это осущиствить
может так ?
работу с кнопкой повторил из http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku
всех с праздиком святым)))))
проверил на железках все работает всем спасибо
)