Matchur för fotboll

Berätta om dina pågående projekt.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Tänkte jag skulle kika på att snygga till mappningen av tecken, men först skulle jag "bara" ha alla byggstenar klara.
Och nästa grej var att fixa en liten panel med 5 knappar.
Lödde ihop en med 5 knappar jag lött loss från några paneler man samlat på sig. Vanliga återfjädrande ytmonterade.
Alla fick en gemensam jord, så när man trycker jordas ingången.
I arduino kan man definiera en ingång som INPUT_PULLUP vilket aktiverar en intern pullup.
Men detta hjälper ju inte kontaktstuds ska jag snart inse..

Jag läste lite och fann en interupt-rutin som verkar fiffig, så den använder jag.
Men det beter sig allt annat än snyggt, och jag inte se annat än att det beror på kontaktstuds.
Programmet i all sin enkelhet ska ändra status på en variabel. Men det är liksom svårt att får det att ta konsekvent. Så kontaktstuds är min gissning nu.
Kikat lite på filtrering i kod, ska testa lite och se om det är gångbart.

Bjussar på koden som jag kör med när jag testar knappar:

Kod: Markera allt

int pinBTN1 = 3;
int pinBTN2 = 18;
int pinBTN3 = 19;
int pinBTN4 = 20;
int pinBTN5 = 21;
int pinBCD11 = 53;
int pinBCD12 = 51;
int pinBCD14 = 49;
int pinBCD18 = 47;
int BCDsum = 0;
volatile int StartFromZero = LOW;
volatile int StartFromSet = LOW;
volatile int Pause = LOW;
volatile int StopAndZero = LOW;
volatile int PointCountActive = LOW;

void setup()
{
  pinMode(pinBTN1, INPUT_PULLUP);
  pinMode(pinBTN2, INPUT_PULLUP);
  pinMode(pinBTN3, INPUT_PULLUP);
  pinMode(pinBTN4, INPUT_PULLUP);
  pinMode(pinBTN5, INPUT_PULLUP);
  pinMode(pinBCD11, INPUT_PULLUP);
  pinMode(pinBCD12, INPUT_PULLUP);
  pinMode(pinBCD14, INPUT_PULLUP);
  pinMode(pinBCD18, INPUT_PULLUP);
  attachInterrupt(1, intrptBTN1, FALLING);
  attachInterrupt(5, intrptBTN2, FALLING);
  attachInterrupt(4, intrptBTN3, FALLING);
  attachInterrupt(3, intrptBTN4, FALLING);
  attachInterrupt(2, intrptBTN5, FALLING);
  Serial.begin(9600);
}

void loop()
{
  BCDsum = 0;
  if (digitalRead(pinBCD11) == LOW) BCDsum = BCDsum + 1;
  if (digitalRead(pinBCD12) == LOW) BCDsum = BCDsum + 2;
  if (digitalRead(pinBCD14) == LOW) BCDsum = BCDsum + 4;
  if (digitalRead(pinBCD18) == LOW) BCDsum = BCDsum + 8;
  Serial.println(BCDsum);
  Serial.println(StartFromZero);
  Serial.println(StartFromSet);
  Serial.println(Pause);
  Serial.println(StopAndZero);
  Serial.println(PointCountActive);
  Serial.println("---------------");
  delay(2000);
  
}

void intrptBTN1() {
  StartFromZero = !StartFromZero;
}
void intrptBTN2() {
  StartFromSet = !StartFromSet;
}
void intrptBTN3() {
  Pause = !Pause;
}
void intrptBTN4() {
  StopAndZero = !StopAndZero;
}
void intrptBTN5() {
  PointCountActive = !PointCountActive;
}
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Matchur för fotboll

Inlägg av Icecap »

Du kan vara 100% säker på att knappar studsar! Om du inte har byggt på någon avstudsning i hårdvara fungerar det inte med interrupt till den del.

Jag brukar starta en timer-interrupt och låta den avläsa knapp-porten. Jag brukar även att låta den göra två avläsningar som ska vara identiska innan en knapptryckning är giltig.

Avläser man med minst 20Hz (två avläsningar blir 10Hz) blir det motsvarande det snabbaste man hinner trycka, jag har testat det.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Är rädd för att skriva egen kod för timer interupt och liknande går över mitt förstånd..

