Pridani produkcni verze

resolve #1
This commit is contained in:
2025-06-13 03:05:26 +02:00
parent 0a828acb95
commit 87db35cfa0
2 changed files with 102 additions and 164 deletions

View File

@@ -1,115 +0,0 @@
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// V konečné verzi zruším čísla pinů jako proměnné, a debug.
int D1 = 3;
int D2 = 5;
int D4 = 6;
int D8 = 4;
int Dj = 7;
int H1 = 8;
int H2 = 10;
int H4 = 11;
int H8 = 9;
int Hj = 12;
boolean debug = 0;
int domaci;
int hoste;
void setup() {
if(debug){ Serial.begin(9600); }
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D8, OUTPUT);
pinMode(Dj, OUTPUT);
pinMode(H1, OUTPUT);
pinMode(H2, OUTPUT);
pinMode(H4, OUTPUT);
pinMode(H8, OUTPUT);
pinMode(Hj, OUTPUT);
//Test zobrazení
domaci = 18;
hoste = 18;
display();
if(!debug){ delay(60000); }
domaci = 0;
hoste = 0;
display();
}
void loop() {
if (mySwitch.available()) {
long value = mySwitch.getReceivedValue();
if(value == 5587904 || value == 1377728){
domaci += 1;
if (domaci == 10) {
domaci = 0;
}
display(); delay(1000);
}else if(value == 5587760 || value==1377584){
hoste += 1;
if (hoste == 10) {
hoste = 0;
}
display(); delay(1000);
}
mySwitch.resetAvailable();
}
}
void display() {
boolean domaci_b[4], hoste_b[4];
int_to_bin_digit(domaci % 10, domaci_b);
int_to_bin_digit(hoste % 10, hoste_b);
digitalWrite(D1, domaci_b[3]);
digitalWrite(D2, domaci_b[2]);
digitalWrite(D4, domaci_b[1]);
digitalWrite(D8, domaci_b[0]);
digitalWrite(Dj, domaci/10);
digitalWrite(H1, hoste_b[3]);
digitalWrite(H2, hoste_b[2]);
digitalWrite(H4, hoste_b[1]);
digitalWrite(H8, hoste_b[0]);
digitalWrite(Hj, hoste/10);
if(debug){
Serial.print(domaci); Serial.print("\t:\t"); Serial.println(hoste);
Serial.print(domaci/10);
Serial.print(" ");
Serial.print(domaci_b[0]);
Serial.print(domaci_b[1]);
Serial.print(domaci_b[2]);
Serial.print(domaci_b[3]);
Serial.print("\t:\t");
Serial.print(hoste/10);
Serial.print(" ");
Serial.print(hoste_b[0]);
Serial.print(hoste_b[1]);
Serial.print(hoste_b[2]);
Serial.println(hoste_b[3]);
}
}
void int_to_bin_digit(unsigned int in, boolean* out)
{
/* assert: count <= sizeof(int)*CHAR_BIT */
unsigned int mask = 1U << 3;
int i;
for (i = 0; i < 4; i++) {
out[i] = (in & mask) ? 1 : 0;
in <<= 1;
}
}

View File

