eigenbouw flipperkast

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 12
Geregistreerd: 24 Jun 2018, 19:11

eigenbouw flipperkast

Berichtdoor Don75 » 24 Jun 2018, 19:59

Hallo allemaal,

Mijn naam is Don, ik ben nieuw met Arduino en ik heb een vraag.

Thuis spelen de kinderen graag Williams pinball op de playstation, en wij knutselen graag.
Het idee om een flipperkast te bouwen was vorig jaar ontstaan en we zijn er inmiddels ook aardig mee bezig.

De kast is al een heel eind en we kunnen een bal over een veld spelen met diverse targets.

Nu zou het leuk zijn als we dan ook scores bij zouden. Dus ik ben informatie gaan zoeken op internet. Vervolgens een 6 delige dotmatrix gebouwd met max7219 ic's. Aangesloten op Arduino met parola en Md72xxmax bibliotheken en een scrollende tekst komt voorbij.

nu alleen nog punten.
mijn gedachte is;
- bal rolt/raakt een schakelaar(target)
- schakelaar geeft een analoge puls naar de arduino
- de code telt met vooraf gestelde waarde
- en deze "print" de score

Nu heb ik inmiddels iets gevonden waar ik kan tellen m.b.v schakelaars maar het wordt weergegeven op het computerscherm, niet op de matrix.

ik zit vast op het moment.

Zou iemand mij iets vooruit kunnen helpen?

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: eigenbouw flipperkast

Berichtdoor Koepel » 25 Jun 2018, 09:53

Welkom op dit forum.

Het is voor mij niet helemaal duidelijk.

Allereerst is het natuurlijk nodig dat je goed beschrijft wanneer de score en wanneer de scrollende tekst op het display komt.

Ik weet niets af van Parola en MAX7219. Het schijnt zo iets te zijn: https://www.youtube.com/watch?v=u1iELyROjW8.
De score zou bijvoorbeeld van de zijkant er in kunnen schuiven, dan even blijven staan en ge-update worden terwijl het daar staat, en dan weer verder schuiven. Volgens mij is het mogelijk om een tekst zonder effecten stil op het display te zetten en te verversen.

Kun je de hele sketch laten zien, en kun je vertellen welke libraries (met links er naar toe) je gebruikt ?

Welk Arduino board gebruik je ?
Wat is het totaal aantal schakelaars ?

Als je schrijft dat je iets hebt gevonden waarmee je kunt tellen, dat is lekker vaag :shock: Kun je een link geven naar wat je bedoelt ? Bijvoorbeeld dit: https://www.arduino.cc/en/Tutorial/StateChangeDetection. Ik ben er echter een voorstander van om meteen de Bounce2 library te gaan gebruiken. Daar zit een filter in om het denderen van de schakelaars er uit te filteren en die kan ook hetzelfde als de StateChangeDetection. De Bounce2 zit in de Bibliotheek Beheerder in de Arduino IDE.

Hoe is je kennis van programmeren ?

Berichten: 12
Geregistreerd: 24 Jun 2018, 19:11

Re: eigenbouw flipperkast

Berichtdoor Don75 » 25 Jun 2018, 11:29

Dank je voor je reactie,

Zoals ik al zei, ik ben nieuw met arduino. Mijn kennis met programmeren is nagenoeg niks.
Ik heb het boek Arduino in control aan geschaft om inzicht te krijgen in het programmeren.

Door het boek ben ik uiteraard al iets wijzer geworden. Maar ik vindt bijv. geen lijst met commando's (of hoe noem je dat) zodat ik beter begrijp hoe en waar deze toe te passen.
(Een dergelijke lijst heb ik wel gevonden op de arduino home pagina echter in het engels en beknopt en dus ook niet echt duidelijk voor mij)

De eerste oefeningen uit het boek snap ik en het lukt me om dingen aan te passen. Knipperende led's en dergelijke. Meerdere Led's andere uitgangen en het versnellen en vertragen d.m.v. een potmeter is ook niet echt een probleem.

In dit boek staat ook een code waarin je met behulp van twee schakelaars waardes kunt optellen en aftrekken. Ook dit werkt, en ik kan het veranderen naar vermenigvuldigen, delen etc. meerdere schakelaars en minder. Ook het denderen van de schakelaars is me duidelijk en in dit boek past men een delay toe. Zoals ik het begrijp, het eerste contact wordt ontvangen en voor korte tijd genegeerd als de schakelaar nog "stuitert"
(ik probeer van de week even die code hier bij te plaatsen, maar ik zit nu op een andere computer)

Ik zal zeker Bounce 2 library en die tutorial met ChangeStateDetection gaan bekijken, bedankt voor je tip!

Hier twee links naar de bibliotheken die ik gebruik om de dot-matrix te testen.

https://github.com/MajicDesigns/MD_Parola
https://github.com/MajicDesigns/MD_MAX72XX

Deze codes zijn inderdaad voor scrollende teksten, maar voor mij hoeft dat niet perse. Als mijn score maar gewoon weergegeven wordt en optelt en naar nul gaan zodra ik reset.
Echter dacht ik deze bibliotheken nodig te hebben om de Max7219 ic's juist aan te sturen.

De flipperkast heeft momenteel een twintig tal schakelaars. er komen er waarschijnlijk nog meer bij.
De schakelaars dacht ik parallel per groep aan te sluiten en dan bijvoorbeeld;
-groep 1= 10 punten
-groep 2= 50 punten.. etc
(ik had een bijlage toegevoegd met wat foto's, maar ik zie ze hier niet terug)

Op het moment werkt mijn matrix met de arduino uno, maar ik heb onlangs ook een arduino mega gekregen.

Binnenkort zal ik proberen wat meer te laten zien.

Vriendelijk gegroet,
Don75

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: eigenbouw flipperkast

Berichtdoor Koepel » 25 Jun 2018, 12:05

Een plaatje mag hoogstens 640x480 zijn. Je kunt beter gebruik maken van andere websites. Ik gebruik TinyPic.com
Dat plaatje kun je in je bericht zetten door de URL van het plaatje tussen img-tags te zetten.
Wanneer je een bericht typt, dan zie je boven het text veld een "Img" knop voor img-tags.
Er is ook een "Code" knop om je sketch tussen code-tags te zetten, dan is het beter te lezen.

Berichten: 12
Geregistreerd: 24 Jun 2018, 19:11

Re: eigenbouw flipperkast

Berichtdoor Don75 » 03 Aug 2018, 20:05

Hallo, even een update.

Inmiddels heb ik iets gevonden (op het net, dus niet geheel van mezelf,, maar ik denk eruit te kunnen leren.. moet toch ergens beginnen) waar ik mee verder kan. Echter werkt mijn eigen led matrix display nog niet maar met een 7 segment display krijg ik wel een score in zicht.

Ik begrijp nog niet waar dat nu mis gaat.. Maar ik maak voorlopig toch vooruitgang, met de volgende code..



Code: Alles selecteren

#include <LedControl.h>

#include <MD_MAX72xx.h>
#include <SPI.h>





#define MAX7219_DIN 12                         // set up voor het display
#define MAX7219_CS 10
#define MAX7219_CLK 11

#define targetCount 16                         // set up  voor het aantal targets

#define targetPin1 A0                          // target schakelaar aangesloten op A0  (S)
#define targetPin2 A1                          // target schakelaar aangesloten op A1  (N}
#define targetPin3 A2                          // target schakelaar aangesloten op A2  (O)
#define targetPin4 A3                          // target schakelaar aangesloten op A3  (W)
#define targetPin5 A4                          // target schakelaar aangesloten op A4  (POP)
#define targetPin6 A5                          // target schakelaar aangesloten op A5  (POPT1)
#define targetPin7 A6                          // target schakelaar aangesloten op A6  (POPT2)
#define targetPin8 A7                          // target schakelaar aangesloten op A7  (POPT3)
#define targetPin9 A8                          // target schakelaar aangesloten op A8  (SALOON1)
#define targetPin10 A9                         // target schakelaar aangesloten op A9  (SALOON2)
#define targetPin11 A10                        // target schakelaar aangesloten op A10 (SALOON3)
#define targetPin12 A11                        // target schakelaar aangesloten op A11 (SPOOKSLOT1+2)
#define targetPin13 A12                        // target schakelaar aangesloten op A12 (CRAZY MOUSE BAAN)
#define targetPin14 A13                        // target schakelaar aangesloten op A13 (KICKERS L&R)
#define targetPin15 A14                        // target schakelaar aangesloten op A14 (INLANE L&R)
#define targetPin16 A15                        // target schakelaar aangesloten op A15 (OUTLANE L&R)
 
#define Led1 22                                // Speelveld verlichting zodra target geraakt is (S)
#define Led2 23                                // Speelveld verlichting zodra target geraakt is (N)
#define Led3 24                                // Speelveld verlichting zodra target geraakt is (O)
#define Led4 25                                // Speelveld verlichting zodra target geraakt is (W)
#define Led5 26                                // Speelveld verlichting zodra target geraakt is (POP)
#define Led6 27                                // Speelveld verlichting zodra target geraakt is (POPT1)
#define Led7 28                                // Speelveld verlichting zodra target geraakt is (POPT2)
#define Led8 29                                // Speelveld verlichting zodra target geraakt is (POPT3)
#define Led9 30                                // Speelveld verlichting zodra target geraakt is (SALOON1)
#define Led10 31                               // Speelveld verlichting zodra target geraakt is (SALOON2)
#define Led11 32                               // Speelveld verlichting zodra target geraakt is (SALOON3)
#define Led12 33                               // Speelveld verlichting zodra target geraakt is (SPOOKSLOT1+2)
#define Led13 34                               // Speelveld verlichting zodra target geraakt is (CRAZY MOUSE BAAN)
#define Led14 35                               // Speelveld verlichting zodra target geraakt is (KICKERS L&R)
#define Led15 36                               // Speelveld verlichting zodra target geraakt is (INLANE L&R)
#define Led16 37                               // Speelveld verlichting zodra target geraakt is (OUTLANE L&R)
#define Led17 38                               // Speelveld verlichting zodra target geraakt is (J)
#define Led18 39                               // Speelveld verlichting zodra target geraakt is (E)
#define Led19 40                               // Speelveld verlichting zodra target geraakt is (T)


 struct target                                 //target structuur defineren
{                         
  byte detectPin;
  byte ledPin;
  byte hit;
  byte state;
  byte laststate;
};
 
  const int debugInterval = 10;                  // Aantal milliseconde tussen de Serial prints voor debuging
  unsigned long previuosdebug = 0;               // Voor het debuggen van het gebruik van Serial 
   
  const int debounceinterval = 10;               // Schakelaar dender elimineren voor 10 milliseconde
  unsigned long previuosdebounce = 0;
 


 struct Led                                      // led stuctuur defineren
{
  byte Led;
};

uint16_t score;                                                       //Variabele om score op te slaan

target targets[targetCount] = {{targetPin1, 0}
                              ,{targetPin2, 0}
                              ,{targetPin3, 0}
                              ,{targetPin4, 0}
                              ,{targetPin5, 0}
                              ,{targetPin6, 0}
                              ,{targetPin7, 0}
                              ,{targetPin8, 0}
                              ,{targetPin9, 0}
                              ,{targetPin10, 0}
                              ,{targetPin11, 0}
                              ,{targetPin12, 0}
                              ,{targetPin13, 0}
                              ,{targetPin14, 0}
                              ,{targetPin15, 0}
                              ,{targetPin16, 0}

                             
};

  int last_a = 0;
  int last_b = 0;
  int last_c = 0;
  int last_d = 0;
  int last_e = 0;
  int last_f = 0;
  int last_g = 0;
  int last_h = 0;
  int last_i = 0;
  int last_j = 0;
  int last_k = 0;
  int last_l = 0;
  int last_m = 0;
  int last_n = 0;
  int last_o = 0;
  int last_p = 0;

 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


// the setup function runs once when you press reset or power the board
 void setup() {
  pinMode(targetPin1, INPUT);                                           // Functie geven aan pin nummer
  pinMode(targetPin2, INPUT);
  pinMode(targetPin3, INPUT);
  pinMode(targetPin4, INPUT);
  pinMode(targetPin5, INPUT);
  pinMode(targetPin6, INPUT);
  pinMode(targetPin7, INPUT);
  pinMode(targetPin8, INPUT);
  pinMode(targetPin9, INPUT);
  pinMode(targetPin10, INPUT);
  pinMode(targetPin11, INPUT);
  pinMode(targetPin12, INPUT);
  pinMode(targetPin13, INPUT);
  pinMode(targetPin14, INPUT);
  pinMode(targetPin15, INPUT);
  pinMode(targetPin16, INPUT);

  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);
  pinMode(Led3, OUTPUT);
  pinMode(Led4, OUTPUT);
  pinMode(Led5, OUTPUT);
  pinMode(Led6, OUTPUT);
  pinMode(Led7, OUTPUT);
  pinMode(Led8, OUTPUT);
  pinMode(Led9, OUTPUT);
  pinMode(Led10, OUTPUT);
  pinMode(Led11, OUTPUT);
  pinMode(Led12, OUTPUT);
  pinMode(Led13, OUTPUT);
  pinMode(Led14, OUTPUT);
  pinMode(Led15, OUTPUT);
  pinMode(Led16, OUTPUT);
 

  Serial.begin (9600);                                                  // Baud instellen op (9600);
                                                                        // Serial.println("Ready to begin!");

                                                                       
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 
  initialiseMAX7219();
  output(0x0f, 0x00); //display test register - test mode off
  output(0x0c, 0x01); //shutdown register - normal operation
  output(0x0b, 0x07); //scan limit register - display digits 0 thru 7
  output(0x0a, 0x0f); //intensity register - max brightness
  output(0x09, 0xff); //decode mode register - CodeB decode all digits
  output(0x08, 0x0c); //digit 7 (leftmost digit) data
  output(0x07, 0x0b);
  output(0x06, 0x0d);
  output(0x05, 0x0e);
  output(0x04, 0x08);
  output(0x03, 0x07);
  output(0x02, 0x06);
  output(0x01, 0x05); //digit 0 (rightmost digit) data
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


// the loop function runs over and over again forever
void loop()
{
  detectCollision();
  CheckTargets();
  checkAllTargets();
  displayScore(score);
  unsigned long milliseconde = millis();
  Led();
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


  void debug(){                   
  if (millis() - previuosdebug >= debugInterval) {
     Serial.print("score: ");
     Serial.print(score); 
  previuosdebug += debugInterval;   }
  }

 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



//Dit laat de variabele score zien op hetb 8-digit display
void displayScore(int score)
{
  //calculeer getal
  String myString = String(score);
  int numberOfDigits = myString.length();
    //clear unused digits
    for (int i = 8; i > numberOfDigits; i--)
    {
      output(i, 0x0F);
    }
 
    //schrijf getallen naar display
    for (int i = 1; i <= numberOfDigits; i++)
    {
      output(i, myString[numberOfDigits-i]);
    }
} //einde van score display

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//controleren van target hits


  void CheckTargets() {
  if (millis() - previuosdebounce >= debounceinterval) {                   // Vertraag iets om dender te elimineren 
            for(int i = 0; i < targetCount; i++) {
            targets[i].state = digitalRead(targets[i].detectPin);          // Lees deze input pin
              if(targets[i].state != targets[i].laststate) {               // Vergelijk deze targetstatus met de vorige
               if (targets[i].state == HIGH) {                             // als de target bediend is
                }
                else {                                                     // anders, als target geraakt wordt 
                       targets[i].hit = 1;                                 // markeer de hit
                       score += 5;                                         // en tel punten op
                       Serial.print("Target hit! "); Serial.print("New score: "); Serial.print(score); Serial.print("!");Serial.println();
                     }
             targets[i].laststate = targets[i].state;                      // sla de huidige status op voor de volgende loop
                   }
           }   //einde loop
  previuosdebounce += debounceinterval;
  }   //end if debounce   
  }   //end CheckTargets function

 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void detectCollision()
{
  int a = digitalRead(targets[0].detectPin);
  int b = digitalRead(targets[1].detectPin);
  int c = digitalRead(targets[2].detectPin);
  int d = digitalRead(targets[3].detectPin);
  int e = digitalRead(targets[4].detectPin);
  int f = digitalRead(targets[5].detectPin);
  int g = digitalRead(targets[6].detectPin);
  int h = digitalRead(targets[7].detectPin);
  int i = digitalRead(targets[8].detectPin);
  int j = digitalRead(targets[9].detectPin);
  int k = digitalRead(targets[10].detectPin);
  int l = digitalRead(targets[11].detectPin);
  int m = digitalRead(targets[12].detectPin);
  int n = digitalRead(targets[13].detectPin);
  int o = digitalRead(targets[14].detectPin);
  int p = digitalRead(targets[15].detectPin);

     
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


      //Controleer of target geraakt is
       if(a != last_a){
          if (a == HIGH) {                                                     // Schakelaar bediend
        }
        else {                                                                 // Schakelaar onbediend en score opgeteld
          targets[0].hit = 10;
          Serial.print("Traff A!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (21, HIGH);                                             //Led (S) licht op   
        }
        delay(50);
        last_a = a;
        }
       
      //Controleer of target geraakt is       
       if(b != last_b){
          if (b == HIGH) {                                                      // Schakelaar bediend
        }
        else {                                                                  // Schakelaar onbediend en score opgeteld
          targets[1].hit = 10;
          Serial.print("Traff B!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (22, HIGH);                                               //Led (N) licht op
        }
        delay(50);
        last_b = b;
        }
       
      //Controleer of target geraakt is   
       if(c != last_c){
          if (c == HIGH) {                                                       // Schakelaar bediend
        }
        else {                                                                   // Schakelaar onbediend en score opgeteld
          targets[2].hit =10;
          Serial.print("Traff C!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (23, HIGH);                                               //Led (O) licht op
        }
        delay(50);
        last_c = c;
        }
         
      //Controleer of target geraakt is
       if(d != last_d){
          if (d == HIGH) {                                                       // Schakelaar bediend
        }
        else {                                                                   // Schakelaar onbediend en score opgeteld
          targets[3].hit = 1;
          Serial.print("Traff D!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 50;
          digitalWrite (24, HIGH);                                               //Led (W) licht op
        }
        delay(50);
        last_d = d;
        }

       
//=================================================================================================================================================


      //Controleer of target geraakt is
       if(e != last_e){
          if (e == HIGH) {                                                       // Schakelaar bediend
        }
        else {                                                                   // Schakelaar onbediend en score opgeteld
          targets[4].hit = 10;
          Serial.print("Traff E!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (25, HIGH);                                               // Led (Popbumpers) licht op
          delay(2500);                                                           // na 2,5 seconde...
          digitalWrite (25, LOW);                                                // Led (Popbumpers) dooft       
        }
        delay(50);
        last_e = e;
        }
       
      //Controleer of target geraakt is       
       if(f != last_f){
          if (f == HIGH) {                                                       // Schakelaar bediend
        }
        else {                                                                   // Schakelaar onbediend en score opgeteld
          targets[5].hit = 10;
          Serial.print("Traff F!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (26, HIGH);                                               // Led (POPT1) licht op   
         
        }
        delay(50);
        last_f =f;
        }
       
      //Controleer of target geraakt is   
       if(g != last_g){
          if (g == HIGH) {                                                       // Schakelaar bediend
        }
        else {                                                                   // Schakelaar onbediend en score opgeteld
          targets[6].hit =10;
          Serial.print("Traff G!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (27, HIGH);                                                // Led (POPT2) licht op                                             
        }
        delay(50);
        last_g = g;
        } 
       
      //Controleer of target geraakt is
       if(h != last_h){
          if (h == HIGH) {                                                         // Schakelaar bediend
        }
        else {                                                                     // Schakelaar onbediend en score opgeteld
          targets[7].hit = 1;
          Serial.print("Traff H!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 50;
          digitalWrite (28, HIGH);                                                 // Led (POPT3) licht op
        }
        delay(50);
        last_h = h;
 
        }

       
//=============================================================================================================================================


      //Controleer of target geraakt is
       if(i != last_i){
          if (i == HIGH) {                                                          // Schakelaar bediend
        }
        else {                                                                      // Schakelaar onbediend en score opgeteld
          targets[8].hit = 10;
          Serial.print("Traff I!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (29, HIGH);                                                  // Led (Saloon1) licht op
        }
        delay(50);
        last_i = i;
        }
       
      //Controleer of target geraakt is       
       if(j != last_j){
          if (j == HIGH) {                                                           // Schakelaar bediend
        }
        else {                                                                       // Schakelaar onbediend en score opgeteld
          targets[9].hit = 10;
          Serial.print("Traff J!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (30, HIGH);                                                   // Led (Saloon2) licht op
        }
        delay(50);
        last_j = j;
        }
       
      //Controleer of target geraakt is   
       if(k != last_k){
          if (k == HIGH) {                                                            // Schakelaar bediend
        }
        else {                                                                        // Schakelaar onbediend en score opgeteld
          targets[10].hit =10;
          Serial.print("Traff K!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (31, HIGH);                                                    // Led (Saloon3) licht op                                                 
        }
       
        delay(50);
        last_k = k;
        }

       
//============================================================================================================================================= 

     
      //Controleer of target geraakt is
       if(l != last_l){
          if (l == HIGH) {                                                             // Schakelaar bediend
        }
        else {                                                                         // Schakelaar onbediend en score opgeteld
          targets[11].hit = 1;
          Serial.print("Traff L!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 50;
          digitalWrite (32, HIGH);                                                     // Led (Spookslot 1&2) licht op                                                 
          delay(2500);                                                                 // na 2,5 seconde..
          digitalWrite (32, LOW);                                                      // Led (Spookslot 1&2) dooft
        }
        delay(50);
        last_l = l;
        }

       
//===============================================================================================================================================


      //Controleer of target geraakt is
       if(m != last_m){
          if (m == HIGH) {                                                              // Schakelaar bediend
        }
        else {                                                                          // Schakelaar onbediend en score opgeteld
          targets[12].hit = 10;
          Serial.print("Traff M!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (33, HIGH);                                                      // Led (Crazy Mouse) licht op
          delay(2500);                                                                  // na 2,5 seconde..
          digitalWrite (33, LOW);                                                       // Led (Crazy Mouse) dooft   
        }
        delay(50);
        last_m = m;
        }

       
//===============================================================================================================================================

       
      //Controleer of target geraakt is       
       if(n != last_n){
          if (n == HIGH) {                                                              // Schakelaar bediend
        }
        else {                                                                          // Schakelaar onbediend en score opgeteld
          targets[13].hit = 10;
          Serial.print("Traff N!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 10;
          digitalWrite (34, HIGH);                                                      // Led (Kickers L&R) lichten op
          delay(500);                                                                   // na 0,5 seconde..
          digitalWrite (33, LOW);                                                       // Led (Kickers L&R) doven
        }
        delay(50);
        last_n = n;
        }

       
 //==============================================================================================================================================

 
      //Controleer of target geraakt is
       if(o != last_o){
          if (o == HIGH) {                                                              // Schakelaar bediend
        }
        else {                                                                          // Schakelaar onbediend en score opgeteld
          targets[14].hit = 1;
          Serial.print("Traff O!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 50;
          digitalWrite (36, HIGH);                                                      // Led (Inlane L&R) lichten op
          delay(500);                                                                   // na 0,5 seconde..
          digitalWrite (33, LOW);                                                       // Led (Inlane L&R)) doven
        }
        delay(50);
        last_o = o;
        }

       
//===============================================================================================================================================


      //Controleer of target geraakt is
       if(p != last_p){
          if (p == HIGH) {                                                              // Schakelaar bediend
        }
        else {                                                                          // Schakelaar onbediend en score opgeteld
          targets[15].hit = 1;
          Serial.print("Traff P!"); Serial.print("New score: ");
          Serial.print(score); Serial.print("!");Serial.println();
          score += 50;
          digitalWrite (36, HIGH);                                                      // Led (Outlane L&R) lichten op
          delay(500);                                                                   // na 0,5 seconde..
          digitalWrite (33, LOW);                                                       // Led (Outlane L&R)) doven
        }
        delay(50);
        last_p = p;
        }
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void redrawTargets()
{
  for(int i = 0; i < targetCount; i++)
    digitalWrite(targets[i].ledPin, 1-targets[i].hit);
   
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



void checkAllTargets()
{
   for(int i = A0; i < A3; i++)                                               // controleren of alle targets geraakt zijn ("S'N'O'W" )
    if(targets[i].hit == 0)
     return;
     score += 1000;                                                            // Bonus optellen +1000
       Serial.print("..and 1000 Bonus! New score: ");
    Serial.println(score);
   
    digitalWrite(38,HIGH);                                                    // Led (J) licht op
    delay(1500);
    digitalWrite(39,HIGH);                                                    // Led (E) licht op
    delay(1500);
    digitalWrite(40,HIGH);                                                    // Led (T) licht op
    delay(3000);
    digitalWrite(21,LOW);                                                     // Leds (SNOW) doven
    digitalWrite(22,LOW);
    digitalWrite(23,LOW);
    digitalWrite(24,LOW);
    delay(10000);
    digitalWrite(38,LOW);                                                    // Led (J) dooft
    delay(500);
    digitalWrite(39,LOW);                                                    // Led (E) dooft
    delay(500);
    digitalWrite(40,LOW);                                                    // Led (T) dooft
   
  for(int i = A0; i < A3; i++)                                               // Reset Snow voor de volgende serie
    targets[i].hit = 0;
   

//===========================================================================================================================================

   
   for(int i = A4; i < A7; i++)                                              // controleren of alle targets geraakt zijn (POPT1,2,3 )
    if(targets[i].hit == 0)
     return;
     score += 200;                                                           // Bonus optellen +200
       Serial.print("..and 200 Bonus! New score: ");
    Serial.println(score);
   
    digitalWrite(25,HIGH);                                                   // Led (POP) licht op
    delay(5000);
    digitalWrite(25,LOW);                                                    // Led (POP) Dooft

   
  for(int i = A4; i < A7; i++)                                               // Reset POP voor de volgende serie
    targets[i].hit = 0;

//=============================================================================================================================================


       for(int i = A8; i < A10; i++)                                         // controleren of alle targets geraakt zijn (Saloon1,2,3 )
    if(targets[i].hit == 0)
     return;
     score += 500;                                                           // Bonus optellen +500
       Serial.print("..and 500 Bonus! New score: ");
    Serial.println(score);
   
   
  for(int i = A8; i < A10; i++)                                               // Reset Saloon voor de volgende serie
    targets[i].hit = 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void initialiseMAX7219()   //  MAX7219 7-Segment LED Display
{
  digitalWrite(MAX7219_CS, HIGH);
  pinMode(MAX7219_DIN, OUTPUT);
  pinMode(MAX7219_CS, OUTPUT);
  pinMode(MAX7219_CLK, OUTPUT);
}


//normale routine om met Max7219 te communiceren
void output(byte address, byte data)
{
  digitalWrite(MAX7219_CS, LOW);
  shiftOut(MAX7219_DIN, MAX7219_CLK, MSBFIRST, address);
  shiftOut(MAX7219_DIN, MAX7219_CLK, MSBFIRST, data);
  digitalWrite(MAX7219_CS, HIGH);
}

Berichten: 12
Geregistreerd: 24 Jun 2018, 19:11

Re: eigenbouw flipperkast

Berichtdoor Don75 » 03 Aug 2018, 20:09

Hmm.. weer niet gelukt met foto's.. ook wat tekst weggevallen zie ik..

Maar ik heb nu een score zichtbaar met een 7segment display.. mijn eigengemaakte dot matrix display doet wel iets,
maar niet leesbaar

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Google Adsense [Bot] en 7 gasten