men jag har läst lite om folk som skrivit egen debounce i kod, och principen är väl att den bara får ändra status på variabeln om det gått en viss tid sedan sist.
Så i princip:

Kod: Markera allt

void intrptBTN1() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    StartFromZero = !StartFromZero;
  }
      lastDebounceTime = millis();
}
Men det är inte helt bra än. Klurar på om jag tänker fel eller använder för liten tid att vänta. Men flera milli borde räcka?
Eller kan det vara så att milliräknaren är underprioriterad en sån här interupt och inte ökar tiden?
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Koden verkar funka! :)
Fläskade på med 100ms i "debounceDelay" och nu funkar det riktigt fint, inga studsar i programmet vad jag kan se!
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Jag har inte skrivit så mycket här, mest knackat kod och jobbat. Men nu är jag nog framme vid version 1.0! :D

Har bjudit hem "beställaren" för avprovning, det går ju att dividera sig gul och blå på hur saker ska fungera, så jag tänkte att det är nog lättare att han själv tar en titt och tycker till.

Koden, för den nyfikne:

Kod: Markera allt

#include <Time.h>
#include <Timer.h>
Timer t;

long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 200;    // the debounce time; increase if the output flickers

int pinBTN1 = 3;   //StartFromZero
int pinBTN2 = 18;  //StartFromSet
int pinBTN3 = 19;  //Pause
int pinBTN4 = 20;  //StopAndZero
int pinBTN5 = 21;  //PointCountActive
int pinLED1 = 9;   //StartFromZero
int pinLED2 = 10;  //StartFromSet
int pinLED3 = 11;  //Pause
int pinLED4 = 12;  //StopAndZero
int pinLED5 = 13;  //PointCountActive
int pinBCD11 = 39; //Minutsiffra 1
int pinBCD12 = 41;
int pinBCD14 = 43;
int pinBCD18 = 45;
int pinBCD21 = 47; //Minutsiffra 2
int pinBCD22 = 49;
int pinBCD24 = 51;
int pinBCD28 = 53;
int pinBCD31 = 38; //Poäng hemma
int pinBCD32 = 40;
int pinBCD34 = 42;
int pinBCD38 = 44;
int pinBCD41 = 46; //Poäng Borta
int pinBCD42 = 48;
int pinBCD44 = 50;
int pinBCD48 = 52;
int pinRLK   = 30;  //Latch
int pinSLK   = 28;  //Clock
int pinDAT   = 26;  //Data
int pinDP1   = 22;
int pinDP2   = 24;
String sToDisp;
String iMM;
String iSS;
String iMMSS;
char OneChar;

volatile int StartFromZero = LOW;
volatile int StartFromSet = LOW;
volatile int Pause = LOW;
volatile int StopAndZero = LOW;
volatile int PointCountActive = LOW;

int pinDP1state = LOW;
int pinDP2state = LOW;
int enableTick;
int runMode = 0; //Runmodes. 0=init. 1=Roll logo. 2=StartFromZero. 3=StartFromSet. 4=Pause. 5=StopAndZero.
int enablePoints = LOW;
int StartFromZeroInit = LOW;
int StartFromSetInit = LOW;
int PauseInit = LOW;
int ipMM;
int ipSS;
int lastRunMode = 0;


void setup()
{
  pinMode(pinBTN1, INPUT_PULLUP);  //StartFromZero
  pinMode(pinBTN2, INPUT_PULLUP);  //StartFromSet
  pinMode(pinBTN3, INPUT_PULLUP);  //Pause
  pinMode(pinBTN4, INPUT_PULLUP);  //StopAndZero
  pinMode(pinBTN5, INPUT_PULLUP);  //PointCountActive
  pinMode(pinBCD11, INPUT_PULLUP); //Minutsiffra 1
  pinMode(pinBCD12, INPUT_PULLUP);
  pinMode(pinBCD14, INPUT_PULLUP);
  pinMode(pinBCD18, INPUT_PULLUP);
  pinMode(pinBCD21, INPUT_PULLUP); //Minutsiffra 2
  pinMode(pinBCD22, INPUT_PULLUP);
  pinMode(pinBCD24, INPUT_PULLUP);
  pinMode(pinBCD28, INPUT_PULLUP);
  pinMode(pinBCD31, INPUT_PULLUP); //Poäng hemma
  pinMode(pinBCD32, INPUT_PULLUP);
  pinMode(pinBCD34, INPUT_PULLUP);
  pinMode(pinBCD38, INPUT_PULLUP);
  pinMode(pinBCD41, INPUT_PULLUP); //Poäng Borta
  pinMode(pinBCD42, INPUT_PULLUP);
  pinMode(pinBCD44, INPUT_PULLUP);
  pinMode(pinBCD48, INPUT_PULLUP);
  pinMode(pinLED1, OUTPUT);        //StartFromZero
  pinMode(pinLED2, OUTPUT);        //StartFromSet
  pinMode(pinLED3, OUTPUT);        //Pause
  pinMode(pinLED4, OUTPUT);        //StopAndZero
  pinMode(pinLED5, OUTPUT);        //PointCountActive
  pinMode(pinDAT, OUTPUT);
  pinMode(pinDAT, OUTPUT);
  pinMode(pinSLK, OUTPUT);
  pinMode(pinRLK, OUTPUT);
  pinMode(pinDP1, OUTPUT);
  pinMode(pinDP2, OUTPUT);

  attachInterrupt(1, intrptBTN1, FALLING); //StartFromZero
  attachInterrupt(5, intrptBTN2, FALLING); //StartFromSet
  attachInterrupt(4, intrptBTN3, FALLING); //Pause
  attachInterrupt(3, intrptBTN4, FALLING); //StopAndZero
  attachInterrupt(2, intrptBTN5, FALLING); //PointCountActive
  Serial.begin(9600);
  t.every(500, DP12tick);
  t.every(5000, showScore);
  
}

void loop() {
  t.update();

//Runmodes. 0=init. 1=Roll logo. 2=StartFromZero. 3=StartFromSet. 4=Pause. 5=StopAndZero  

switch (runMode) {
    case 0:
        initScoreBoard();
      break;
    case 1: //Roll logo
        digitalWrite(pinLED1, HIGH);//StartFromZero LED
        digitalWrite(pinLED2, HIGH);//StartFromSet LED
        digitalWrite(pinLED3, HIGH);//Pause LED
        digitalWrite(pinLED4, LOW);//StopAndZero LED
        enableTick = LOW;
        RollLogo();
      break;
    case 2: //StartFromZero
        digitalWrite(pinLED1, LOW);//StartFromZero LED
        digitalWrite(pinLED2, HIGH);//StartFromSet LED
        digitalWrite(pinLED3, HIGH);//Pause LED
        digitalWrite(pinLED4, HIGH);//StopAndZero LED
        PauseInit = LOW;
        enableTick = HIGH;        
        CountFromZero();
      break;
    case 3: //StartFromSet
        digitalWrite(pinLED1, HIGH);//StartFromZero LED
        digitalWrite(pinLED2, LOW);//StartFromSet LED
        digitalWrite(pinLED3, HIGH);//Pause LED
        digitalWrite(pinLED4, HIGH);//StopAndZero LED
        PauseInit = LOW;
        enableTick = HIGH;        
        CountFromSet();
      break;      
    case 4: //Pause
        digitalWrite(pinLED1, HIGH);//StartFromZero LED
        digitalWrite(pinLED2, HIGH);//StartFromSet LED
        digitalWrite(pinLED3, LOW);//Pause LED
        digitalWrite(pinLED4, HIGH);//StopAndZero LED
        enableTick = LOW;        
        PauseTime();
      break;
    case 5: //StopAndZero
        StartFromZeroInit = LOW;
        StartFromSetInit = LOW;
        digitalWrite(pinLED1, HIGH);//StartFromZero LED
        digitalWrite(pinLED2, HIGH);//StartFromSet LED
        digitalWrite(pinLED3, HIGH);//Pause LED
        digitalWrite(pinLED4, LOW);//StopAndZero LED
        enableTick = LOW;
        digitalWrite(pinDP1, LOW);  digitalWrite(pinDP2, LOW);        
        runMode = 1;
      break;     
      
  }

}
void PauseTime() {
    
    if (PauseInit == LOW) {
      
      ipMM = minute();
      ipSS = second();
      PauseInit = HIGH;
    }
    setTime(00,ipMM,ipSS,01,01,2001);
    enableTick = LOW;
    digitalWrite(pinDP1, HIGH);  digitalWrite(pinDP2, HIGH);
}

