jams

Входы и выходы Arduino (Условия)

7 сообщений в этой теме

jams    74

Привет всем. первый раз держу ардуинку. Поставили такую задачу: На руки дали Arduino Mega 2560 R3   и такую задачу. надо задействовать 8 входов, а остальное выходы оставшиеся (их там много). Надо сделать так что бы эти 8 входов были расширены таким способом.: Допустим на  вход 1 подаем единичку а на другом выходе тоже единичка и так до восьми входов., но далее мы подаем комбинацию вход 1 и 2 вместе подаем по единичке и единичка выходит еще на одном свободном выходе и так со всеми восемью входами. например имеем входы 1,2,3,4,5,6,7,8, и делаем такую комбинацию после того как все выходы исчерпаны по одиночному подключению вход и выход. продолжаем дальше вход1+2=выход9 и так далее: 1+3=10, 1+4=11, 1+5=12... потом 2+2=...2+3...2+4... и так далее пока не закончатся все выходы. Теперь вопрос от человека первый раз державшего на руках вышеописанный девайс: Как это нарисовать в скетче? 
БлагоДарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    297
30 минут назад, jams сказал:

Как это нарисовать в скетче? 

Так и пишите, как слышите.

Первая строчка скетча:

Если Вх.1 = 1 и Вх.2 = 0 и Вх.3 = 0 и Вх.4 = 0 и Вх.5 = 0 и Вх.6=0 и Вх.7=0 и Вх.8 = 0 то Вых.1 = 1

Слово "если" заменяете на английское "if", "=" заменяете на "==", "и" заменяете на "&&", "то" просто выбрасываете, последнее "=" оставляете как есть "=". Ну, и побольше круглых скобок, типа, каждое выражение взять в скобки (Вх.2==0)

Ну, и так далее по всем комбинациям.

Изменено пользователем Yurkin2015

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
jams    74

void setup() {
if1=1}   Так?

 

 

9 минут назад, Yurkin2015 сказал:

Так и пишите, как слышите.

Первая строчка скетча:


Если Вх.1 = 1 и Вх.2 = 0 и Вх.3 = 0 и Вх.4 = 0 и Вх.5 = 0 и Вх.6=0 и Вх.7=0 и Вх.8 = 0 то Вых.1 = 1

Слово "если" заменяете на английское "if", "=" заменяете на "==", "и" заменяете на "&&", "то" просто выбрасываете, последнее "=" оставляете как есть "=". Ну, и побольше круглых скобок, типа, каждое выражение взять в скобки (Вх.2==0)

Ну, и так далее по всем комбинациям.

приведите пример пожалуйста 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    297

Вы забыли знак равенства поменять на знак сравнения, как я писал.

Да, я забыл добавить, что вместо "Вх.1" надо писать digitalRead(1), а вместо "Вых.1=1" надо писать digitalWrite(1,1)

И всё это дело внутри loop(){ ...................... }.

Изменено пользователем Yurkin2015

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    297

@jams Неплохо.

Только про слово "Если" забыли. Вам надо написать всю строчку из моего примера, только заменить  слово-в-слово все русские слова на программные слова.

Начните с "if" и далее по тексту все слова и знаки. Все !

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Lost13
      помогите с простиньким скетчом для ардуино уно
      задача :
      на вход (А0) подается логический сигнал короткими импульсами, и если  промежуток между сигналами меньше 2-х секунд , то на выходе (d2) загорается светодиод на 3 секунды, если промежуток между сигналами больше 2-х секунд то он игнорируется 
    • Автор: SaintYGL
      Здравствуйте!
      Данная тема посвящена разработке устройства, имеющего название "Лампа с беспроводным управлением на Arduino".
      Краткая предыстория: я - студент последнего курса техникума, а данная тема - мой дипломный проект. Выбран был в спешке, далеко не самое дальновидное решение, как показала практика, особенно с учётом того, что тема была взята здесь же, на сайте паяльник, в этой статье, и имела незаконченное состояние, из-за чего сейчас и возникают большие неприятности. 
      Концепция: устройство имеет Bluetooth-модуль, по которому соединяется с телефоном, посредством чего и осуществляется беспроводное управление. Также к Arduino подключено двухканальное реле, которое переключает ток, идущий к патронам, в которые вкручены лампы. По команде, переданной по bluetooth, реле переключается в одно из положений (обе выкл.  / 1 вкл, 2 выкл. / 1 выкл, 2 вкл. / обе вкл.)
      Загвоздки: 1) В статье всё осуществляется с помощью отдельного микроконтроллера ATMega 328p, расположенного на макетной плате, в то время как Arduino используется лишь как программатор. Мне же необходимо, чтобы данное устройство работало не с отдельным микроконтроллером, а с самой Arduino. Кварцевый резонатор в ней есть, кнопка есть, диоды есть, bluetooth-модуль и реле докуплены.
      2) Если копировать код из статьи (а точнее перепечатать его со скриншота) и вставить в Arduino IDE, то появятся следующие ошибки: 
      Lamp: 5: error: a function-definition is not allowed here before '{' token
      D: \ Saint \ \ \ \ \ \ \ "\ \ \ \ \ \ \ \ \ Lamp \ Lamp.ino: In function 'void loop ()':
      Lamp: 16: error: 'incomingInt' was not declared in this scope
      Lamp: 27: error: 'class HardwareSerial' has no member named 'printIn'
      Lamp: 30: error: expected '}' at end of input
       
      Сам код, чтобы его не нужно было также перепечатывать со скриншота:
      #include <Wire.h>  int incomingInt = 0  void setup ( )  {  Serial.begin (9600) ;  Serial.setTimeout (1000) ;  pinMode (7, OUTPUT) ;  pinMode (5, OUTPUT) ;  }  void loop ( )  {  if (Serial.available ( ) > 0)  {  incomingInt = Serial.parseInt ();  if (incomingInt = 500)  {  digitalWrite (5, HIGH) ;  }  else digitalWrite (5, LOW) ;  if (incomingInt == 422)  {  digitalWrite (7, HIGH) ;  }  else digitalWrite (7, LOW) ;  Serial.printIn(incomingInt) ;  }  }   
      На данный момент это всё, по мере развития проекта тема будет мной дополняться. Также я буду рад любому совету, который поможет разобраться с этим устройством. Связаться со мной можно через ВКонтакте: vk.com/sainty_gl
    • Автор: mefi73
      Кроме классических Arduino с микроконтроллерами Atmel существуют так же платы, в основе которых лежат другие микроконтроллеры. Одной из таких ардуин является модель 101, в основе которой находится Intel Curie. Выглядит она так:

      Поскольку ардуино это проект открытый, то изготавливать совместимые платы может кто угодно, иногда изменяя схему.
      Так вот, у компании DFrobot свой взгляд на arduino 101. Представляю вашему вниманию DFRobot Curie Nano.


      Для сравнения приведу фото этой платы с некоторыми другими (леонардо, esp32, NodeMCU). Плата довольно компактна.

      Не вижу смысла перепечатывать характеристики микроконтроллера из даташита , просто приведу содержимое первой страницы.

      расположение и назначение выводов DFRobot Curie Nano представлено на следующем изображении.

      Итак, на борту 32-битный микроконтроллер, работающий на частоте 32 мегагерца. Есть встроенный 6-осевой акселерометр, Bluetooth, часы реального времени. То есть микроконтроллер изначально задуман для создания носимых умных устройств. К тому же DFRobot Curie Nano меньше по размеру, чем arduino 101.
      Для программирования DFRobot Curie Nano можно использовать фирменную IDE от Intel (но я её не прбовал), либо ArduinoIDE. На ArduinoIDE я и остановлюсь.
      Что бы ArduinoIDE могла работать с Curie, необходимо добавить поддержку этого микроконтроллера в «менеджере плат».

      Всего необходимо скачать чуть менее 200 мегабайт. На скриншоте только один из скачиваемых пакетов.

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

      Вот и вся установка.
      Стоит отметить, что работа с ардуино 101 (и соответственно с DFRobot Curie Nano) ничем не отличается от других плат ардуино, построенных на микроконтроллерах AVR. Дело в том, что с "ядром" Intel Curie Boards устанавливаются библиотеки, которые заменяют встроенные в ArduinoIDE библиотеки (Wire, SPI, EEPROM, servo и так далее). Кроме того, в комплект пакета поддержки входят библиотеки, специально предгазначенные для микроконтроллера Intel Curie - CurieBLE для работы с bluetooth, CurieI2S, CurieIMU для работы со встроенным датчиком положения, power для спящего режима, CurieTime для работы со встроенным RTC, CurieTimerOne в пояснениях не нуждается.
      Для прошивки микроконтроллера отведено 155682 байт, это больше чем у большинства микроконтроллеров AVR, используемых в платах ардуино. Но, одна и та же программа может занимать разный объем в микроконтроллерах разной архитектуры.  Я решил сравнить объем программ, компмллируемых для Intel Curie и ATmega 328p (arduino nano). Итак...

      С ATmega328p всё закономерно, больше объем скетча - больше памяти занимает скомпилированный код. А вот с Intel Curie не все так просто. Даже пустой скетч занимает 31% памяти. Но далее с ростом скетча рост скомпилированной программы значительно меньше, чем у ATmega328p.
      На данном примере я покажу совместную работу встроенной в ядро Intel Curie библиотеки и библиотеки U8g2. Это скетч простых часов, которые выводят данные на дисплей.
      #include <CurieTime.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0,U8X8_PIN_NONE); char c_time[10]; void setup() {   u8g2.begin(); } void loop() { int i_hour=hour(); //получаем время: час, int i_minute=minute(); //минуты, int i_second=second(); //секунды и помещаем их в соответствующие переменные String s_time = String(i_hour) + ":" + String(i_minute) + ":" + String(i_second); //конактенация и одновременный пере s_time.toCharArray(c_time, 10); //преобразование переменной типа string в тип char   u8g2.firstPage(); //вывод данных на дисплей   do {   u8g2.setFont(u8g2_font_ncenB14_tr); //выбор шрифта   u8g2.drawStr(30, 36, c_time); //эта функция может вывести только значение переменной типа char   }     while ( u8g2.nextPage() ); }
      Создатели arduino 101 хорошо поработали над совместимостью исходного кода, предназначенного для микроконтроллеров AVR, с микроконтроллером Intel Curie. То есть,  большинство сторонних библиотек, написанных для arduino, совместимы так же и с DFRobot Curie Nano.
      Подробно рассматривать библиотеки, поставляемые с ядром Intel Curie, я не буду. Так как примеров, поставляемых с ядром, достаточно для понимания их работы. Отдельного внимания заслуживает библиотека CurieBLE и собственно работа с BLE, но это тема отдельной статьи.
      Кроме того, на базе Curie Nano можно построить нейронную сеть при помощи Curie's neuron SDK, вот только библиотека платная и стоит 19$.
      P.S. DFRobot Curie Nano мне очень понравилась. Уже есть огромный план по использованию этой платы по назначению, то есть для создания носимого устройства с применением возможностей микроконтроллера Intel Curie (часы с навигацией и расчетом астрономических событий для туристов и фотографов)
      Отдельная благодарность магазину dfrobot.com за предоставленную на обзор DFRobot Curie Nano.
       
    • Автор: MolodoyElectrik
      Всем привет.
      Пишу скетч для ардуины, нужно чтоб 1 светодиод мигал постоянно, и 4 светодиода включались и выключались поочередно. Все должно происходить в одно время разумеется и Delay здесь не катит. Вот пример как должно быть только с delay:
       
      Сделал такой скетч:
      Тот который 1 светодиод мигает все хорошо, а вот с 4, которые должны подряд включаться какая то лажа) Где напортачил?
      Предыдущую тему не в том разделе создал, удалите пожалуйста. 
    • Гость izakom
      Автор: Гость izakom
      Добрый день,
      Никак не могу, подключить АЦП к микроконтроллеру. Будет здраво, если кто-нибудь сможет подсказать где моя ошибка или хотя бы где ее искать.
      Я подключаю ADS1240 к arduino UNO. Описание АЦП слишком тяжелое, поэтому прикрепляю ссылку
      http://www.ti.com/lit/ds/sbas173f/sbas173f.pdf
      Также во вложении прикрепил 2 схемы подключения, которые побывал.
      Контроллер общается с АЦП по SPI, где D10 -SS, D11 - MOSI, D12 - MISO, D13 - SCLK.

      Сейчас моя задача, измерять напряжение на потенциометре с достаточной точностью. 
      К сожалению внутренний АЦП arduino 10 разрядный, поэтому пытаюсь подключить внешний.

      Также прикрепляю программу, при помощи которой пытаюсь снимать показания. Но к сожалению на контроллер приходит только "0".
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt
      Схема_2.pdf
      Схема_1.pdf
      Тестова программа.txt