#1 2019-01-14 16:59:47

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Смотрю в книгу - вижу фигу.

Читаю книгу по работе со скетчами, и ничего не понимаю. Если не трудно, помогите. Есть 6 входов и 2 выхода, необходимо по активации любого, из первых пяти входов - активировать выход 1 и при активации любого второго, из первых пяти входов - активировать выход 2. При активации выхода 6 - сбросить. Тыкните куда копать, в ардуино полный ноль, пока.

Неактивний

#2 2019-01-14 17:14:42

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

Возможно, что вы видите то что и изображено. Хорошая литераура, для начинающих - редкость. Разобраться с Ардуино вам поможет изучение устройства компьютеров и их цифровой логики, языка программирования С/С++ и Ассемблера, технической документации на микроконтроллеры и конечно же доументации и исходников библиотек Ардуино.

Неактивний

#3 2019-01-14 19:26:41

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

Читаю С. Монк Программируем Arduino. Профессиональная работа со скетчами, может что посоветуете?

Неактивний

#4 2019-01-14 19:59:35

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

Я незнаю, что вам посоветовать из современной литературы. Я начинал учиться по книгам Н. Вирта, Д. Кнута и др. Вот неплохая книжица, для начинающих, по компьютерам и совершенно бесплатно: http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf По языку С/С++ я порекомендовал бы Полный справочник по C ++ 4-е издание Герберта Шилдта. Лаконично, без воды и формализмов. Найдите его сами. Справочник по библиотекам Ардуино есть на сайте https://www.arduino.cc/reference/en/. Пожалуй, пока, этого достаточно.

Остання редакція Вячеслав Азаров (2019-01-14 20:06:08)

Неактивний

#5 2019-01-14 22:26:20

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

Пока пришла такая мысль со сбросом пока не думал. Схема подключения 

int analogPin = 3;     // зона подключена к аналоговому выводу 3
// общий вывод соединен с землей
int val = 0;           // переменная для хранения считанного значения
int relais1 = 10;       // модуль реле подключен к 10 выводу
int relais2 = 11;       // модуль реле подключен к 11 выводу

void setup()
{
  Serial.begin(9600);          //  настройка последовательного соединения
  pinMode(relais1, OUTPUT);     // переключаем цифровой вывод в режим выхода
  pinMode(relais2, OUTPUT);     // переключаем цифровой вывод в режим выхода

}

void loop()
{
  val = analogRead(analogPin);    // считываем напряжение с аналогового входа
  Serial.println(val);            // наблюдаем считанное значение

  if (val < 350) {
    digitalWrite(relais1, LOW);   // включаем реле1
  } else if (val < 700) {
    digitalWrite(relais2, LOW);   // включаем реле2
  } else {
    // выполнять действие  C
  }
}

Неактивний

#6 2019-01-15 06:49:37

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Смотрю в книгу - вижу фигу.

Ваш рисунок не соответствует описанию в первом посте..

Неактивний

#7 2019-01-15 09:31:35

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

Я же написал, что со сбросом ещё не думал. Что ещё не так?

Неактивний

#8 2019-01-15 10:19:38

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Смотрю в книгу - вижу фигу.

Ваш рисунок не соответствует описанию в первом посте..

Sledopyt пише:

Я же написал, что со сбросом ещё не думал. Что ещё не так?

причем тут сброс ?  я имел ввиду другое...

если хотите научиться программировать - научитесь формулировать задачу...

Есть 6 входов и 2 выхода,  == у вас 1 (один) вход и 2 выхода на схеме.

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

и при активации любого второго, из первых пяти входов - активировать выход 2. == тут или логика нарушена или проблемы с падежами.

При активации выхода 6 - сбросить. == это понятное условие.


Sledopyt пише:

Что ещё не так?

а если конкретно по скетчу, то все не так ...

Остання редакція renoshnik (2019-01-15 10:20:03)

Неактивний

#9 2019-01-15 15:04:27

MikeM
Учасник
З Киев
Зареєстрований: 2017-11-03
Повідомлень: 160

Re: Смотрю в книгу - вижу фигу.

Вспомнилась военная кафедра КПИ. Тема:" Порядок действий командира при получении боевой задачи".
Получив боевую задачу, командир:
1. Уясняет её.
2. Оценивает обстановку.
3. ...

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

По схеме из поста №5 контроллер не сможет определить нажатия кнопок.

Остання редакція MikeM (2019-01-15 15:08:25)

Неактивний

#10 2019-01-15 20:45:07

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

MikeM пише:

По схеме из поста №5 контроллер не сможет определить нажатия кнопок.

Кажется понял. Надо делать так? 123.jpg

