Scoreboard
-
- Příspěvky: 1
- Registrován: 26 bře 2018, 12:46
- Reputation: 0
Scoreboard
Zdravím,
chci udělat ukazatel score na fotbal. Velká tabule cca 100x50 cm a na ní domací:hosté a čas. Sedmisegmentový displej by jsem chtěl udělat z led pásku. Neměl by někdo program do arduina uno? popřípadě i schéma? Stačí mi jedno tlačítko +domácí, jedno tlačítko +hosté, a čas aby běžel od 0 do 45. pak stačí tlačítko na reset.
chci udělat ukazatel score na fotbal. Velká tabule cca 100x50 cm a na ní domací:hosté a čas. Sedmisegmentový displej by jsem chtěl udělat z led pásku. Neměl by někdo program do arduina uno? popřípadě i schéma? Stačí mi jedno tlačítko +domácí, jedno tlačítko +hosté, a čas aby běžel od 0 do 45. pak stačí tlačítko na reset.
Re: Scoreboard
Fotbal mě nebaví, ale i tak napíšu svůj názor.
Určitě bych dal možnost góly tlačítky přičítat, ale i odečítat. Obsluha se může ukliknout, nebo gól nebude uznaný ... prostě mít tu možnost. Časomíru nejen do 45, ale i dále. Může se nastavovat. Možná by bylo zajímavé do 45 min. zelenou barvou, nad 45 minu. červenou (RGB pásky).
V každém případě zkus pohledat na webu, tohle určitě už někdo vymýšlel (nebo něco podobného).
Určitě bych dal možnost góly tlačítky přičítat, ale i odečítat. Obsluha se může ukliknout, nebo gól nebude uznaný ... prostě mít tu možnost. Časomíru nejen do 45, ale i dále. Může se nastavovat. Možná by bylo zajímavé do 45 min. zelenou barvou, nad 45 minu. červenou (RGB pásky).
V každém případě zkus pohledat na webu, tohle určitě už někdo vymýšlel (nebo něco podobného).
-
- Příspěvky: 5
- Registrován: 19 čer 2018, 21:26
- Reputation: 0
Re: Scoreboard
Dobry den, jak se projekt vyvyji, resim velmi podobny a potrebuji radu.
Dekuji
Dekuji
-
- Příspěvky: 5
- Registrován: 19 čer 2018, 21:26
- Reputation: 0
Re: Scoreboard
Chtěl bych poprosit o pomoc s tímto projektem.
zdrojový kód bych zaslal emailem.
Můj email: jakubrichter@seznam.cz
děkuji předem
zdrojový kód bych zaslal emailem.
Můj email: jakubrichter@seznam.cz
děkuji předem
Re: Scoreboard
Pokud chcete pomoci, ptejte se tady, pokud je to nabídka práce, přesuňte to do práce když sem dáte zdroják a napíšete problém, je tu mnoho lidí co pomůže
-
- Příspěvky: 5
- Registrován: 19 čer 2018, 21:26
- Reputation: 0
Re: Scoreboard
Dobrý den,
tabule je tvořena čtyřmi 7-segmentovými čísly tvořených programovatelným LED páskem v jednom kuse. Dvě jsou určeny pro góly domácích a hostů a dvě jsou pro minuty(0-90).
ovládání bude pomocí tlačítek.
jedno tlačítko pro reset, další pro domácí gól + a -, to samé pro hosty. Další tlačítko by bylo na spuštění času 0-45 a poslední tlačítko 45-90.
Problém je s tím časem. Góly přičítat a odečítat již jde, ale jakmile spustím časovač(který navíc ještě nefunguje dobře), tak nejdou přičítat góly.
poradíte někdo?
děkuji
tabule je tvořena čtyřmi 7-segmentovými čísly tvořených programovatelným LED páskem v jednom kuse. Dvě jsou určeny pro góly domácích a hostů a dvě jsou pro minuty(0-90).
ovládání bude pomocí tlačítek.
jedno tlačítko pro reset, další pro domácí gól + a -, to samé pro hosty. Další tlačítko by bylo na spuštění času 0-45 a poslední tlačítko 45-90.
Problém je s tím časem. Góly přičítat a odečítat již jde, ale jakmile spustím časovač(který navíc ještě nefunguje dobře), tak nejdou přičítat góly.
poradíte někdo?
děkuji
Kód: Vybrat vše
const int buttonPin = 2; // the number of the pushbutton pin
const int buttonPin2 = 3; // the number of the pushbutton pin
const int buttonPin3 = 4; // the number of the pushbutton pin
const int buttonPin4 = 5; // the number of the pushbutton pin
const int buttonPin5 = 6; // the number of the pushbutton pin
int buttonState = 0; // variable for reading the pushbutton status
int buttonState2 = 0; // variable for reading the pushbutton status
int buttonState3 = 0; // variable for reading the pushbutton status
int buttonState4 = 0; // variable for reading the pushbutton status
int buttonState5 = 0; // variable for reading the pushbutton status
int DOMA=0;
int HOST=10;
int CAS1=20;
int CAS2=30;
long lastJob1=0;
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
// číslo PINu na Arduinu
#define PIN 6
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 154
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGBW + NEO_KHZ800);
void setup() {
pixels.begin(); // This initializes the NeoPixel library.
pinMode(PIN, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
buttonState4 = digitalRead(buttonPin4);
if (buttonState == HIGH) {
digitWrite(0, DOMA=0, 2);
digitWrite(0, HOST=10, 2);
digitWrite(0, CAS1=20, 2);
digitWrite(0, CAS2=30, 2);
pixels.show();
delay(1000);
} else {
digitWrite(0, DOMA, 2);
digitWrite(0, HOST, 2);
digitWrite(0, CAS1, 2);
digitWrite(0, CAS2, 2);
}
if (buttonState2 == HIGH) {
DOMA=DOMA+1;
digitWrite(0, DOMA, 2);
digitWrite(0, HOST, 2);
pixels.show();
delay(1000);
} else {
digitWrite(0, DOMA, 2);
digitWrite(0, HOST, 2);
}
if (buttonState3 == HIGH) {
HOST=HOST+1;
digitWrite(0, DOMA, 2);
digitWrite(0, HOST, 2);
pixels.show();
delay(1000);
} else {
digitWrite(0, DOMA, 2);
digitWrite(0, HOST, 2);
}
if (buttonState4 == HIGH) {
// turn LED on:
if (millis() > (1000 + lastJob1)) {
// zde bude kód programu, který se v mém případě
// vykoná každou 1 vteřinu (1000 ms)
digitWrite(0, CAS2, 2);
digitWrite(0, CAS1, 2);
for(int CAS2=30; CAS2<34; CAS2++){
for(int CAS1=20;CAS1<30;CAS1++){
pixels.show();
}
}
}
lastJob1 = millis();
}
}
void digitWrite(int digit, int val, int col){
//use this to light up a digit
//digit is which digit panel one (right to left, 0 indexed)
//val is the character value to set on the digit
//col is the predefined color to use, R,G,B or W
//example:
// digitWrite(0, 4, 2);
//would set the first digit
//on the right to a "4" in green.
/*
// Letters are the standard segment naming, as seen from the front,
// numbers are based upon the wiring sequence
A 2
----------
| |
| |
F 1 | | B 3
| |
| G 7 |
----------
| |
| |
E 6 | | C 4
| |
| D 5 |
---------- dp 8
*/
//these are the digit panel character value definitions,
//if color argument is a 0, the segment is off
if (val==0){
//segments F,A,B,C,D,E,G, dp
segLight(digit,1,col);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,col);
segLight(digit,7,0);
}
if (val==1){
segLight(digit,1,0);
segLight(digit,2,0);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,0);
segLight(digit,6,0);
segLight(digit,7,0);
}
if (val==2){
segLight(digit,1,0);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,0);
segLight(digit,5,col);
segLight(digit,6,col);
segLight(digit,7,col);
}
if (val==3){
segLight(digit,1,0);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,0);
segLight(digit,7,col);
}
if (val==4){
segLight(digit,1,col);
segLight(digit,2,0);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,0);
segLight(digit,6,0);
segLight(digit,7,col);
}
if (val==5){
segLight(digit,1,col);
segLight(digit,2,col);
segLight(digit,3,0);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,0);
segLight(digit,7,col);
}
if (val==6){
segLight(digit,1,col);
segLight(digit,2,col);
segLight(digit,3,0);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,col);
segLight(digit,7,col);
}
if (val==7){
segLight(digit,1,0);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,0);
segLight(digit,6,0);
segLight(digit,7,0);
}
if (val==8){
segLight(digit,1,col);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,col);
segLight(digit,7,col);
}
if (val==9){
segLight(digit,1,col);
segLight(digit,2,col);
segLight(digit,3,col);
segLight(digit,4,col);
segLight(digit,5,col);
segLight(digit,6,0);
segLight(digit,7,col);
}
if (val==10){
//segments F,A,B,C,D,E,G, dp
segLight(digit,8,col);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,col);
segLight(digit,14,0);
}
if (val==11){
segLight(digit,8,0);
segLight(digit,9,0);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,0);
segLight(digit,13,0);
segLight(digit,14,0);
}
if (val==12){
segLight(digit,8,0);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,0);
segLight(digit,12,col);
segLight(digit,13,col);
segLight(digit,14,col);
}
if (val==13){
segLight(digit,8,0);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,0);
segLight(digit,14,col);
}
if (val==14){
segLight(digit,8,col);
segLight(digit,9,0);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,0);
segLight(digit,13,0);
segLight(digit,14,col);
}
if (val==15){
segLight(digit,8,col);
segLight(digit,9,col);
segLight(digit,10,0);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,0);
segLight(digit,14,col);
}
if (val==16){
segLight(digit,8,col);
segLight(digit,9,col);
segLight(digit,10,0);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,col);
segLight(digit,14,col);
}
if (val==17){
segLight(digit,8,0);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,0);
segLight(digit,13,0);
segLight(digit,14,0);
}
if (val==18){
segLight(digit,8,col);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,col);
segLight(digit,14,col);
}
if (val==19){
segLight(digit,8,col);
segLight(digit,9,col);
segLight(digit,10,col);
segLight(digit,11,col);
segLight(digit,12,col);
segLight(digit,13,0);
segLight(digit,14,col);
}
if (val==20){
//segments F,A,B,C,D,E,G, dp
segLight(digit,15,col);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,col);
segLight(digit,21,0);
}
if (val==21){
segLight(digit,15,0);
segLight(digit,16,0);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,0);
segLight(digit,20,0);
segLight(digit,21,0);
}
if (val==22){
segLight(digit,15,0);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,0);
segLight(digit,19,col);
segLight(digit,20,col);
segLight(digit,21,col);
}
if (val==23){
segLight(digit,15,0);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,0);
segLight(digit,21,col);
}
if (val==24){
segLight(digit,15,col);
segLight(digit,16,0);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,0);
segLight(digit,20,0);
segLight(digit,21,col);
}
if (val==25){
segLight(digit,15,col);
segLight(digit,16,col);
segLight(digit,17,0);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,0);
segLight(digit,21,col);
}
if (val==26){
segLight(digit,15,col);
segLight(digit,16,col);
segLight(digit,17,0);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,col);
segLight(digit,21,col);
}
if (val==27){
segLight(digit,15,0);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,0);
segLight(digit,20,0);
segLight(digit,21,0);
}
if (val==28){
segLight(digit,15,col);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,col);
segLight(digit,21,col);
}
if (val==29){
segLight(digit,15,col);
segLight(digit,16,col);
segLight(digit,17,col);
segLight(digit,18,col);
segLight(digit,19,col);
segLight(digit,20,0);
segLight(digit,21,col);
}
if (val==30){
//segments F,A,B,C,D,E,G, dp
segLight(digit,22,col);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,col);
segLight(digit,28,0);
}
if (val==31){
segLight(digit,22,0);
segLight(digit,23,0);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,0);
segLight(digit,27,0);
segLight(digit,28,0);
}
if (val==32){
segLight(digit,22,0);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,0);
segLight(digit,26,col);
segLight(digit,27,col);
segLight(digit,28,col);
}
if (val==33){
segLight(digit,22,0);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,0);
segLight(digit,28,col);
}
if (val==34){
segLight(digit,22,col);
segLight(digit,23,0);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,0);
segLight(digit,27,0);
segLight(digit,28,col);
}
if (val==35){
segLight(digit,22,col);
segLight(digit,23,col);
segLight(digit,24,0);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,0);
segLight(digit,28,col);
}
if (val==36){
segLight(digit,22,col);
segLight(digit,23,col);
segLight(digit,24,0);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,col);
segLight(digit,28,col);
}
if (val==37){
segLight(digit,22,0);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,0);
segLight(digit,27,0);
segLight(digit,28,0);
}
if (val==38){
segLight(digit,22,col);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,col);
segLight(digit,28,col);
}
if (val==39){
segLight(digit,22,col);
segLight(digit,23,col);
segLight(digit,24,col);
segLight(digit,25,col);
segLight(digit,26,col);
segLight(digit,27,0);
segLight(digit,28,col);
}
}
//END void digitWrite()
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void segLight(char digit, int seg, int col){
//use this to light up a segment
//digit picks which neopixel strip
//seg calls a segment
//col is color
int color[3];
//color sets
if (col==0){ //off
color[0]={0};
color[1]={0};
color[2]={0};
}
if (col==1){ //red
color[0]={255};
color[1]={0};
color[2]={0};
}
if (col==2){ //green
color[0]={0};
color[1]={255};
color[2]={0};
}
if (col==3){ //blue
color[0]={0};
color[1]={0};
color[2]={255};
}
if (col==4){ //white -- careful with this one, 3x power consumption
//if 255 is used
color[0]={100};
color[1]={100};
color[2]={100};
}
if (col==5){ //yellow
color[0]={220};
color[1]={150};
color[2]={0};
}
if (col==6){ //
color[0]={0};
color[1]={150};
color[2]={150};
}
if (col==7){ //
color[0]={150};
color[1]={0};
color[2]={150};
}
if (col==8){ //
color[0]={220};
color[1]={50};
color[2]={50};
}
if (col==9){ //
color[0]={200};
color[1]={100};
color[2]={0};
}
if (col==10){ //
color[0]={0};
color[1]={50};
color[2]={200};
}
//sets are 0-7, 8-15, 16-23, 24-31, 32-39, 40-47, 48-55, 56
//seg F
if(seg==1){
//light first 8
for(int i=0; i<7; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg A
if(seg==2){
//light second 8
for(int i=7; i<14; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg B
if(seg==3){
for(int i=14; i<21; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg C
if(seg==4){
for(int i=21; i<28; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg D
if(seg==5){
for(int i=28; i<35; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg E
if(seg==6){
for(int i=35; i<42; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg G
if(seg==7){
for(int i=42; i<49; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg F2
if(seg==8){
//light first 8
for(int i=49; i<56; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg A2
if(seg==9){
//light second 8
for(int i=56; i<63; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg B2
if(seg==10){
for(int i=63; i<70; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg C2
if(seg==11){
for(int i=70; i<77; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg D2
if(seg==12){
for(int i=77; i<84; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg E2
if(seg==13){
for(int i=84; i<91; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg G2
if(seg==14){
for(int i=91; i<98; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg F3
if(seg==15){
//light first 8
for(int i=98; i<102; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg A3
if(seg==16){
//light second 8
for(int i=102; i<106; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg B3
if(seg==17){
for(int i=106; i<110; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg C3
if(seg==18){
for(int i=110; i<114; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg D3
if(seg==19){
for(int i=114; i<118; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg E3
if(seg==20){
for(int i=118; i<122; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg G3
if(seg==21){
for(int i=122; i<126; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg F4
if(seg==22){
//light first 8
for(int i=126; i<130; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg A4
if(seg==23){
//light second 8
for(int i=130; i<134; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg B4
if(seg==24){
for(int i=134; i<138; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg C4
if(seg==25){
for(int i=138; i<142; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg D4
if(seg==26){
for(int i=142; i<146; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg E4
if(seg==27){
for(int i=146; i<150; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
//seg G4
if(seg==28){
for(int i=150; i<156; i++){
pixels.setPixelColor(i,color[0],color[1],color[2]);
}
}
}
//END void segLight()
//
//////////////////////////////////////////////////////////////////////////////
Re: Scoreboard
Hlavní problém je to že kód vlastně "nestíhá." Ty tlačítka kontroluje mezi spoustou dalších instrukcí a jakmile jednou prošvihne stisknuté tlačíko, musí dojet zbylé instrukce (což udělá spoždění) a pak ho zkontrolovat znovu. Aby jsme tomu zabránili, používají se v programu většinou perušení. Když někdo zmáčkne tlačítko, program pouze dodělá instrukci kterou prováděl a odskočí si aby provedl to co se má udělat po stisku tlačítka. Když to dodělá, vrátí se zase k hlavnímu programu. To co by jste tedy potřeboval udělat jsou přerušení pro tlačítka (alespoň + a - gólů). Pokud se netrápíte s angličtinou je nejlepším zdrojem www.arduino.cc/reference/en/language/fu ... interrupt/. Tím bych tedy začal, nastavit si tlačítka tak aby se při jejich stisku zavolalo přerušení. Časovač se dá potom ještě opravit za pomoci čítače a zase přerušení ale o tom kdyžtak později.
Re: Scoreboard
Taky jsem koukal, že je tam několikrát delay po 1s. To svižnosti reakcí taky příliš neprospívá.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů