Double digit led met MAX7219

algemene C code
Berichten: 2
Geregistreerd: 07 Dec 2020, 15:50

Double digit led met MAX7219

Berichtdoor aarondw » 07 Dec 2020, 15:59

Hallo iedereen,

Ik ben bezig met het maken van scorebord aangestuurd door een max 7219. Het scorebord zijn 2 eenvoudige double digit 7 segment displays die elk aangestuurd worden door een aparte knop. Wanneer ik enkel de code schrijf voor drukknop 1, werkt het scorebord perfect en telt het per druk op de knop 1 bij op het display. Maar wanneer ik dezelfde code toevoeg voor het aansturen van de 2de display met drukknop2 gebeurt er iets vreemd. Ik kan nu enkele om beurt het display verhogen. Dus eerst een druk op knop 1 en dan een druk op knop 2. Ik kan dus display 1 niet verhogen van 1 naar 5 bijvoorbeeld zonder na elke druk ook display 2 te verhogen. Ik hoop dat iemand mij hierbij kan helpen zodat ik mijn project kan afronden. De code staat hieronder weergegeven.

Alvast bedankt!


#include "LedControl.h" //bibliotheek voor aansturing 2 digit 7 segment LED display via de max7219


LedControl lc = LedControl(12,11,10,1); //duidt aangesloten pinnen aan van de max7219 (din, clock,load, aantal max7219 IC's)


int knop1 = 2;
int knop2 = 3;


int display1 = 0;
int display2 = 0;


int linkerdigit;
int rechterdigit;


int statusknop1;
int statusknop2;


void setup() {



lc.shutdown(0,false); // Wake up MAX7219


lc.setIntensity(0,7); // Set brightness to medium


lc.clearDisplay(0);

pinMode (knop1, INPUT_PULLUP); //stelt knop 1 als input
pinMode (knop2, INPUT_PULLUP); //stelt knop 2 als input


lc.setDigit(0,0,0,false);
lc.setDigit(0,1,0,false);

lc.setDigit(0,2,0,false);
lc.setDigit(0,3,0,false);
}


void scorethuis () {

display1++;


rechterdigit = display1%10;
linkerdigit = display1%100/10;


lc.setDigit(0,0,linkerdigit,false);
lc.setDigit(0,1,rechterdigit,false);


while (!digitalRead(knop1)) {
}
delay(5);
}


void scoreuit (){

display2++;


rechterdigit = display2%10;
linkerdigit = display2%100/10;


lc.setDigit(0,2,linkerdigit,false);
lc.setDigit(0,3,rechterdigit,false);


while (!digitalRead(knop2)) {
}
delay(5);
}


void loop() {


if (!digitalRead(knop1)){
scorethuis();
}


if (!digitalRead(knop2)){
scoreuit();
}
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Double digit led met MAX7219

Berichtdoor shooter » 07 Dec 2020, 17:45

while !input doe een delay maar daar blijft hij dan ook in, dus even iets verzinnen om er uit te komen. en er staat een haakje teveel in.
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 07 Dec 2020, 15:50

Re: Double digit led met MAX7219

Berichtdoor aarondw » 08 Dec 2020, 12:49

Bedankt voor het advies, heb het ondertussen opgelost door per drukknop te werken met een interrupt op de rising edge.

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten