Добрый день товарищи помогите разобратья с кодом в чем не верность?

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

Morroc пишет:

 

од из #7 работает - D4 загорается при нажатии 3х кнопок. Расходимся :)

Конечно, работает, а куда ему деваться.

Но расходиться рано, ТС то надо понять что у него за проблема (а она (проблема), подозреваю такая же, как у моего внука была пару недель назад)   :)

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

ЕвгенийП пишет:

Morroc пишет:

 

од из #7 работает - D4 загорается при нажатии 3х кнопок. Расходимся :)

Конечно, работает, а куда ему деваться.

Но расходиться рано, ТС то надо понять что у него за проблема (а она (проблема), подозреваю такая же, как у моего внука была пару недель назад)   :)

ВЫ ИНТРИГАН!!! ;-)))

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

Morroc пишет:

Код из #7 работает - D4 загорается при нажатии 3х кнопок. Расходимся :)

нет, ему надо при последовательном нажатии всех кнопок, еще пяток постов и не удержусь, выложу вариант решения )))

 

Morroc
Offline
Зарегистрирован: 24.10.2016

"в том что бы были нажаты 3 кнопки не одновременно". тьфу ты, точно ) интрига развеялась )

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

Morroc пишет:

"в том что бы были нажаты 3 кнопки не одновременно". тьфу ты, точно ) интрига развеялась )

Ну, вот облом - я этого не заметил и думал, что ему надо как раз, когда все три одновременно нажаты. А проблема, которую я держал в уме (как раз, как у внука было) примерно такая: "факт нажатия конкретной кнопки отслеживается по её индивидуальному светодиоду, но он же их никогда не гасит! Единожды включившись они горят всегда, даже когда кнопка уже давно отпущена". Отсюда и кажимость, что "всё нажато", а на 13 не светится. Для этого достаточно их все по очереди нажать-отпустить :)))

b707
Онлайн
Зарегистрирован: 26.05.2017

Morroc пишет:

"в том что бы были нажаты 3 кнопки не одновременно". тьфу ты, точно ) интрига развеялась )

блин, я тоже этого не заметил.

Ну тогда я ему уже в #14 написал причину, почему у него не работает.

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

Вот погасил =) 

boolean L1 = 0 ;
boolean L2 = 0;
boolean L3 = 0;
byte diod_1 = 8;
byte diod_2 = 10;
byte diod_3 = 7;
byte knopka_1 = 12;
byte knopka_2 = 11;
byte knopka_3 = 9;
byte bigdiod = 13;
void setup() {
pinMode(bigdiod, OUTPUT);
pinMode(knopka_1, INPUT);
pinMode(knopka_2, INPUT);
pinMode(knopka_3, INPUT);
pinMode(2, OUTPUT);
pinMode(diod_1, OUTPUT);
pinMode(diod_2, OUTPUT);
pinMode(diod_3, OUTPUT);
digitalWrite(knopka_1,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_2,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_3,HIGH); //включение подтягивающего резистора 
}
void loop() 
{
Serial.begin(9600);
Serial.print("rabotaet"); 
digitalWrite(2, HIGH);
  if(digitalRead(knopka_1)==0) 
{
digitalWrite(diod_1,HIGH);
 L1=1;
 Serial.println(L1); 
}
if(digitalRead(knopka_2)==0) 
{
digitalWrite(diod_2,HIGH);
 L2=1;
  Serial.println(L2); 
}
if(digitalRead(knopka_3)==0)
{
 digitalWrite(diod_3,HIGH);
 L3=1;
 Serial.println(L3); 
}
Serial.println(L1);
Serial.println(L2);
Serial.println(L3);
if(L1==1&&L2==1&&L3==1)
{
  digitalWrite(bigdiod, HIGH);
  delay(1000);
  L1=0;
  L2=0;
  L3=0;
  digitalWrite(diod_1,LOW);
  digitalWrite(diod_2,LOW);
  digitalWrite(diod_3,LOW);
}
}

 

 

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

У меня получилось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Спасибо за подсказки"!!!! Чмоки вас

только вот не фига виртуальный не работает. буду разбираться 

boolean L1 = 0 ;
boolean L2 = 0;
boolean L3 = 0;
byte diod_1 = 8;
byte diod_2 = 10;
byte diod_3 = 7;
byte knopka_1 = 12;
byte knopka_2 = 11;
byte knopka_3 = 9;
byte bigdiod = 13;
void setup() {
pinMode(bigdiod, OUTPUT);
pinMode(knopka_1, INPUT);
pinMode(knopka_2, INPUT);
pinMode(knopka_3, INPUT);
pinMode(2, OUTPUT);
pinMode(diod_1, OUTPUT);
pinMode(diod_2, OUTPUT);
pinMode(diod_3, OUTPUT);
digitalWrite(knopka_1,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_2,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_3,HIGH); //включение подтягивающего резистора 
Serial.begin(9600);
}
void loop() {
Serial.print("rabotaet"); 
digitalWrite(2, HIGH);
  if(digitalRead(knopka_1)==0) 
{
digitalWrite(diod_1,HIGH);
 L1=1;
 Serial.println(L1); 
}
if(digitalRead(knopka_2)==0) 
{
digitalWrite(diod_2,HIGH);
 L2=1;
  Serial.println(L2); 
}
if(digitalRead(knopka_3)==0)
{
 digitalWrite(diod_3,HIGH);
 L3=1;
 Serial.println(L3); 
}
Serial.println(L1);
Serial.println(L2);
Serial.println(L3);
if(L1==1&&L2==1&&L3==1)
{
  digitalWrite(bigdiod, HIGH);
  delay(100);
  L1=0;
  L2=0;
  L3=0;
  digitalWrite(diod_1,LOW);
  digitalWrite(diod_2,LOW);
  digitalWrite(diod_3,LOW);
  digitalWrite(bigdiod, LOW);
}
}

 

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