int analogPin = 3;     // средний вывод делителя подключен к аналоговому выводу 3
int val = 0;           // переменная для хранения считанного значения
int relais1 = 10;       // модуль реле подключен к 10 выводу
int relais2 = 11;       // модуль реле подключен к 11 выводу

void setup()
{
  Serial.begin(9600);          //  настройка последовательного соединения
  pinMode(relais1, OUTPUT);     // переключаем цифровой вывод в режим выхода
  pinMode(relais2, OUTPUT);     // переключаем цифровой вывод в режим выхода

}

void loop()
{
  val = analogRead(analogPin);    // считываем напряжение с аналогового входа
  Serial.println(val);            // наблюдаем считанное значение

  if (val > 600) {
    digitalWrite(relais1, LOW);   // включаем реле1
  } else if (val > 700) {
    digitalWrite(relais2, LOW);   // включаем реле2
  } else {
    // действий нет
  }
}

Неактивний

#11 2019-01-15 20:54:50

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

MikeM пише:

Уяснить задачу из первого поста мне не удалось.

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

Неактивний

#12 2019-01-15 21:22:23

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

Так, а зачем мудрить то так? Как я понял у вас пять датчиков возгорания, 8 порошковых и 1 пенный автоматический огнетушитель. Датчики подключаете на отдельные входы контроллера а реле на отдельные выходы, и делаете программу управления, с какой угодно логикой. И все.

Неактивний

#13 2019-01-15 21:29:45

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

Всё намного сложнее, каждой системой порошкового тушения управляет свой прибор, который следит за датчиками пламени, включает оповещение, переключает режимы работы, формирует задержку для эвакуации людей, эти приборы между собой и с блоком реле "общаются" по RS485, а шкаф управления пеной релейный и ему для запуска необходимы два сигнала.

Неактивний

#14 2019-01-15 22:15:59

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

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

Неактивний

#15 2019-01-15 22:20:51

MikeM
Учасник
З Киев
Зареєстрований: 2017-11-03
Повідомлень: 160

Re: Смотрю в книгу - вижу фигу.

Если я правильно "вкурил" тему, то всю логику можно реализовать на одном (!) транзисторе и (количество_первичных_каналов + 1) резисторах. Дополнительный резистор - между базой и эмиттеромм, остальные - от источников к базе. Номиналы рассчитать так, чтобы на базовом резисторе при активизации одного канала падало 0,4 вольта (в случае использования кремниевого биполярного).

Остання редакція MikeM (2019-01-15 22:24:07)

Неактивний

#16 2019-01-15 22:33:56

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

Ну, не все так совсем просто. Нужно обеспечить еще и помехоустойчивость, и надежность логической схемы. Но микрокомпъютер для такой задачи все равно, что из пушки по воробьям стрелять.  smile  Я бы сделал релейно-диодную логику и голову не морочил с программированием. Но это сейчас не модно, сейчас микроконтроллеры просто обязаны вставлять в каждый электрочайник.

Неактивний

#17 2019-01-15 22:47:00

MikeM
Учасник
З Киев
Зареєстрований: 2017-11-03
Повідомлень: 160

Re: Смотрю в книгу - вижу фигу.

Надёжность закложена в предельной простоте схемы. Помехоустойчивость определяется уровнем передаваемых сигналов. С этих точек зрения схема - предел совершенства. Реальный недостаток - чистая комбинационность. Если нужны задержки, тогда здаюсь.

Неактивний

#18 2019-01-15 22:59:07

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Смотрю в книгу - вижу фигу.

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

Неактивний

#19 2019-01-17 22:18:32

Sledopyt
Учасник
Зареєстрований: 2019-01-14
Повідомлень: 8

Re: Смотрю в книгу - вижу фигу.

Спасибо всем за советы, получил сегодня свою первую Ардуинку. Терпеть не смог, собрал на коленке. Залил скетч из поста №10, реле пока не подключал, информацию смотрел в мониторе порта. Всё как я хотел. При сработке одного реле на 3 пине 648, при сработке двух реле на 3 пине 724. Ещё раз всем спасибо.

Неактивний

#20 2019-01-20 18:07:24

Gость
Гість

Re: Смотрю в книгу - вижу фигу.

Sledopyt пише:

необходимо по активации любого, из первых пяти входов - активировать выход 1 и при активации любого второго

Позанудствую. Под активацией можно понимать:
а) переход из 0 в 1;
б) из 1 в 0;
в) просто удержание 1 не менее чем X мс, т.е. по уровню, а не по фронту сигнала.


Сброс должен заставить схему забыть эти события? А если у нас вариант "в"?

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму