Помогите написать программу

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

Мне нужно чтобы я нажал на кнопку и программа заработала 

#include <LiquidCrystal_1602_RUS.h>

#define myInterrupt                                     
LiquidCrystal_1602_RUS lcd(12, 11, 7, 6, 5, 4); // (RS, E, DB4, DB5, DB6, DB7) 
int switchPin = 8; 
int ledPin = 2; 
  float v=120;
  int s=0;  //секунды
 int PIN_BUTTON=3;
void setup() 
{  pinMode(switchPin, INPUT); 
  digitalWrite(switchPin, HIGH); 
 pinMode(ledPin, OUTPUT); 
pinMode(10,INPUT_PULLUP);
 
   }

void loop() 
{lcd.begin(16, 2);
int g = digitalRead(switchPin);
if(digitalRead(10)==HIGH){
if(g==LOW){lcd.begin(16, 2);
 s=s+1;

digitalWrite(ledPin,LOW); 
 lcd.setCursor(0, 0);
 lcd.print("time:");
 lcd.setCursor(5, 0); 
  lcd.print(s);
 digitalWrite(9,HIGH);

  delay(1000);
}else{lcd.begin(16, 2);
float Q=v/s;
    lcd.setCursor(0, 2);
 lcd.print("Q=");

  lcd.setCursor(2, 2);
 lcd.print(Q);
 lcd.setCursor(0, 0);
 lcd.print("time:");
 lcd.setCursor(5, 0);
 lcd.print(s); 

 digitalWrite(ledPin,HIGH);
 digitalWrite(9,LOW);

 
 delay(1000);}
} 
}  

 

mixail844
Offline
Зарегистрирован: 30.04.2012

[сарказм вкл.]

задача уж слишком сложная, никто не знает как вам помочь

[сарказм выкл]

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

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

mixail844
Offline
Зарегистрирован: 30.04.2012

а давайте вы вначале только словами , и если можно диаграмами(хоть в painte нарисуйте) обьязните чего вы хотите добиться и как по ващему это отображено в коде ? 

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

код вы встатили по правилам,уже хорошо.но вопрос не сформулирован от слова совсем .какая кнопка ? куда подклюнена ? какая схема  подключения  ?  что в вашем пониманиие значит "не работает" ? что за плата в конце концов ?

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

У меня есть геркон и lcd1602 экран мне нужно чтобы я мог включать выключать свою программу (которая во втором цикле if) в ней идет отсчет который выводится на экран после того как магнит поднесут к геркону отсчет кончается и выводится расход воды по формуле Q=v/s (v-объем ёмкости и s-секунды). Мне просто нужно что бы я мог включать и выключать данную программу. Как это реализовать

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Задача выполнима только если кнопка разрывает провод питания. В иных случаях программа выполняется всегда и остановке и последующему запуску не поддается. Специфика такая у МК.

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

Получается программным путем никак?Что значит "Специфика такая у МК."

sadman41
Offline
Зарегистрирован: 19.10.2016

То и означает - микроконтроллер работает всегда, пока есть питание.

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

ya_ne_masha31 пишет:

Получается программным путем никак?Что значит "Специфика такая у МК."

Если программным путем, то программа продолжает выполняться, что не соответствует ТЗ.

mixail844
Offline
Зарегистрирован: 30.04.2012

может вы лучше сформулируете что в вашем понимании значит "Мне просто нужно что бы я мог включать и выключать данную программу" ? 

"включать"  - значит вести подсчет ,а "выключать" не вести или подсчеты вести но не отображать ничего на экране или как ? 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

Спасибо приму во внимание все сказанное

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

mixail844 пишет:

может вы лучше сформулируете что в вашем понимании значит "Мне просто нужно что бы я мог включать и выключать данную программу" ? 

"включать"  - значит вести подсчет ,а "выключать" не вести или подсчеты вести но не отображать ничего на экране или как ? 

Включать-вести подсчет и выводить на экран

Выключать-не вести подсчет и не выводить на экран 

mixail844
Offline
Зарегистрирован: 30.04.2012

вы хотите что вы пока кнопка (10?) нажата и удерживаеться программа была в положении "вкл", как только отпустили то программа в положениее "выкл"? 

или хотите

нажал->отпустил->вкл

нажал->отпустил->выкл  ? 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

По 1 нажатию включение и выключение(по программе я сначало пытался по 1 нажатию затем по удержанию)

sadman41
Offline
Зарегистрирован: 19.10.2016

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

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

Противоречивым требованием по отношению к чему

mixail844
Offline
Зарегистрирован: 30.04.2012

оффтоп ,  вопрос к ТС  что бует если подав питание на ваше устройство изначально нажать на 10ый пин и не нажать на switchPin ? 

sadman41
Offline
Зарегистрирован: 19.10.2016

По отношению к логике. Одно действие не может привести к противоположным эффектам.

mixail844
Offline
Зарегистрирован: 30.04.2012

ya_ne_masha31 пишет:

Противоречивым требованием по отношению к чему

в вашем понимании "1-о нажатие" = "нажать и держать"

или "1-о нажатие" = "нажать,держать,отпустить"

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

mixail844 пишет:

оффтоп ,  вопрос к ТС  что бует если подав питание на ваше устройство изначально нажать на 10ый пин и не нажать на switchPin ? 

switchPin это геркон вы имеете в виду замкнуть контакты? если да то отсчет не случится и данных не будет все будет равну логическому нулю но мне не это нужно представьте сообащющий сосуд в котором например на менопласте лежит магнит а наверху геркон вода поднимает пенопласт и геркон замыкается появляются данные.

а 10 пин там нерабочая кнопка

 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

mixail844 пишет:

ya_ne_masha31 пишет:

Противоречивым требованием по отношению к чему

в вашем понимании "1-о нажатие" = "нажать и держать"

или "1-о нажатие" = "нажать,держать,отпустить"

второй вариант

mixail844
Offline
Зарегистрирован: 30.04.2012

ya_ne_masha31 пишет:

mixail844 пишет:

оффтоп ,  вопрос к ТС  что бует если подав питание на ваше устройство изначально нажать на 10ый пин и не нажать на switchPin ? 

switchPin это геркон вы имеете в виду замкнуть контакты? если да то отсчет не случится и данных не будет все будет равну логическому нулю но мне не это нужно представьте сообащющий сосуд в котором например на менопласте лежит магнит а наверху геркон вода поднимает пенопласт и геркон замыкается появляются данные.

а 10 пин там нерабочая кнопка

 

поэтому я и просил нарисовать в paint'e или хоть где,как это все выглядет,одно и тоже описание мы можем представлять по разному . 

что значит "нерабочая кнока" ? если она нерабочая.зачем она в скетче ? 

у вас в скетче может случиться деление на 0 ,и тогда уже никто не не узнает : это в логике кода косяк или адуино "висит".

sadman41
Offline
Зарегистрирован: 19.10.2016

Пусть во фритцинге сразу рисует... а то в пайнте будет просто треш.

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

mixail844 пишет:

ya_ne_masha31 пишет:

mixail844 пишет:

оффтоп ,  вопрос к ТС  что бует если подав питание на ваше устройство изначально нажать на 10ый пин и не нажать на switchPin ? 

switchPin это геркон вы имеете в виду замкнуть контакты? если да то отсчет не случится и данных не будет все будет равну логическому нулю но мне не это нужно представьте сообащющий сосуд в котором например на менопласте лежит магнит а наверху геркон вода поднимает пенопласт и геркон замыкается появляются данные.

а 10 пин там нерабочая кнопка

 

поэтому я и просил нарисовать в paint'e или хоть где,как это все выглядет,одно и тоже описание мы можем представлять по разному . 

что значит "нерабочая кнока" ? если она нерабочая.зачем она в скетче ? 

у вас в скетче может случиться деление на 0 ,и тогда уже никто не не узнает : это в логике кода косяк или адуино "висит".

Я пытался сделать кнопку а после обратился сюда а кнопка так и осталась  в скетче. что значит ардуино висит?

у меня при 0 секундах выдовало -1 и продолжалась работа 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

sadman41 пишет:

Пусть во фритцинге сразу рисует... а то в пайнте будет просто треш.

ок нарисую 

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто вам надо понять, что то, как вы объясняете свою мысли посторонним людям, сказывается на вашем программном коде. Т.е. вы представляете что-то одно, а произносите (и пишете в "программе") что-то совершенно другое. И вот это, другое, никогда не совпадёт с вашей мечтой. 

Поэтому соберитесь, логично и последовательно опишите свой проект: какие есть компоненты, как они должны взаимодействовать, исключите двусмысленности (типа "включение-выключение по одному нажатию" - активация какого-то функционала может быть при замкнутом состоянии контакта, деактивация - при разомкнутом или же "первый клик по кнопке - активирует, второй - деактивирует").  Это позволит вам построить правильный алгоритм и перенести его в программный код.

 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

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

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

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

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

Раньше опыта составления сложных схем не было

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну вот нарисовали примерно так же, как объясняете. С нижних линий питания кинули на верхние только плюс и то на минус. А геркон подсоединили к плюсу, которого нет

Уберите пока дисплей с клубком проводов (выводите данные в Serial). В свойствах проводов есть цвет - покрасьте плюс в красный, GND в чёрный, остальное в цветное и поравняйте их так, чтобы было ясно что куда идет. Картинку можно не скриншотить, а экспортировать в PNG/JPG. Всё равно она вам еще пригодится для отчёта по проекту.

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

sadman41 пишет:

Ну вот нарисовали примерно так же, как объясняете. С нижних линий питания кинули на верхние только плюс и то на минус. А геркон подсоединили к плюсу, которого нет

Уберите пока дисплей с клубком проводов (выводите данные в Serial). В свойствах проводов есть цвет - покрасьте плюс в красный, GND в чёрный, остальное в цветное и поравняйте их так, чтобы было ясно что куда идет. Картинку можно не скриншотить, а экспортировать в PNG/JPG. Всё равно она вам еще пригодится для отчёта по проекту.

Ок я все на скорую руку делал и у меня макетная плата чуть другая мог случайно + к - присоеденить

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

примерно так получилось без лсд экрана

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

бблин

 

ya_ne_masha31
Offline
Зарегистрирован: 17.02.2019

2 провода забыл  покрасить

 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

sadman41 пишет:
Пусть во фритцинге сразу рисует... а то в пайнте будет просто треш.

А толку. И во фиртцинге у ТС треш. Разруха начинается не в пейнте...

sadman41
Offline
Зарегистрирован: 19.10.2016

asam пишет:

sadman41 пишет:
Пусть во фритцинге сразу рисует... а то в пайнте будет просто треш.

А толку. И во фиртцинге у ТС треш. Разруха начинается не в пейнте...

Научится, надеюсь. Когда строют дорогу, камни кладут по одному.

mixail844
Offline
Зарегистрирован: 30.04.2012

Главное ТС хочет научиться,ну хотябы свиду так кажеться. А тем кто хочет учиться,хочеться и помогать.

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

ya_ne_masha31 пишет:

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

 

О  Еще один образец в копилку моей сортирной жывописи. 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Приведу я Вам примерчик с фиксирующейся кнопкой. Пока кнопка нажата - светодиодик горит, отжата - не горит. По моему этого достаточно для решения Вашего вопроса

void loop(){
digitalWrite(LED,LOW);
while(digitalRead(KNOPKA,HIGH)){
digitalWrite(LED,HIGH);
    }
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Для светодиода - сойдёт, для остального - не очень ;)