Ви не увійшли.
Сторінки 1
Читаю книгу по работе со скетчами, и ничего не понимаю. Если не трудно, помогите. Есть 6 входов и 2 выхода, необходимо по активации любого, из первых пяти входов - активировать выход 1 и при активации любого второго, из первых пяти входов - активировать выход 2. При активации выхода 6 - сбросить. Тыкните куда копать, в ардуино полный ноль, пока.
Неактивний
Возможно, что вы видите то что и изображено. Хорошая литераура, для начинающих - редкость. Разобраться с Ардуино вам поможет изучение устройства компьютеров и их цифровой логики, языка программирования С/С++ и Ассемблера, технической документации на микроконтроллеры и конечно же доументации и исходников библиотек Ардуино.
Неактивний
Я незнаю, что вам посоветовать из современной литературы. Я начинал учиться по книгам Н. Вирта, Д. Кнута и др. Вот неплохая книжица, для начинающих, по компьютерам и совершенно бесплатно: 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)
Неактивний
Пока пришла такая мысль со сбросом пока не думал.
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 входов и 2 выхода, == у вас 1 (один) вход и 2 выхода на схеме.
необходимо по активации любого, из первых пяти входов - активировать выход 1 == это понятное условие.
и при активации любого второго, из первых пяти входов - активировать выход 2. == тут или логика нарушена или проблемы с падежами.
При активации выхода 6 - сбросить. == это понятное условие.
Что ещё не так?
а если конкретно по скетчу, то все не так ...
Остання редакція renoshnik (2019-01-15 10:20:03)
Неактивний
Вспомнилась военная кафедра КПИ. Тема:" Порядок действий командира при получении боевой задачи".
Получив боевую задачу, командир:
1. Уясняет её.
2. Оценивает обстановку.
3. ...
Уяснить задачу из первого поста мне не удалось.
Может быть, следует по отдельности описать реакцию программы на активацию каждого входа?
По схеме из поста №5 контроллер не сможет определить нажатия кнопок.
Остання редакція MikeM (2019-01-15 15:08:25)
Неактивний
По схеме из поста №5 контроллер не сможет определить нажатия кнопок.
Кажется понял. Надо делать так?
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 {
// действий нет
}
}
Неактивний
Уяснить задачу из первого поста мне не удалось.
Попытаюсь сформулировать задачу по другому. Есть пять систем порошкового пожаротушения и модуль на 8 реле, к каждому реле можно приписать любое количество систем (при активации любо приписанной системы - сработает реле). В этом же помещении есть система пенного пожаротушения, которая запускается по двум сигналам (логика И). Необходимо запустить пену, если запустились две любые системы с порошком.
Неактивний
Так, а зачем мудрить то так? Как я понял у вас пять датчиков возгорания, 8 порошковых и 1 пенный автоматический огнетушитель. Датчики подключаете на отдельные входы контроллера а реле на отдельные выходы, и делаете программу управления, с какой угодно логикой. И все.
Неактивний
Всё намного сложнее, каждой системой порошкового тушения управляет свой прибор, который следит за датчиками пламени, включает оповещение, переключает режимы работы, формирует задержку для эвакуации людей, эти приборы между собой и с блоком реле "общаются" по RS485, а шкаф управления пеной релейный и ему для запуска необходимы два сигнала.
Неактивний
Так а что тогда вам нужно сделать, снять информацию и включить пену, по сложному алгоритму? Зачем здесь микроконтроллер?
Неактивний
Если я правильно "вкурил" тему, то всю логику можно реализовать на одном (!) транзисторе и (количество_первичных_каналов + 1) резисторах. Дополнительный резистор - между базой и эмиттеромм, остальные - от источников к базе. Номиналы рассчитать так, чтобы на базовом резисторе при активизации одного канала падало 0,4 вольта (в случае использования кремниевого биполярного).
Остання редакція MikeM (2019-01-15 22:24:07)
Неактивний
Ну, не все так совсем просто. Нужно обеспечить еще и помехоустойчивость, и надежность логической схемы. Но микрокомпъютер для такой задачи все равно, что из пушки по воробьям стрелять. Я бы сделал релейно-диодную логику и голову не морочил с программированием. Но это сейчас не модно, сейчас микроконтроллеры просто обязаны вставлять в каждый электрочайник.
Неактивний
Надёжность закложена в предельной простоте схемы. Помехоустойчивость определяется уровнем передаваемых сигналов. С этих точек зрения схема - предел совершенства. Реальный недостаток - чистая комбинационность. Если нужны задержки, тогда здаюсь.
Неактивний
Ну это вам виднее, что нужно. Для задержек есть релейные таймеры и NE555, в конце концов. Успехов.
Неактивний
Спасибо всем за советы, получил сегодня свою первую Ардуинку. Терпеть не смог, собрал на коленке. Залил скетч из поста №10, реле пока не подключал, информацию смотрел в мониторе порта. Всё как я хотел. При сработке одного реле на 3 пине 648, при сработке двух реле на 3 пине 724. Ещё раз всем спасибо.
Неактивний
необходимо по активации любого, из первых пяти входов - активировать выход 1 и при активации любого второго
Позанудствую. Под активацией можно понимать:
а) переход из 0 в 1;
б) из 1 в 0;
в) просто удержание 1 не менее чем X мс, т.е. по уровню, а не по фронту сигнала.
Сброс должен заставить схему забыть эти события? А если у нас вариант "в"?
Сторінки 1