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) я сделал специально, чтоб все могли разобраться с ним. Ещё плюс в том, что у меня хорошо видно как можно работать с матричной клавиатурой (чтоб понять как работает библиотека матричных клавиатур). В итоге хоть одному человеку что то тут пригодится, а тебе чтоб в следующий раз глаза не выжег такой уродливый скетч, лучше даже не заходи в такие темы.