Нужна помощь

cyber3766
Offline
Зарегистрирован: 13.11.2014

Добрый вечер!Нужна помощь в написании скетча.
Вот примерный алгоритм:С помощью фоторезистора определяем что свет ВКЛ,потом свет выключается(это фиксируется фоторезистором)и ардуино даёт команду сервоприводу сделать оборот в 90° на 3 секунды,далее он возвращается в исходное состояние.И так по кругу)Заранее выражаю благодарнось.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Для начала нужно научиться работать со всеми деталями по отдельности.

1. Фоторезистор -  выбираете на 10 кОм - при выключенном свете(и 1 кОм при включеннном). подключаете его через резистор 5 кОм к +5в - вообще как изменяется сопротивление это не важно. Место соединения двух резисторов подклчаете к А0 и таким кодом смотрите какую цифру вы получаете когда нет света и какую цифру когда есть.

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
delay(1000);
}

Нужно "поиграться" и понять на сколько колеблется эта цифра - ведь "абсолютная темнота" и "сумерки" дадут разные цифры - нужно установить границу - тоесть от "100" до "500" это темно а от "500" до "1000" это светло или определить точку перехода.

2. Сервопривод - подключается к любому PWM выходу и используете  читать тут

3. Отсчет времени с использованием millis() - функция считает милисекунды с момента запуска программы, поэтому чтобы считать время нужно сохранить значение и проверять разность с этим значением.

long offset;
int time = 3;
void setup() {
Serial.begin(9600);
offset = millis();
}
void loop() {
if (millis() - offset > time*1000){
     Serial.println("Ta-dam!");
     offset = millis(); //Обнуляем таймер
}
}

4. Условие попорота: Возвращать серву вы хотите через 3 сек - поэтому таймер должен начать отсчет после того как вы ее повернете, может надо добавить время на ее поворот. В команду таймера можно добавить только возврат сервы или добавить перемнную тригер, которая разрешт таймеру сработать только 1 раз. Также и со светом - если свет включен то условие тоже будет постоянно выполняться - чтобы его выполнить 1 раз нужн задать переменную и сбрасывать ее при потемнении, чтобы когда посветлеет тригер сработал опять.

vvadim
Offline
Зарегистрирован: 23.05.2012

Не, это называется не нужна помощь, это  называется напишите код на халяву.

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

А ещё есть раздел - ищу исполнителя. Вот там кто нибудь и потратит время на написание кода за денежку.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Халявы не будет, мы заставим его думать - и код он напишет сам.

Собственно "Заставить думать" это основная наша помошь по програмированию, потому что в реальной жизни человек сталкиваеся с программированием намного чаще чем он об этом думает.

Вообще это очень простой код, который он просит - если мы ему его просто так напишем - это морально унизит его. Поэтому, лучше, если он сам его напишет с нашей небольшой помощью.

cyber3766
Offline
Зарегистрирован: 13.11.2014

В программировании я полный 0 , так что придется мне изрядно помучиться(.А разве нельзя обойтись лишь одним фоторезистором?

Kлапаyций 99.99
Offline
Зарегистрирован: 11.10.2014

cyber3766 пишет:
В программировании я полный 0 , так что придется мне изрядно помучиться(.А разве нельзя обойтись лишь одним фоторезистором?

прекращайте себя мучить - купите серийный девайс и не парьте мосг себе и людям.

cyber3766
Offline
Зарегистрирован: 13.11.2014

Думаю найти девайс под мои условия не просто .Поэтому попытаюсь сделать это на ардуино.

faraddin
Offline
Зарегистрирован: 11.08.2013

Ищите на ютубе видеоуроки о ардуино от джереми. Там есть урок про фоторезистор, хотя все равно надо смотреть с начала иначе толку не будет если вы полный 0.