Открыл терминал, подскажите почему он не отображает ни чего? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
void setup() {
pinMode(7, OUTPUT);   //PD7 - LED D2
pinMode(8, OUTPUT);   //PB0 - LED D3
pinMode(10, OUTPUT);  //PB2 - LED D4
pinMode(13, OUTPUT);  //PB5 - LED D1 (на плате нано)

//входные кнопки, доп.входные резисторы не нужны

pinMode(9, INPUT_PULLUP);   //PB1 - BTN1
pinMode(11, INPUT_PULLUP);  //PB3 - BTN2
pinMode(12, INPUT_PULLUP);  //PB4 - BTN4

//Serial.begin(9600);

}


void loop() {
byte L1;
byte L2;
byte L3;

// читаем состояния кнопок
if(digitalRead(12)==0) { L1=1;}
if(digitalRead(11)==0) { L2=1;}
if(digitalRead(9)==0)  { L3=1;}

// реагируем на считанное состояние кнопок
if(L1==1) {  digitalWrite(7, HIGH);}
if(L2==1) {  digitalWrite(8, HIGH);}
if(L3==1) {  digitalWrite(10, HIGH);}

// Если были нажаты все кнопки (порядок нажатия безразличен) ТО (то входит то выходит (С) Ослик)
if (bitRead(PORTD,7)==1 && bitRead(PORTB,0)==1 && bitRead(PORTB,2)==1)
{
  digitalWrite(13, !digitalRead(13));
  delay(1000);
  L1=0;
  L2=0;
  L3=0;
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(10, LOW);
}
}

 

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

Это более правильно? спасибо. 

Что значит INPUT_PULLUP?

и bitRead(PORTD,7)==1?

И помоему ты не заглушил диод на 13 =) в конце 

у меня получилось #58

 

Morroc
Offline
Зарегистрирован: 24.10.2016

Gluck-Truck пишет:
терминал, подскажите почему он не отображает ни чего?

В него можно кликнуть и провалиться в настройки - там 9600 стоит ?

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

да 9600

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

Gluck-Truck пишет:

Это более правильно? спасибо. 

Что значит INPUT_PULLUP?

и bitRead(PORTD,7)==1?

И помоему ты не заглушил диод на 13 =) в конце 

у меня получилось #58

 

смотри строку 33 скетча, если еще три раза нажать кнопки он погаснет ))) (я надеюсь, проверять не на чем)

Morroc
Offline
Зарегистрирован: 24.10.2016

Gluck-Truck пишет:

да 9600

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

Gluck-Truck
Gluck-Truck аватар
Offline
Зарегистрирован: 17.06.2019

Конечный вариант 

boolean L1 = 0 ;
boolean L2 = 0;
boolean L3 = 0;
byte diod_1 = 7;
byte diod_2 = 8;
byte diod_3 = 10;
byte knopka_1 = 12;
byte knopka_2 = 11;
byte knopka_3 = 9;
byte bigdiod = 13;
void setup() {
pinMode(bigdiod, OUTPUT);
pinMode(knopka_1, INPUT);
pinMode(knopka_2, INPUT);
pinMode(knopka_3, INPUT);
pinMode(2, OUTPUT);
pinMode(diod_1, OUTPUT);
pinMode(diod_2, OUTPUT);
pinMode(diod_3, OUTPUT);
digitalWrite(knopka_1,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_2,HIGH); //включение подтягивающего резистора 
digitalWrite(knopka_3,HIGH); //включение подтягивающего резистора 
Serial.begin(9600);
}
void loop() {
Serial.println("rabotaet i eto horocho"); 
Serial.println("L1=");
Serial.println(L1);
Serial.println("L2=");
Serial.println(L2);
Serial.println("L3=");
Serial.println(L3);
digitalWrite(2, HIGH);
  if(digitalRead(knopka_1)==0) 
{
digitalWrite(diod_1,HIGH);
 L1=1;
}
if(digitalRead(knopka_2)==0) 
{
digitalWrite(diod_2,HIGH);
 L2=1;
}
if(digitalRead(knopka_3)==0)
{
 digitalWrite(diod_3,HIGH);
 L3=1;
}
if(L1==1&&L2==1&&L3==1)
{
  Serial.println("L1=");
Serial.println(L1);
Serial.println("L2=");
Serial.println(L2);
Serial.println("L3=");
Serial.println(L3);
  Serial.println("Seichas zagoritsa big diod");
  delay(5000);
  digitalWrite(bigdiod, HIGH);
  delay(1000);
  L1=0;
  L2=0;
  L3=0;
  digitalWrite(diod_1,LOW);
  digitalWrite(diod_2,LOW);
  digitalWrite(diod_3,LOW);
  digitalWrite(bigdiod, LOW);
}
}


и тадам:

 

и тухнеч через секунду все обновлется =) 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Gluck-Truck пишет:
Чмоки вас
Надеюсь, ты девочка. А то ведь мы тут дремучие и нетолерантные, можно и по рылу ... :)

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

Ну, и слава Богу!

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

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

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

Ворота пишет:

Надеюсь, ты девочка. А то ведь мы тут дремучие и нетолерантные, можно и по рылу ... :)

Та ладна, вспомни детство и дарагого Леонида Ильича. Даж по программе "Время" регулярно казали и "Голубой вагон", по стране, безпрепятственно рассекал.))))
А тут как-то катился с Питера в Нижний, в объезд Москвы, указатель читаю - "Загорские дали", пля думаю, ну нахрена на дороге-то всех об этом информировать.))))

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

Испорченный ты...

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

Что верность, что не верность всё равно...