Хочу создать функцию времени суток для светофора на 24 часа утро(программа №1) день (программа №2) вечер (программа №3) и ночь

PlayRider
Offline
Зарегистрирован: 17.03.2017

Задал на ардуино программу светофора:

void setup() {

   

  pinMode(11OUTPUT); //11 выход на красный СД

  pinMode(10OUTPUT); //10 выход на желтый СД

  pinMode(9OUTPUT); //9 выход на зеленый СД

}



void loop() {

  digitalWrite(9HIGH); //включаем зеленый СД

  delay(5000); //пауза 5 секунд (пишем в милисекундах)

  digitalWrite(9LOW); //отключаем зеленый СД

  delay(500);

  digitalWrite(9HIGH);

  delay(500);

  digitalWrite(9LOW);

  delay(500);

  digitalWrite(9HIGH);

  delay(500);

  digitalWrite(9LOW);

  delay(500);

  digitalWrite(9HIGH);

  delay(500);

  digitalWrite(9LOW);

  digitalWrite(10HIGH);  

  delay(1500);

  digitalWrite(10LOW);  

  digitalWrite(11HIGH);

  delay(5000);

  digitalWrite(10HIGH);

  delay(1500);

  digitalWrite(10LOW);

  digitalWrite(11LOW);

Мне нужно было просто задать одну и туже программу 3 раза но с разными промежутками времени включения диодов.Но хделать зделать так чтобы по окончанию одной такокой программы(утро) срабатывала следущая программа(день) и т.д. 

Проблема в том что немогу совмести всё в одну кучу +зделать всю прогу на 24часа

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
arDubino
Offline
Зарегистрирован: 12.01.2017

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

PlayRider
Offline
Зарегистрирован: 17.03.2017

Мне неважно точное время. Главное чтобы получилась примерная программа на 24часа

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

PlayRider пишет:

Мне неважно точное время. Главное чтобы получилась примерная программа на 24часа

насколько примерная?

PlayRider
Offline
Зарегистрирован: 17.03.2017

Аналог реального светофора

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

PlayRider пишет:

Аналог реального светофора

реальный светофор точно знает, когда ночь, а когда день

PlayRider
Offline
Зарегистрирован: 17.03.2017

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

Я новичок но с меня требуют аналог светофора.)) Вот такие дела.

 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

PlayRider, никто не предусматривает программу на такой огромный срок. Микроконтроллер для подобных вещей слишком мал и туп. Объясните точно, какая программа вам нужна. Как я понимаю, у вас есть, допустим, три разновидности программ. Их надо включать в некоторое время, допустим крутить сутки, затем следующую и т. д. Не суть. Так? Или просто по очереди крутить 1, 2, 3, 1, 2, 3, 1... и т. д.?

Тогда в первом случае:

1. делаете часы - RTC или millis();

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

3. делаете собственно программы

Во втором случае:

просто все три программы подряд записываете по порядку в loop(), и они будут повторяться т. к. loop() это функция main(), т. о. бесконечный цикл.

Чтобы программы жили независимо и не мешали с ними работать, удобно их записать в массив, с "разрешением" в минимальную длительность в каждый момент. Например, у меня есть проги для школьного светофора, там мигает зелёный с частотой в полсекунды, это значит что весь график работы светофора распилен на кадры по полсекунды; минута на всё - итого 120 цифр в массиве.

Только не надо пытаться меня убедить в том, что я обясняю непонятно. Форумяне знают, если я продолжу, то тут появится готовая программа и номер моего кошелька в яндексе.

PlayRider пишет:
У меня есть обычная прога с таймером

Покажите.

PlayRider пишет:
можно ли както соеденить 4

Можно.

PlayRider
Offline
Зарегистрирован: 17.03.2017

Если я воспользуюсь вторым случаем. Можно спросить, как зделать так чтобы совместить прог.1 с прог.2(копия 1) чтобы после этого задать цикл.

Я нехочу никого обидеть, я плохо соображаю в языке с++ и хочу решить всё спомощью математики 1+1

та программа про которую я говорил в самом верху

 

 

PlayRider
Offline
Зарегистрирован: 17.03.2017

Не подскажите как их соеденить?)

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

PlayRider пишет:

Мне нужно на курсовой проект

Я новичок но с меня требуют аналог светофора.)) Вот такие дела.

и скажите еще, что вам не объясняли как это надо делать, не ну может вы вместо занятий в пивной сидели с девчёнками тогда понятно, ровно сколько потратили на пиво ровно за столько ВАМ И НАРИСУЮТ

PlayRider
Offline
Зарегистрирован: 17.03.2017

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

Я пацан такой очень стеснительный девушки ещё гдет 4 года ато и 5ть невидать(хотя как получится)

И пары стараюсь посещать хоть и живу в 50минут езды от теха.

PlayRider
Offline
Зарегистрирован: 17.03.2017

Voodoo Doll сказал(а) что множно както совместить одинаковые программы.

А как? Ктонибудь знает?) 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

PlayRider, у Вас программа неправильно написана, поэтому в таком виде соединить ее с чем-то будет проблематично.

Перепишите ее в стиле blink without delay и тогда объединить ее с любым количеством аналогично написанных программ не составит труда.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А не боитесь, что вам кинут сюда код , и препод "прозреет"... что это вы никогда в жизни не напишите, да и препод тоже. ;)

PlayRider
Offline
Зарегистрирован: 17.03.2017

Не нифига) Самое сложное это угодить ему.)

 

PlayRider
Offline
Зарегистрирован: 17.03.2017

andriano

ты говорил чтото вроде этого?

boolean k = 0;

void setup()

{

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

}

void loop()

{

digitalWrite(2,1);

digitalWrite(3,0);

digitalWrite(4,0);

delay(3500);

for(int i = 0; i<6; i++)

{

digitalWrite(2, k);

k = !k; delay(800);

}

digitalWrite(2,0);

digitalWrite(3,1);

digitalWrite(4,0);

delay(3500);

for(int i = 0; i<6; i++)

{

digitalWrite(3, k);

k = !k; delay(800);

}

digitalWrite(2,0);

digitalWrite(3,0);

digitalWrite(4,1);

delay(3500);

for(int i = 0; i<6; i++)

{

digitalWrite(4, k);

k = !k;

delay(800);

}

}

 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

PlayRider пишет:

Не нифига) Самое сложное это угодить ему.)

/* class_Led.ino 
  #1 светодиод ->13
  #2 кнопка 1 -> 4 вкл светодиод
  #3 кнопка 2 -> 5 выкл светодиод
  #4 кнопка 3 -> 6 светодиод мигает
  */
// #1 светодиод
#include "Cl_led.h"
const byte led1_pin = 13;
Cl_led Led1(led1_pin, 1); // создать
// #2 кнопка
#include "Cl_do_btn.h"
const byte btn1_pin = 4;
void Do_Btn1() {
  Led1.ON();
}
Cl_do_btn Btn1(btn1_pin, 0,    // пин кнопки, уровень при наж кнопки
               & Do_Btn1   );  // какую функцию надо сделать
// #3 кнопка
const byte btn2_pin = 5;
void Do_Btn2() {
  Led1.OFF();
}
Cl_do_btn Btn2(btn2_pin, 0,    // пин кнопки, уровень при наж кнопки
               & Do_Btn2   );  // какую функцию надо сделать
// #4 кнопка
const byte btn3_pin = 6;
void Do_Btn3() {
  Led1.blink();
}
Cl_do_btn Btn3(btn3_pin, 0,    // пин кнопки, уровень при наж кнопки
               & Do_Btn3   );  // какую функцию надо сделать
void setup() {
  Led1.setup();
  Led1.T_blink = 500;// мигать 0.5 горит -0.5 нет
  Btn1.setup();
  Btn2.setup();
  Btn3.setup();
}

void loop() {
  Led1.loop();
  Btn1.loop();
  Btn2.loop();
  Btn3.loop();
}
Ведь. Такой стиль ему точно не понравится.  Тупой ученик делает препода "идиотом"
PlayRider
Offline
Зарегистрирован: 17.03.2017

ты мне предлогаеш кнопки под стол спрятать))) чтобы типо ему казалось что прога робит??)

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Мда. Похоже вас учить бесполезно. Пойду что ли чай кофе пить.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

PlayRider пишет:

Мне нужно на курсовой проект ... Я новичок но с меня требуют ...

1. Вы не новичёк, а студент технического ВУЗа. Вы должны здесь консультировать полфорума, а не клянчить готовый код.

2. Хотя, судя по тому убожищу, которое Вы выложили под видом кода - из ВУЗа Вас надо гнать ссаными тряпками.

3. Вот здесь, начиная со страницы 8, подробно описано как правильно делать светофор. Это реально неплохой светофор, разберитесь и сделайте. Если же Вы по этому описания сделать не можете, то .... см. п.2 выше.

4. Какой ужас! С мальчика требуют. А через пару лет мальчик придёт на работу ... (продолжать без мата не могу).

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

PlayRider пишет:
непонравилась (...) немогу (...) 4 года ато и 5ть невидать (...) нехочу никого обидеть

PlayRider пишет:
зделать (...) предлогаеш

Не. Делайте. Этого. Пожалуйста. Читать неприятно же.

Кукла Вуду писала, что начинать следует с подробного описания, чего должен показывать светофор, т. к. ваш поток сознания мне непонятен. Следите за мыслью:

const byte sv_a[120]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,
  3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,0,4,0,4,2,2,2,2,
  2,2,2,2,2,2};

25 сек. горит красный (первые 50 единиц)
5 с - красный+жйлтый (тройки)
22 с - зелёный (четвёрки)
Потом три раза мигает (чередование 0 и 4)
5 с - жёлтый (двойки)

Как вы поняли (я очень надеюсь на это), цифры обозначают некоторое состояние светодиодов, причём всех (0 темно, 1 красный, 2 жёлтый и т. д.). Одна цифра 500 мс.

So? Мы можем родить что-то подобное? На все разновидности ваших программ. Потому что их сперва надо создать, чтобы было что объединять. И прекратите вестись на срач, у all борода седее и заклятья мощее.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

PlayRider пишет:
непонравилась (...) немогу (...) 4 года ато и 5ть невидать (...) нехочу никого обидеть

PlayRider пишет:
зделать (...) предлогаеш

Не. Делайте. Этого. Пожалуйста. Читать неприятно же.

Кукла Вуду писала, что начинать следует с подробного описания, чего должен показывать светофор, т. к. ваш поток сознания мне непонятен. Следите за мыслью:

const byte sv_a[120]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,
  3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,0,4,0,4,2,2,2,2,
  2,2,2,2,2,2};

25 сек. горит красный (первые 50 единиц)
5 с - красный+жйлтый (тройки)
22 с - зелёный (четвёрки)
Потом три раза мигает (чередование 0 и 4)
5 с - жёлтый (двойки)

Как вы поняли (я очень надеюсь на это), цифры обозначают некоторое состояние светодиодов, причём всех (0 темно, 1 красный, 2 жёлтый и т. д.). Одна цифра 500 мс.

So? Мы можем родить что-то подобное? На все разновидности ваших программ. Потому что их сперва надо создать, чтобы было что объединять. И прекратите вестись на срач, у all борода седее и заклятья мощее.

не, мне кажется так неправильно
у светофора есть некоторые фунции:

1. Время горения разрешающего (запрещающего) сигнала светофора
2. Время предупреждающего сигнала о смене текущего состояния
3. Время горения жёлтого сигнала

То-есть, надо эти функции и написать и передавать им, в звисимости от времени суток
константы...
ИЛИ НЕ???

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

у светофора есть некоторые фунции:

1. Время горения разрешающего (запрещающего) сигнала светофора
2. Время предупреждающего сигнала о смене текущего состояния
3. Время горения жёлтого сигнала

То-есть, надо эти функции и написать и передавать им, в звисимости от времени суток
константы...
ИЛИ НЕ???

А ещё датчики наличи очереди авто со всех сторон и функции разруливания пробок.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ua6em пишет:

То-есть, надо эти функции и написать и передавать им, в звисимости от времени суток

константы...
ИЛИ НЕ???

"заказчик" решил, что утром , вечером, днем и ночью он будет лично перешивать каждый светофор в Киеве.Так что кнопки или Вай-фай это "российская агрессия". Вот по этому ему надо 4 варианта программы . Ну очень трудно понимать программирование если она идет на "державной мове", поэтому препод забил на предмет и на учеников. Тем более у учеников в голове сплошная кость.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

PlayRider пишет:

andriano

ты говорил чтото вроде этого?

void loop()

{

digitalWrite(2,1);

digitalWrite(3,0);

digitalWrite(4,0);

delay(3500);

...

 

Нет, я говорил: забыть delay() как страшный сон.

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

PlayRider пишет:

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

Я пацан такой очень стеснительный девушки ещё гдет 4 года ато и 5ть невидать(хотя как получится)

И пары стараюсь посещать хоть и живу в 50минут езды от теха.

НЕ ВЕРЮ!!! (с). Там, где задают курсовые по программированию, обычно ему и учат. Обучение - не есть процесс скакания Учителя перед недорослями, он вполне возможен на основе методички, с корректирующими воздействиями на основе обратной связи (вопросов недорослей или юниоров, как нравится). При отсутствии возмущающего воздействия (вопросов), вполне можно решить: 1. Все все поняли и в помощи не нуждаются. 2. Никто нихрена не читал и вопросов не имеет. При любом раскладе, это не школа и большинство преподаваталей на тему онижедети не ведется. Все покажет экзамен, который в любом случае приведет к положительному результату: 1. Кто потратил отпущенное время на обучение - сдаст зачет и пойдет отдыхать. 2. Кто отдыхал - возможно наконец поймет, что в реальной жизни никто за тебя ничего учить и делать не будет.
Основная цель начального обучения, это не научить какому то языку (их мульен и невозможно знать все), а алгоритмике (теперь уже в дет.саде начинают, правда через "опу"). Вот если вы сумеете взять рулон туалетной бумаги и расписать все состояния вашего светофора, то потом не составит труда перевести это на любой язык программирования (со словарем). Дерзайте.
Хотя что то мне подсказывает, что все обитатели форума будут объявлены передастами, а гордый ТС удалится прогревать провода с иридиевыми контактами. ИМХО.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

qwone пишет:

Тем более у учеников в голове сплошная кость.

Вы затронули очень животрепещущую тему )))
У некоторых представителей вида человеческого к 16 годам соединительная ткань черепных костей полностью окостеневает и кости сращиваются, теряют подвижность, а особи способность к дальнейшему обучению...
У взрослых людей с геном R1A1 это тоже может происходить, после 60 лет, тогда человек впадает в "старческий маразм"
Программирование помогает отсрочить этот возраст )))