Помогите с написанием скетча для кодового замка на газоразрядных индикаторах

graf_8
Offline
Зарегистрирован: 03.04.2018

Я более инженер,  чем програмист поэтому особо не ругайте.

Задача состоит в том чтобы сделать кодовый замок типа такого , но чтобы вместо экрана цифры отражались на индикатарах. С помошью этой статьи лампы и клавиатура (матричная 3х4) уже подлючены к ардуино  и всё работает,  но как допилить скетч не хватает ума.

Если комуто не сложно натолкните куда посмотреть.

 




#include <Wire.h>


// выводы для дешифратора
  int out1 = A3;
  int out2 = A1;
  int out4 = A0;
  int out8 = A2;
// выводы для транзисторных ключей
  int key1= 10;
  int key2 = 11;
  int key3 = 12;
  int key4 = 13;

   

void setup() {
  
  // put your setup code here, to run once:
  // задаем частоту ШИМ на 9 выводе 30кГц
  TCCR1B=TCCR1B&0b11111000|0x01;
  analogWrite(9,130);

  
  // Start the serial interface
  Serial.begin(9600);
 
  //задаем режим работы выходов микроконтроллера
  pinMode(out1,OUTPUT);
  pinMode(out2,OUTPUT);
  pinMode(out4,OUTPUT);
  pinMode(out8,OUTPUT);

  pinMode(key1,OUTPUT);
  pinMode(key2,OUTPUT);
  pinMode(key3,OUTPUT);
  pinMode(key4,OUTPUT);

 


}



void loop() {
  
  // put your main code here, to run repeatedly:
  int a[]={1,2,5,8 };
  show(a);
 
}

void show(int a[])
{
    //выведем цифру a[0] на первый индикатор
  setNumber(a[0]);
  digitalWrite(key1,HIGH);
  delay(1);
  //потушим первый индикатор
  digitalWrite(key1,LOW);
  
  //цифра a[1] на второй индикатор
  setNumber(a[1]);
  digitalWrite(key2,HIGH);
  delay(1);
  //потушим второй индикатор
  digitalWrite(key2,LOW);

  //цифра a[2] на третий индикатор
  setNumber(a[2]);
  digitalWrite(key3,HIGH);
  delay(1);
  //потушим третий индикатор
  digitalWrite(key3,LOW);

  //выведем цифру a[3] на четвертый индикатор
  setNumber(a[3]);
  digitalWrite(key4,HIGH);
  delay(1);
  //потушим четвертый индикатор
  digitalWrite(key4,LOW);
}
void setNumber(int num)
{
  switch (num)
  {
    case 0:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 1:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 2:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    
    case 3:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 4:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 5:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 6:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 7:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 8:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 9:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
   
    
  }
}

 

graf_8
Offline
Зарегистрирован: 03.04.2018

graf_8 пишет:

Я более инженер,  чем програмист поэтому особо не ругайте.

Задача состоит в том чтобы сделать кодовый замок типа такого , но чтобы вместо экрана цифры отражались на индикатарах. С помошью этой статьи лампы и клавиатура (матричная 3х4) уже подлючены к ардуино  и всё работает,  но как допилить скетч не хватает ума.

Если кому-то не сложно натолкните куда посмотреть.

 




#include <Wire.h>


// выводы для дешифратора
  int out1 = A3;
  int out2 = A1;
  int out4 = A0;
  int out8 = A2;
// выводы для транзисторных ключей
  int key1= 10;
  int key2 = 11;
  int key3 = 12;
  int key4 = 13;

   

void setup() {
  
  // put your setup code here, to run once:
  // задаем частоту ШИМ на 9 выводе 30кГц
  TCCR1B=TCCR1B&0b11111000|0x01;
  analogWrite(9,130);

  
  // Start the serial interface
  Serial.begin(9600);
 
  //задаем режим работы выходов микроконтроллера
  pinMode(out1,OUTPUT);
  pinMode(out2,OUTPUT);
  pinMode(out4,OUTPUT);
  pinMode(out8,OUTPUT);

  pinMode(key1,OUTPUT);
  pinMode(key2,OUTPUT);
  pinMode(key3,OUTPUT);
  pinMode(key4,OUTPUT);

 


}



void loop() {
  
  // put your main code here, to run repeatedly:
  int a[]={1,2,5,8 };
  show(a);
 
}

void show(int a[])
{
    //выведем цифру a[0] на первый индикатор
  setNumber(a[0]);
  digitalWrite(key1,HIGH);
  delay(1);
  //потушим первый индикатор
  digitalWrite(key1,LOW);
  
  //цифра a[1] на второй индикатор
  setNumber(a[1]);
  digitalWrite(key2,HIGH);
  delay(1);
  //потушим второй индикатор
  digitalWrite(key2,LOW);

  //цифра a[2] на третий индикатор
  setNumber(a[2]);
  digitalWrite(key3,HIGH);
  delay(1);
  //потушим третий индикатор
  digitalWrite(key3,LOW);

  //выведем цифру a[3] на четвертый индикатор
  setNumber(a[3]);
  digitalWrite(key4,HIGH);
  delay(1);
  //потушим четвертый индикатор
  digitalWrite(key4,LOW);
}
void setNumber(int num)
{
  switch (num)
  {
    case 0:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 1:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 2:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    
    case 3:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 4:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 5:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 6:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 7:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 8:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 9:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
   
    
  }
}

 

