Помогите с программой новичку

rusidro
Offline
Зарегистрирован: 07.08.2019

Только начинаю осваивать Ардуино, помогите с простой программой. Есть светодиод и кнопка, нужно при нажатии кнопки загорался светодиод и точно такая программа только при нажатой кнопке светодиод выключался. Две программы чтобы я понял, что меняется. Если с первой программой я в принцепе разобрался, то как её изменить ну никак!!! Пожалуйста помогите.

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

Так выкладывайте программу

rusidro
Offline
Зарегистрирован: 07.08.2019
void setup()
{
  pinMode(5, OUTPUT);
    
}

void loop()
{
  if (digitalRead(10)==HIGH)
 { 
  digitalWrite(5, HIGH);
  
   } 
   else 
   {
    
   digitalWrite(5, LOW);
 
  } 

 

b707
Offline
Зарегистрирован: 26.05.2017

rusidro, а теперь попробуйте обьяснить, что делает каждая строчка. Ну, кроме пустых и скобок - напишите кратенько про сточки 3, 9. 11, 14 и 17

Если вы поймете, как они работают - помеять код Вам не составит никакого труда

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Как я туть некстати влез в процесс обучения... 

Удалю

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Как я туть некстати влез в процесс обучения...

фигня :)

Это не обучение, а просто нежелание давать готовый ответ :)

rusidro
Offline
Зарегистрирован: 07.08.2019

03- это мы даем команду что 5пин вывод работает на выход один раз при загрузке ардуино

09-это что  10пин равен 1(то есть  по умолчанию выход)+5в

11- это что при текущем состоянии кнопки на 5пин идет+5в 

14- это  если  10пин равен 0 (кнопка нажата) то меняеться 

17- на минус 5пин

 

 

rusidro
Offline
Зарегистрирован: 07.08.2019

Попробовал как вы подсказали все работает спасибо. Но хотел понять как это работает.

b707
Offline
Зарегистрирован: 26.05.2017

rusidro пишет:

 хотел понять как это работает.

хотели понять - так разбирайтесь. Строки кода выше вы почти все описали неправильно - кроме разве что 3 строчки

rusidro
Offline
Зарегистрирован: 07.08.2019

Пытаюсь разобраться. 

 

 

 

 

rusidro
Offline
Зарегистрирован: 07.08.2019

9-Условие если сигнал на 10 пине равен +5в

11-То и сигнал на 5 пин +5в

14- Если сигнал на 10 пине не равен +5в

17-То сигнал на 5 пин минус

Тогда подскажите, что не так?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

вот, матьтваю, весь твой loop

void loop()
 { 
  digitalWrite(5, digitalRead(10));
 }

 

b707
Offline
Зарегистрирован: 26.05.2017

rusidro пишет:

9-Условие если сигнал на 10 пине равен +5в

11-То и сигнал на 5 пин +5в

14- Если сигнал на 10 пине не равен +5в

17-То сигнал на 5 пин минус

Тогда подскажите, что не так?

теперь почти верно.

Более правильно так:

9-Условие если сигнал на 10 пине высокого уровня ( высокий уровень - это не "равен +5в", это более 70% от +5в. то есть начиная от 3.5в и выше)

точно такая же поправка про строку 14

14- Если сигнал на 10 пине низкого уровня (низкий уровень точно не помню, но что-то менее 1.5в)

 

17-То сигнал на 5 пин минус - неверно, никаких "минусов" в ардуине нет, напряжения меняются от 0 до питания, строго положительные

Правильно - сигнал низкого уровня

 

 

 

rusidro
Offline
Зарегистрирован: 07.08.2019

DetSimen пишет:

вот, матьтваю, весь твой loop

void loop()
 { 
  digitalWrite(5, digitalRead(10));
 }

 

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

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Потому что дребезг контактов кнопки.

Со светодиодом то же самое, ты просто не замечаешь.

rusidro
Offline
Зарегистрирован: 07.08.2019

Понял!!!

rusidro
Offline
Зарегистрирован: 07.08.2019


void setup()

{
  pinMode(5, OUTPUT);
  pinMode(10, INPUT_PULLUP);
    
}
 
void loop()
{
  if (digitalRead(10)==LOW)
 { 
  delay (5000);
  digitalWrite(5, HIGH);
  delay (2000);
  digitalWrite(5, LOW);
  
   } 
   else 
   {
     
   digitalWrite(5, LOW);
 
 
  } 
         
}

А так дребезжания реле нет. Только не знаю как остановить выполнение программы если кнопка остаеться в нажатом положении после временных задержек. Пробовал командой exit(0) и while(1) но только они полностью останавливают пока не перезагрузиться, а мне нужно чтобы после отпускания кнопки и последующего нажатия цикл повторился

 
vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Если в учебных целях, то добавте еще одну переменную: например так


bool flag1=0;

void setup()

{
  pinMode(5, OUTPUT);
  pinMode(10, INPUT_PULLUP);
}

void loop()
{
  if (digitalRead(10)==LOW && flag1==0)
  { 
    flag1=1;
    delay (5000);
    digitalWrite(5, HIGH);
    delay (2000);
    digitalWrite(5, LOW);
  } 

  if (digitalRead(10)==LOW && flag1==1)
  {
    flag1=0;  
    digitalWrite(5, LOW);
  } 
}

 

rusidro
Offline
Зарегистрирован: 07.08.2019

Спасибо за помощь, но и эта программа при нажатой кнопке постоснно выполняеться, а мне нужно после нажатой кнопке и она осталась в томже положении (нажата) реле через 5сек включилось и через 2сек отключилось и на этом программа остановилась до следующего отпускания и нажатии кнопки.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

******************  Ты можешь русским по белому ВНЯТНО написать алгоритм работы твоей хотелки?  

Потом перевести это на Си  и показать здесь.  

Если ты думаешь, что тебе просто так на халяву код напишут по бессмысленному блеянию - звиздуй в раздел "Ищу исполнителя", там опытные психологи-программисты хотя бы с тебя за гадания на хрустальных шарах денег возьмут. 

rusidro
Offline
Зарегистрирован: 07.08.2019

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

rusidro пишет:

Купил ардуино 4 дня назад вот и изучаю понемогу до этого даже не слышал о ней и с програмированием дела не имел но мне это интересно. 

.

.

.

я думал мир добрее!!!

А я думал, что  люди, прежде чем вапеть на всех форумах, до которых можно дотянуцца,  "ПАМАГИТИ!!!!'  все же потрудятся сначала почитать про то, что им вдруг "стало интересно". 

А потом вдруг и форумы добрее станут, ведь это не образовательное учреждение всёже, да? 

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

О! для этой задачи надо фиксировать не только нажатие, но и отпускание кнопки

b707
Offline
Зарегистрирован: 26.05.2017

rusidro пишет:

 я думал мир добрее!!!

Мир не злой, просто если вы сядете в такси и попросите отвезти туда, где "с одной стороны мужик в пиджаке, а с другой - дерево такое" - вас скорее всего высадят из машины и  никуда не повезут.

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

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

b707 пишет:

rusidro пишет:

 я думал мир добрее!!!

Мир не злой, просто если вы сядете в такси и попросите отвезти туда, где "с одной стороны мужик в пиджаке, а с другой - дерево такое" - вас скорее всего высадят из машины и  никуда не повезут.

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

куда яснее - "а мне нужно после нажатой кнопке и она осталась в томже положении (нажата) реле через 5сек включилось и через 2сек отключилось и на этом программа остановилась до следующего отпускания и нажатии кнопки"

rusidro
Offline
Зарегистрирован: 07.08.2019

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот и вся беда в том, что люди предпочитают у дерева учиться, а не по книжкам. Поэтому и становятся не умными, а деревянными по пояс. 

rusidro
Offline
Зарегистрирован: 07.08.2019

ua6em пишет:

b707 пишет:

rusidro пишет:

 я думал мир добрее!!!

Мир не злой, просто если вы сядете в такси и попросите отвезти туда, где "с одной стороны мужик в пиджаке, а с другой - дерево такое" - вас скорее всего высадят из машины и  никуда не повезут.

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

куда яснее - "а мне нужно после нажатой кнопке и она осталась в томже положении (нажата) реле через 5сек включилось и через 2сек отключилось и на этом программа остановилась до следующего отпускания и нажатии кнопки"

Спасибо, теперь я хоть понял, что просил отвезти меня не к мужику в пиджаке.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. Тему - в песочницу;

2. Новичку выдать со склада комплект запятых, б.у., дабы расставлял сообразно с обычаями;

3. Новичку - дюжину шпицрутенов, дабы изъяснялся понятно.

negavoid
Offline
Зарегистрирован: 09.07.2016

Новичку - на форум arduino.cc, там люди потерпеливее, не посылают и не придираются к каждой буковке :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

дак если он по-русски-то толком ничего сформулировать не может, куда ТС-у до arduino.cc

Logik
Offline
Зарегистрирован: 05.08.2014

Не. Пусть на arduino.cc шурует и там мозг выносит. Может на английском получится еще забористей.