Double digit led met MAX7219
3 berichten
• Pagina 1 van 1
Double digit led met MAX7219
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();
}
}
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
Re: Double digit led met MAX7219
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
shooter@home.nl
Re: Double digit led met MAX7219
Bedankt voor het advies, heb het ondertussen opgelost door per drukknop te werken met een interrupt op de rising edge.
3 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten