Attiny2313 кодовый замок КБД-10Н
- Войдите на сайт для отправки комментариев
Вс, 08/12/2019 - 01:44
Был замок КБД-10Н. Сгорел МК Attiny2313. Чтоб по быстрому сделать, за пару десяток минут набросал скетч без библиотек. Через ARDUINO IDE записал в новый мк. Все работает.
#define stroka1 12 #define stroka2 11 #define stroka3 10 #define stroka4 9 #define stolb1 15 #define stolb2 14 #define stolb3 13 #define buzzer 6 #define redled 0 #define greenled 1 #define relay 8 int val = 1; boolean flag11=false; boolean flag12=false; boolean flag13=false; boolean flag14=false; boolean flag21=false; boolean flag22=false; boolean flag23=false; boolean flag24=false; boolean flag31=false; boolean flag32=false; boolean flag33=false; boolean flag34=false; void setup() { pinMode(stroka1, INPUT); pinMode(stroka2, INPUT); pinMode(stroka3, INPUT); pinMode(stroka4, INPUT); pinMode(stolb1, OUTPUT); pinMode(stolb2, OUTPUT); pinMode(stolb3, OUTPUT); pinMode(redled, OUTPUT); pinMode(greenled, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(relay, OUTPUT); digitalWrite(stroka1, HIGH); digitalWrite(stroka2, HIGH); digitalWrite(stroka3, HIGH); digitalWrite(stroka4, HIGH); digitalWrite(stolb1, HIGH); digitalWrite(stolb2, HIGH); digitalWrite(stolb3, HIGH); digitalWrite(redled, HIGH); digitalWrite(greenled, HIGH); digitalWrite(buzzer, LOW); digitalWrite(relay, LOW); } void loop() { digitalWrite(stolb1, LOW); digitalWrite(stolb2, HIGH); digitalWrite(stolb3, HIGH); if (digitalRead(stroka1) == LOW&&flag11==false) //1 { flag11=true; digitalWrite(redled, LOW); } if (digitalRead(stroka1) == HIGH&&flag11==true) { val=val+1; flag11=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka2) == LOW&&flag12==false) //4 { flag12=true; digitalWrite(redled, LOW); } if (digitalRead(stroka2) == HIGH&&flag12==true) { val=val+25; flag12=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka3) == LOW&&flag13==false) //7 { flag13=true; digitalWrite(redled, LOW); } if (digitalRead(stroka3) == HIGH&&flag13==true) { val=val*7; flag13=false; digitalWrite(redled, HIGH); } digitalWrite(stolb1, HIGH); digitalWrite(stolb2, LOW); digitalWrite(stolb3, HIGH); if (digitalRead(stroka1) == LOW&&flag21==false) //2 { flag21=true; digitalWrite(redled, LOW); } if (digitalRead(stroka1) == HIGH&&flag21==true) { val=val+25; flag21=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka2) == LOW&&flag22==false) //5 { flag22=true; digitalWrite(redled, LOW); } if (digitalRead(stroka2) == HIGH&&flag22==true) { val=val*5; flag22=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka3) == LOW&&flag23==false) //8 { flag23=true; digitalWrite(redled, LOW); } if (digitalRead(stroka3) == HIGH&&flag23==true) { val=val+25; flag23=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka4) == LOW&&flag24==false) //0 { flag24=true; digitalWrite(redled, LOW); } if (digitalRead(stroka4) == HIGH&&flag24==true) { val = 1; flag24=false; digitalWrite(redled, HIGH); } digitalWrite(stolb1, HIGH); digitalWrite(stolb2, HIGH); digitalWrite(stolb3, LOW); if (digitalRead(stroka1) == LOW&&flag31==false) //3 { flag31=true; digitalWrite(redled, LOW); } if (digitalRead(stroka1) == HIGH&&flag31==true) { val=val+25; flag31=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka2) == LOW&&flag32==false) //6 { flag32=true; digitalWrite(redled, LOW); } if (digitalRead(stroka2) == HIGH&&flag32==true) { val=val+25; flag32=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka3) == LOW&&flag33==false) //9 { flag33=true; digitalWrite(redled, LOW); } if (digitalRead(stroka3) == HIGH&&flag33==true) { val=val+25; flag33=false; digitalWrite(redled, HIGH); } if (digitalRead(stroka4) == LOW&&flag34==false) //# { flag34=true; digitalWrite(redled, LOW); digitalWrite(greenled, LOW); } if (digitalRead(stroka4) == HIGH&&flag34==true) { digitalWrite(redled, HIGH); digitalWrite(greenled, HIGH); if (val == 255) { digitalWrite(greenled, LOW); digitalWrite(relay, HIGH); delay (3000); digitalWrite(relay, LOW); digitalWrite(greenled, HIGH); } val = 1; flag34=false; } digitalWrite(stolb1, HIGH); digitalWrite(stolb2, HIGH); digitalWrite(stolb3, HIGH); }
такой код не надо выкладывать на форум, его надо сжигать вместе с автором...
Точно. Как я сразу не понял. Стояла задача чтоб замок заработал, надо-же было к тебе обратиться, чтоб ты мне красивый скетч сделал, заплатить тебе деньги, а функции он выполнял бы одни и те же с моим. Глупый я, сразу не догадался. Зато скетч какой красивый был бы, загляденье.
Слушай домашняя армия(b707). Такой скетч хоть и не правильный с точки зрения оптимизации, но написал его я за 10-20 минут, не использовал библиотеки, потому что ограничен в памяти, языком си не владею, двое суток его оптимизировать не вижу смысла, т.к. такой замок мне наверно никогда в жизни больше в руки не попадет. Максимально простой (даже без циклов for) я сделал специально, чтоб все могли разобраться с ним. Ещё плюс в том, что у меня хорошо видно как можно работать с матричной клавиатурой (чтоб понять как работает библиотека матричных клавиатур). В итоге хоть одному человеку что то тут пригодится, а тебе чтоб в следующий раз глаза не выжег такой уродливый скетч, лучше даже не заходи в такие темы.