graf_8
Offline
Зарегистрирован: 03.04.2018

graf_8 пишет:

graf_8 пишет:

Я более инженер,  чем програмист поэтому особо не ругайте.

Задача состоит в том чтобы сделать кодовый замок типа такого , но чтобы вместо экрана цифры отражались на индикатарах. С помошью этой статьи лампы и клавиатура (матричная 3х4) уже подлючены к ардуино  и всё работает,  но как допилить скетч не хватает ума.

Если кому-то не сложно натолкните куда посмотреть.

 




#include <Wire.h>


// выводы для дешифратора
  int out1 = A3;
  int out2 = A1;
  int out4 = A0;
  int out8 = A2;
// выводы для транзисторных ключей
  int key1= 10;
  int key2 = 11;
  int key3 = 12;
  int key4 = 13;

   

void setup() {
  
  // put your setup code here, to run once:
  // задаем частоту ШИМ на 9 выводе 30кГц
  TCCR1B=TCCR1B&0b11111000|0x01;
  analogWrite(9,130);

  
  // Start the serial interface
  Serial.begin(9600);
 
  //задаем режим работы выходов микроконтроллера
  pinMode(out1,OUTPUT);
  pinMode(out2,OUTPUT);
  pinMode(out4,OUTPUT);
  pinMode(out8,OUTPUT);

  pinMode(key1,OUTPUT);
  pinMode(key2,OUTPUT);
  pinMode(key3,OUTPUT);
  pinMode(key4,OUTPUT);

 


}



void loop() {
  
  // put your main code here, to run repeatedly:
  int a[]={1,2,5,8 };
  show(a);
 
}

void show(int a[])
{
    //выведем цифру a[0] на первый индикатор
  setNumber(a[0]);
  digitalWrite(key1,HIGH);
  delay(1);
  //потушим первый индикатор
  digitalWrite(key1,LOW);
  
  //цифра a[1] на второй индикатор
  setNumber(a[1]);
  digitalWrite(key2,HIGH);
  delay(1);
  //потушим второй индикатор
  digitalWrite(key2,LOW);

  //цифра a[2] на третий индикатор
  setNumber(a[2]);
  digitalWrite(key3,HIGH);
  delay(1);
  //потушим третий индикатор
  digitalWrite(key3,LOW);

  //выведем цифру a[3] на четвертый индикатор
  setNumber(a[3]);
  digitalWrite(key4,HIGH);
  delay(1);
  //потушим четвертый индикатор
  digitalWrite(key4,LOW);
}
void setNumber(int num)
{
  switch (num)
  {
    case 0:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 1:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,HIGH);
    break;
    case 2:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    
    case 3:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 4:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 5:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 6:
    digitalWrite (out1,LOW);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
    case 7:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,HIGH);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 8:
    digitalWrite (out1,LOW);
    digitalWrite (out2,LOW);
    digitalWrite (out4,HIGH);
    digitalWrite (out8,LOW);
    break;
    case 9:
    digitalWrite (out1,HIGH);
    digitalWrite (out2,LOW);
    digitalWrite (out4,LOW);
    digitalWrite (out8,LOW);
    break;
   
    
  }
}

 

П.С. Чукча не писатель...

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

graf_8 пишет:

Если комуто не сложно натолкните куда посмотреть.

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

graf_8
Offline
Зарегистрирован: 03.04.2018

sadman41 пишет:

graf_8 пишет:

Если комуто не сложно натолкните куда посмотреть.

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

Проблема в том что цыфры с клавиатуры послать в порт могу, а вывисти на лампы не получается.

Проблемма именно в коде, вернее в его недописаности

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

какие-то инженеры не инженеристые попались. Видно дипломы вместо справок о прослушиванию курса дают.

5N62V
Offline
Зарегистрирован: 25.02.2016

graf_8 пишет:

Я более инженер,  чем програмист поэтому особо не ругайте.

Сукалучше бы ты ландшафтным дизайном занялся, или макромэ какое....

graf_8
Offline
Зарегистрирован: 03.04.2018

Инженеры бывают разной направлености. 

Я обратился за помошью, а не с целью обсуждения моего диплома или моих способностей.

5N62V
Offline
Зарегистрирован: 25.02.2016

graf_8 пишет:

Инженеры бывают разной направлености. 

Я обратился за помошью, а не с целью обсуждения моего диплома или моих способностей.

Ну может немного и всылили.... Но объясни, ЗАЧЕМ на газоразрядных счетсчиках?! Ведь намного проще азбукой морзе пользователю передавать.

graf_8
Offline
Зарегистрирован: 03.04.2018

5N62V пишет:

graf_8 пишет:

Инженеры бывают разной направлености. 

Я обратился за помошью, а не с целью обсуждения моего диплома или моих способностей.

Ну может немного и всылили.... Но объясни, ЗАЧЕМ на газоразрядных счетсчиках?! Ведь намного проще азбукой морзе пользователю передавать.


Это часть загадки для квеста. Нужно чтобы смотрелось необычно.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

задача банально решается в лоб написанием библиотеки, но инженер похоже "не той системы". Так что даже при рабочей библиотеке может профтыкать.