void CountFromZero() {
  if (StartFromZeroInit == LOW) {
    setTime(00,00,00,01,01,2001);
    StartFromZeroInit = HIGH;
  }
  iMM = String(minute(), DEC);
  if (iMM.length() == 1) { iMM = "0" + iMM; }
  iSS = String(second(), DEC);
  if (iSS.length() == 1) { iSS = "0" + iSS; }
  iMMSS = iMM + iSS;
  DispOut(iMMSS);
  
}

void CountFromSet() {
  int iSetMM;
  String sMM;
  if (StartFromSetInit == LOW) {
  iSetMM = BCDminut1() * 10;
  iSetMM = iSetMM + BCDminut2();
    setTime(00,iSetMM,00,01,01,2001);
    StartFromSetInit = HIGH;
  }
  iMM = String(minute(), DEC);
  if (iMM.length() == 1) { iMM = "0" + iMM; }
  iSS = String(second(), DEC);
  if (iSS.length() == 1) { iSS = "0" + iSS; }
  iMMSS = iMM + iSS;
  DispOut(iMMSS);
  
}


void showScore() {
  if (PointCountActive == HIGH) {
    String sBuildScore = "";
    int hemmaP = BCDhemmap();
    int bortaP = BCDbortap();
    sBuildScore = sBuildScore + String(hemmaP, DEC);
    sBuildScore = sBuildScore + "  ";
    sBuildScore = sBuildScore + String(bortaP, DEC);
    DispOut(sBuildScore);
    delay(3000);
  }
}
void initScoreBoard() {
  DispOut("8888");
  digitalWrite(pinDP1, HIGH);  digitalWrite(pinDP2, HIGH);
  digitalWrite(pinLED1, LOW);  digitalWrite(pinLED2, LOW); digitalWrite(pinLED3, LOW); digitalWrite(pinLED4, LOW); digitalWrite(pinLED5, LOW);  
  delay(2000);
  digitalWrite(pinDP1, LOW);  digitalWrite(pinDP2, LOW);
  digitalWrite(pinLED1, HIGH);  digitalWrite(pinLED2, HIGH); digitalWrite(pinLED3, HIGH); digitalWrite(pinLED4, LOW); digitalWrite(pinLED5, HIGH);
  runMode = 1;
  lastRunMode = 1;
  enableTick = LOW;
}

void RollLogo() {
  int  dly1 = 200;
  int  dly2 = 500;
  if (runMode == 1) {  DispOut("    ");  delay(dly1);  DispOut("   A");  delay(dly1);  DispOut("  AS");  delay(dly1);  DispOut(" ASb");  delay(dly1);  DispOut("ASby");  delay(500);  }
  if (runMode == 1) {  DispOut("Sby ");  delay(dly1);  DispOut("by  ");  delay(dly1);  DispOut("y   ");  delay(dly1);  DispOut("    ");  delay(dly2);  }
  if (runMode == 1) {  DispOut("   1");  delay(dly1);  DispOut("  1F");  delay(dly1);  DispOut(" 1F ");  delay(dly2);  }
  if (runMode == 1) {  DispOut("1F  ");  delay(dly1);  DispOut("F   ");  delay(dly1);  DispOut("    ");  delay(dly2);  }

}

void DP12tick(){
  pinDP1state = !pinDP1state;
  pinDP2state = !pinDP2state;
  if (enableTick == HIGH) { digitalWrite(pinDP1, pinDP1state); digitalWrite(pinDP2, pinDP1state);}
  if (enableTick == LOW) { digitalWrite(pinDP1, LOW); digitalWrite(pinDP2, LOW); }


}

int BCDminut1() {
  int BCDsum = 0;
  if (digitalRead(pinBCD11) == LOW) BCDsum = BCDsum + 1;
  if (digitalRead(pinBCD12) == LOW) BCDsum = BCDsum + 2;
  if (digitalRead(pinBCD14) == LOW) BCDsum = BCDsum + 4;
  if (digitalRead(pinBCD18) == LOW) BCDsum = BCDsum + 8;
  return BCDsum;
}
int BCDminut2() {
  int BCDsum = 0;
  if (digitalRead(pinBCD21) == LOW) BCDsum = BCDsum + 1;
  if (digitalRead(pinBCD22) == LOW) BCDsum = BCDsum + 2;
  if (digitalRead(pinBCD24) == LOW) BCDsum = BCDsum + 4;
  if (digitalRead(pinBCD28) == LOW) BCDsum = BCDsum + 8;
  return BCDsum;
}
int BCDhemmap() {
  int BCDsum = 0;
  if (digitalRead(pinBCD31) == LOW) BCDsum = BCDsum + 1;
  if (digitalRead(pinBCD32) == LOW) BCDsum = BCDsum + 2;
  if (digitalRead(pinBCD34) == LOW) BCDsum = BCDsum + 4;
  if (digitalRead(pinBCD38) == LOW) BCDsum = BCDsum + 8;
  return BCDsum;
}
int BCDbortap() {
  int BCDsum = 0;
  if (digitalRead(pinBCD41) == LOW) BCDsum = BCDsum + 1;
  if (digitalRead(pinBCD42) == LOW) BCDsum = BCDsum + 2;
  if (digitalRead(pinBCD44) == LOW) BCDsum = BCDsum + 4;
  if (digitalRead(pinBCD48) == LOW) BCDsum = BCDsum + 8;
  return BCDsum;
}

void intrptBTN1() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    runMode = 2; //StartFromZero    
  }
      lastDebounceTime = millis();
}
void intrptBTN2() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    runMode = 3; //StartFromSet
  }
      lastDebounceTime = millis();
}
void intrptBTN3() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    runMode = 4; //Pause
  }
      lastDebounceTime = millis();
}
void intrptBTN4() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    runMode = 5; //StopAndZero
  }
      lastDebounceTime = millis();
}
void intrptBTN5() {
  if ((millis() - lastDebounceTime) > debounceDelay) {
    PointCountActive = !PointCountActive;
    digitalWrite(pinLED5, !PointCountActive);
  }
      lastDebounceTime = millis();
}
byte CharMap(char sData) {
  byte rData = 0;
  if (sData == '0') rData = 126;
  if (sData == '1') rData = 12;
  if (sData == '2') rData = 182;
  if (sData == '3') rData = 158;
  if (sData == '4') rData = 204;
  if (sData == '5') rData = 218;
  if (sData == '6') rData = 250;
  if (sData == '7') rData = 14;
  if (sData == '8') rData = 254;
  if (sData == '9') rData = 222;
  if (sData == 'A') rData = 238;
  if (sData == 'b') rData = 248;
  if (sData == 'c') rData = 176;
  if (sData == 'E') rData = 242;
  if (sData == 'F') rData = 226;
  if (sData == 'g') rData = 222;
  if (sData == 'h') rData = 232;
  if (sData == 'L') rData = 112;
  if (sData == 'n') rData = 168;
  if (sData == 'o') rData = 184;
  if (sData == 'P') rData = 230;
  if (sData == 'r') rData = 160;
  if (sData == 'S') rData = 218;
  if (sData == 'U') rData = 124;
  if (sData == 'y') rData = 220;
  return rData;
}
void DispOut(String cData) {

byte bDig = 0;

  digitalWrite(pinRLK, LOW); //Latch
    
    for (int i=3; i >= 0; i--){
      OneChar = cData.charAt(i);
      bDig = CharMap(OneChar);
      Serial.println(bDig);
      shiftOut(pinDAT, pinSLK, MSBFIRST, bDig);
    }
    
  digitalWrite(pinRLK, HIGH); //Latch
}
Så stegen som är kvar:
* Avprovning / godkännande
* Batteritest (och lösning om det inte funkar)
* Montering i låda och tavla
* Montering på fotbollsplan
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Säg den glädje som varar.. Kom på en liten sak såhär när jag var nöjd med snart en timmes drifttid på batteri, att det är just till en timme den räknar upp innan den startar om. Detta då jag gjort det smidigt för mig med Time-funktioner.
Men klubben vill att den ska räkna upp till 90 helst.
Får väl tänka om en smula med tideräkningen då..
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Ångrar mig, det var rätt lätt. Bara att plussa på 60 på minuterna. Gör ju ändå om till String.

Kod: Markera allt

  iHH = hour();
  iMM = minute();
  iSS = second();
  if (iHH = 1) { iMM = iMM + 60; }
  if (iMM < 10) { sMM = "0" + String(iMM, DEC); }
  if (iSS < 10) { sSS = "0" + String(iSS, DEC); }
  sMMSS = sMM + sSS;
  DispOut(sMMSS);
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Matchur för fotboll

Inlägg av Icecap »

Jag trivs med att grejerna kom till det rätta ställe!
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Det glädjer mig! :)

Och jag är nöjd själv med att faktiskt verka ro detta i land till fullo.
Det är bara två saker som jag är pyttelite orolig för, det ena är batteritiden. Jag känner mig rätt säker på att batteriet faktiskt kommer räcka en match. Och skulle det inte räcka så köper jag väl ett till och kör två parallella.
Ett problem som blir deras huvudvärk är att se till att det laddas mellan matcherna.

Sen är det hur bra uret syns från läktarna, den kommer sitta mitt över plan. Och det är väl en solig sommardag som det kan bli svårt. Men det är ju mycket ljus i segmenten så det borde gå att få till nåt som funkar. Kanske ska bygga uret med en solskärm?
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Matchur för fotboll

Inlägg av Icecap »

LED'na är glasklara varför kontrasten blir rimligt bra.

Bakgrunden är dock av betydelse så skivan allt monteras på bör vara svart.
Och modulerna är ju i grå plast, jag hade målat kanterna på dom svarta också.

En skugga blir mycket stor då den ska täcka hela området, de "vanliga" LED-moduler vi använder har en skugga för varje rad varför de inte blir så stora.

Men en sak som kan öka kontrasten en hel del är ett frontplast i samma kulör som LED'na (röd), den finns med anti-reflex men kostar dock lite pengar.

Inkommande ljus (solen) ska två gångar genom frontplasten och reflekteras från en svart yta medan LED'na kan "skjuta" nästan rakt igenom.

Men testa innan du börjar med plast osv. Verkligheten är oftast annat än teori och det kan mycket väl vara att problemet i själva verket är ett icke-problem.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Bra input med svart bakgrund. Idag har dom en vit skiva, men det är ju inget som hindrar att nya uret är svart faktiskt.
Och såndär röd plast som brukar sitta framför röda led har jag funderat på, men då ska den väl helst vara matt som sagt. Köper man sån av lokala reklamfirman, eller vad är förslaget på inköpsställe?
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Matchur för fotboll

Inlägg av Icecap »

Bakgrundsfärgen ska vara mattsvart eller mycket mörkgrå, det viktigaste är matt.

Plasten kostar rikligt så jag vågar inte skriva ELFA - jag tror inte heller att de har så stora bitar.

Men den lokala reklamskylt tillverkare eller en glasmästare borde ha/kunde få.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Tänkte annars att man kunde köpa mindre ark få utfrästa segmentbitar.
Men det är plan b. Vi hoppas det blir bra ändå.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Matchur för fotboll

Inlägg av FormerMazda »

Jag får uppdatera lite ju:
Stegen som är kvar:
* Avprovning / godkännande - GODKÄNT
* Batteritest (och lösning om det inte funkar) - Ska laddas fullt först. Preliminärt ser det bra ut.
* Montering i låda och tavla - Lådan färdig! Tavlan återstår, inväntar material.
* Montering på fotbollsplan - Återstår

Japp, som det står, avprovningen gav positiva resultat. Han var nöjd med allt så när som på att i paus ville han att poängställningen visades hela tiden, och det var ju lätt fixat.

Lådan är färdig, en begagnad låda med lite hål i, men bara sakerna placerades ut över befintliga hål så var det ju inget problem. Sen är ju lite snett också rätt har jag hört, hålen är ju ändå utfrästa för hand med en dremel.
Gjorde sladdarna extra långa så jag om det behövs kan lyfta av locket och ändå ha arduinon och batteriet anslutet som ska sitta fast i botten.
Frugan var ivrig med att trycka på knapparna, dom fungerade hälsar hon.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Matchur för fotboll

Inlägg av Magnus_K »

Snyggt FormerMazda! Kul tråd att följa :tumupp:

Väntar bara på en demo-video på skön östgötsk manér? :wink:
Skriv svar