Как аналоговые пины A0 A1 A2... использовать как цифровые?

servilat
Offline
Зарегистрирован: 12.12.2013

День добрый!

подскажите хочу перенести внешние сигналы с цифровых d2 d3 на аналоговые a0 a1 как написать в программе?
 

int Enable_Sensor_1 = 2; // датчик 1
int Enable_Sensor_2 = 3; // датчик 2

void setup()

{

  digitalWrite(Enable_Sensor_1, HIGH);   // деактивация датчика 1
  digitalWrite(Enable_Sensor_2, HIGH);   // деактивация датчика 2

}

 

leshak
Offline
Зарегистрирован: 29.09.2011

Вы не поверите ;), но нужно просто сказать о своем желании не форуму, а ардуине ;)

int Enable_Sensor_1 = A0; // датчик 1

Только ваш код скоре всего не будет ни на аналоговых, ни на цифровых работать. Не знаю что вы хотели сделать, но сдели вот что: "включили подтягивающий резистор на пинах Enable_Sensor_1, и Enable_Sensor_2). Вернее может быть и будет работать, но "если повезет". "Плавающие глюки" - могут появится влюбой момент.

P.S. Кстати, ответ на свой вопрос, вы могли найти в документации http://arduino.ru/Reference/DigitalWrite . Там "чуть-чуть по другому выглядит", но работать будет так-же.

P.S.S. И зачем тип int использовался?

servilat
Offline
Зарегистрирован: 12.12.2013

спасибо!!!

я конечно подозревал что все так просто, но проверю попозже сейчас нет под рукой платы.

какой тип использовать ? boolean?

брал с примеров. да даже в примере по ссылке  int стоит

int ledPin = 13;                 // Светодиод подключенный к вход/выходу 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // устанавливает режим работы - выход

}

 

пропущены строки ? я их не указал специально.

pinMode(Enable_Sensor_1, OUTPUT);  // устанавливает режим работы - выход
pinMode(Enable_Sensor_2, OUTPUT);  // устанавливает режим работы - выход

ну насчет работы на цифровых все работает, а почему то недолжен?, да правильно включил высокий на датчиках на обоих это в setup, ниже я им по очереди LOW подключаю.

нетак то что?

inspiritus
Offline
Зарегистрирован: 17.12.2012

А еще 14 , 15, 16 , 17, 18, 19.

не так - Вы не провели инициализацию пинов, как OUTPUT, командой pinMode, потому пины работают, как входы с подтяжкой к плюсу, через резистор 20 кОм.

servilat
Offline
Зарегистрирован: 12.12.2013

да это есть, просто не стал выкладывать ибо понятно, а вот со входами аналоговыми было не понятно.

всем спасибо!

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

> а почему то недолжен?

Не, ну вы смешной. Ну представте что вы позвали соседа-автоэлектрика. Помочь поменять в фарах лампочки с обычных на ксенон. Так как "через час в дорогу... а светят очень плохо". В процессе он заглядывает под капот и восклицает "куда ты ехать собрался? У тебя же вместо тросика газа какая-то ниточка привязана!!! Далеко ты не уедешь".  На что вы удивленно(!) смотрите на него: "Почему это не уеду? Запросто уеду.  Я тросик в багажник специально спрятал. Да и со старыми лампами, пробовал газ нажимать - нормально движок обороты набирает".

>да правильно включил высокий на датчиках 

Срочно прекращайте ожидать на форуме телепатов. Иначе либо игронить будут, либо троллить все кому не лень. По коду который вы ПОКАЗАЛИ, вы не включали высокий. Вы включали подтягивающий резистор. И что в итоге будет на пине, высокий или низкий - зависит от сопротивления нагрузки на пине и фазы луны.

Вообщем всегда перечитывайте свое сообщение глазами человека которые не видит вашей схемы, не знает что вы делаете, не смотрит вам через плечо, не знает что вы задумали. Представте себе что вы взяли себе советчика-помошника. Который парализован и сидит за ширмой. Может только слышать вас и посмотреть на бумажку которую вы ему принисете. К тому же - со склерозом (может через пол часа забыть что вы ему говорили раньше). Вот такому "консультанту" вы и должны объяснить "что у вас происходит и что вы хотите".

>какой тип использовать ? boolean?

А почему boolean? Какие возможные значения бывают у булеан? Что вам нужно сохранить туда? Номер пина. Каким может быть номер пина?  Может быть дробным? насколько большим может быть? Может быть отрицательным? Возмите бумажку, ответте на все эти вопросы. Потом идете в раздел програмирование, читаете про ВСЕ типы данных. И подбираете какой "минимально подходит" (сможет не потерять значение и при этом не расходовать лишнюю память).

Вообщем вам нужно самому научится подбирать нужный тип данных под конкретную ситуацию, а не "потому что кто-то на форуме сказал" или "в примере так". И на форуме и авторы примеров - люди. Которые могут быть ошибаться, могут быть не аккуратными (а... и так сойдет), могут быть "вредителями".

servilat
Offline
Зарегистрирован: 12.12.2013

ну так мы тоже учимся :)

1все понятно. спасибо!

mralvad
Offline
Зарегистрирован: 22.11.2016

ну растолкуйте пожалуйста эти строки:

Руководство на микроконтроллер Atmega не рекомендует производить быстрое переключение между аналоговыми входами для их чтения. Это может вызвать наложение сигналов и внести искажения в аналоговую систему. Однако после работы аналогового входа в цифровом режиме может потребоваться настроить паузу между чтением функцией analogRead() других входов.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

mralvad пишет:

ну растолкуйте пожалуйста эти строки:

Руководство на микроконтроллер Atmega не рекомендует производить быстрое переключение между аналоговыми входами для их чтения. Это может вызвать наложение сигналов и внести искажения в аналоговую систему. Однако после работы аналогового входа в цифровом режиме может потребоваться настроить паузу между чтением функцией analogRead() других входов.

А с какой целью интересуемся?

...это значит, что для аккуратного чтения аналогового значения нужно сделать паузу, или просто отбросить первое измерение, сделанное после любой манипуляции с аналоговыми входами.

mralvad
Offline
Зарегистрирован: 22.11.2016

то есть если в скетче они будкт использоваться исключительно как цифровые, то заморачиваться ни о чем не стоит?

bwn
Offline
Зарегистрирован: 25.08.2014

mralvad пишет:

то есть если в скетче они будкт использоваться исключительно как цифровые, то заморачиваться ни о чем не стоит?

TRUE так.