@@ -1,13 +1,13 @@
/* /*
Současné ovladače Současné ovladače
5587904 5587760 5587904 5587760
5587952 5587724 5587952 5587724
5587916 5587772 5587916 5587772
1377728 1377584 1377728 1377584
1377776 1377548 1377776 1377548
1377740 1377596 1377740 1377596
1377788 1377539 1377788 1377539
*/ */
#include <Tasker.h> #include <Tasker.h>
@@ -17,6 +17,9 @@ int stav = 0; // 1=nastaveni, 2=readytostart, 3=polocas1, 4=pauza, 5=polocas2, 6
int minuta, delka = 45, vynulovani; int minuta, delka = 45, vynulovani;
boolean debug = 0, i; boolean debug = 0, i;
int domaci;
int hoste;
Tasker tasker; Tasker tasker;
RCSwitch mySwitch = RCSwitch(); RCSwitch mySwitch = RCSwitch();
@@ -29,19 +32,19 @@ void change() {
tasker.cancel(polocas); tasker.cancel(polocas);
tasker.cancel(blinking, 0); tasker.cancel(blinking, 0);
tasker.cancel(blinking, delka); tasker.cancel(blinking, delka);
tasker.cancel(blinking, 2*delka); tasker.cancel(blinking, 2 * delka);
minuta = 0; minuta = 0;
} }
} else { } else {
if (delka == 45) { if (delka == 45) {
delka = 35; delka = 35;
display(delka); displayminutes(delka);
} else if (delka == 35) { } else if (delka == 35) {
delka = 30; delka = 30;
display(delka); displayminutes(delka);
} else if (delka == 30) { } else if (delka == 30) {
delka = 45; delka = 45;
display(delka); displayminutes(delka);
} }
delay(500); delay(500);
} }
@@ -56,40 +59,40 @@ void enter() {
} else if (stav == 2) { } else if (stav == 2) {
tasker.cancel(blinking, 0); tasker.cancel(blinking, 0);
stav = 3; // Poločas 1 stav = 3; // Poločas 1
display(0); displayminutes(0);
tasker.setInterval(polocas, 60000); tasker.setInterval(polocas, 60000);
} else if (stav == 4) { } else if (stav == 4) {
tasker.cancel(blinking, minuta); tasker.cancel(blinking, minuta);
stav = 5; //Poločas 2 stav = 5; //Poločas 2
display(minuta); displayminutes(minuta);
tasker.setInterval(polocas, 60000); tasker.setInterval(polocas, 60000);
} }
} }
void minutym(){ void minutym() {
if((stav == 3 && minuta > 0) || (stav == 5 && minuta > delka)){ if ((stav == 3 && minuta > 0) || (stav == 5 && minuta > delka)) {
minuta--; minuta--;
display(minuta); displayminutes(minuta);
delay(500); delay(500);
} }
} }
void minutyp(){ void minutyp() {
if((stav == 3 && minuta < delka) || (stav == 5 && minuta < 2*delka)){ if ((stav == 3 && minuta < delka) || (stav == 5 && minuta < 2 * delka)) {
minuta++; minuta++;
display(minuta); displayminutes(minuta);
delay(500); delay(500);
} }
} }
void polocas() { void polocas() {
minuta++; minuta++;
display(minuta); displayminutes(minuta);
if (minuta == delka && stav == 3) { if (minuta == delka && stav == 3) {
stav = 4; stav = 4;
tasker.cancel(polocas); tasker.cancel(polocas);
tasker.setInterval(blinking, 500, minuta); tasker.setInterval(blinking, 500, minuta);
}else if(minuta == 2*delka && stav == 5){ } else if (minuta == 2 * delka && stav == 5) {
stav = 6; stav = 6;
tasker.cancel(polocas); tasker.cancel(polocas);
tasker.setInterval(blinking, 500, minuta); tasker.setInterval(blinking, 500, minuta);
@@ -97,8 +100,17 @@ void polocas() {
} }
void setup() { void setup() {
if(debug){ Serial.begin(9600); } if (debug) {
Serial.begin(9600);
}
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
pinMode(1, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT); pinMode(9, OUTPUT);
pinMode(10, OUTPUT); pinMode(10, OUTPUT);
pinMode(11, OUTPUT); pinMode(11, OUTPUT);
@@ -107,14 +119,23 @@ void setup() {
pinMode(A0, OUTPUT); pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT); pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT); pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
//Test zobrazení //Test zobrazení
display(88); domaci = 18;
if(!debug){ delay(60000); } //88 na začátku hoste = 18;
displayscore();
displayminutes(88);
delay(60000); //88 na začátku
//tasker.setInterval(display, 500); //tasker.setInterval(displayminutes, 500);
domaci = 0;
hoste = 0;
displayscore();
displayminutes(delka);
stav = 1; stav = 1;
display(delka);
} }
void loop() { void loop() {
@@ -131,6 +152,18 @@ void loop() {
minutym(); minutym();
} else if (value == 5587724 || value == 1377548) { } else if (value == 5587724 || value == 1377548) {
minutyp(); minutyp();
} else if (value == 5587904 || value == 1377728) {
domaci += 1;
if (domaci == 20) {
domaci = 0;
}
displayscore(); delay(1000);
} else if (value == 5587760 || value == 1377584) {
hoste += 1;
if (hoste == 20) {
hoste = 0;
}
displayscore(); delay(1000);
} }
mySwitch.resetAvailable(); mySwitch.resetAvailable();
@@ -138,38 +171,58 @@ void loop() {
} }
void blinking(int dig) { void blinking(int dig) {
if(!i){ if (!i) {
digitalWrite(12, 1); digitalWrite(6, 1);
digitalWrite(10, 1);
digitalWrite(9, 1);
digitalWrite(11, 1);
digitalWrite(A1, 1);
digitalWrite(13, 1);
digitalWrite(A0, 1); digitalWrite(A0, 1);
digitalWrite(13, 1);
digitalWrite(A1, 1);
digitalWrite(A5, 1);
digitalWrite(A3, 1);
digitalWrite(A2, 1); digitalWrite(A2, 1);
if(debug){ Serial.println("blank"); } digitalWrite(A4, 1);
i=1; if (debug) {
}else{ Serial.println("blank");
display(dig); }
i=0; i = 1;
} else {
displayminutes(dig);
i = 0;
} }
} }
void display(int dig) { void displayscore() {
boolean domaci_b[4], hoste_b[4];
int_to_bin_digit(domaci % 10, domaci_b);
int_to_bin_digit(hoste % 10, hoste_b);
digitalWrite(5, domaci_b[3]);
digitalWrite(3, domaci_b[2]);
digitalWrite(1, domaci_b[1]);
digitalWrite(4, domaci_b[0]);
digitalWrite(7, domaci / 10);
digitalWrite(12, hoste_b[3]);
digitalWrite(10, hoste_b[2]);
digitalWrite(9, hoste_b[1]);
digitalWrite(11, hoste_b[0]);
digitalWrite(8, hoste / 10);
}
void displayminutes(int dig) {
boolean minuta1[4], minuta2[4]; boolean minuta1[4], minuta2[4];
int_to_bin_digit(dig / 10, minuta1); int_to_bin_digit(dig / 10, minuta1);
int_to_bin_digit(dig % 10, minuta2); int_to_bin_digit(dig % 10, minuta2);
digitalWrite(12, minuta1[3]);
digitalWrite(10, minuta1[2]);
digitalWrite(9, minuta1[1]);
digitalWrite(11, minuta1[0]);
digitalWrite(A1, minuta2[0]); digitalWrite(A5, minuta1[3]);
digitalWrite(13, minuta2[1]); digitalWrite(A3, minuta1[2]);
digitalWrite(A2, minuta1[1]);
digitalWrite(A4, minuta1[0]);
digitalWrite(6, minuta2[3]);
digitalWrite(A0, minuta2[2]); digitalWrite(A0, minuta2[2]);
digitalWrite(A2, minuta2[3]); digitalWrite(13, minuta2[1]);
if(debug){ Serial.println(dig); } digitalWrite(A1, minuta2[0]);
} }
void int_to_bin_digit(unsigned int in, boolean* out) void int_to_bin_digit(unsigned int in, boolean* out)