Re: Button Code

were you able to make it work? after uploading your code it just counts till 9, and it dosen't shiftout to next digit rather both digits show same numbers

Moderator edit: split from Button Code - Project Guidance - Arduino Forum

ok, let’s get back to basics...
we have your code, now post a complete wiring diagram (schematic) of how all your parts are connected together.

Not fritzing, a real pen on paper, or cad drawing that shows all the connections and parts.

It’s already been said this is a hardware problem, so we need to see how you’ve plonked the bits together. You can keep burning boards as long as you want, but to help, we need to see what’s happening.

This thread started about a year ago. I suspect th OP has moved on by now and the thread has been high jacked.

oops - thanks!

lastchancename:
ok, let’s get back to basics...
we have your code, now post a complete wiring diagram (schematic) of how all your parts are connected together.

Not fritzing, a real pen on paper, or cad drawing that shows all the connections and parts.

It’s already been said this is a hardware problem, so we need to see how you’ve plonked the bits together. You can keep burning boards as long as you want, but to help, we need to see what’s happening.

I have attached schematics and code, thanks!

//GPIO declarations
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
byte segmentClock = 3;
byte segmentLatch = 4;
byte segmentData = 2;
int  upButton =    8;
int  downButton =  9;
int  score =       0;
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

void setup()
{
  Serial.begin(9600);
  Serial.println("Large Digit Driver Example");

  pinMode(segmentClock, OUTPUT);
  pinMode(segmentData, OUTPUT);
  pinMode(segmentLatch, OUTPUT);
  pinMode(upButton, INPUT_PULLUP);
  pinMode(downButton, INPUT_PULLUP);

  digitalWrite(segmentClock, LOW);
  digitalWrite(segmentData, LOW);
  digitalWrite(segmentLatch, LOW);
  
  }

  int number = 0;

void loop()
{
postNumber(score,false); //show decimal
  digitalWrite(segmentLatch, LOW);
  digitalWrite(segmentLatch, HIGH);
  if (! digitalRead(upButton)) {
    score++;
    score %=10;
    
  Serial.println(score); //For debugging
   
   delay (300);
  
  }
 if (! digitalRead(downButton)) {
    score--;
    if(score < 0) score +9;

  Serial.println(score); //For debugging

     delay (300);
   
}
}
//Takes a number and displays 2 numbers. Displays absolute value (no negatives)
void showNumber(float value)
{
  int number = abs(value); //Remove negative signs and any decimals

  //Serial.print("number: ");
  //Serial.println(number);

  for (byte x = 0 ; x < 2 ; x++)
  {
    int remainder = number % 10;

    postNumber(remainder, false);

    number /= 10;
  }

  //Latch the current segment data
  digitalWrite(segmentLatch, LOW);
  digitalWrite(segmentLatch, HIGH); //Register moves storage register on the rising edge of RCK
}

//Given a number, or '-', shifts it out to the display
void postNumber(byte number, boolean decimal)
{
  //    -  A
  //   / / F/B
  //    -  G
  //   / / E/C
  //    -. D/DP

#define a  1<<0
#define b  1<<6
#define c  1<<5
#define d  1<<4
#define e  1<<3
#define f  1<<1
#define g  1<<2
#define dp 1<<7

  byte segments;

  switch (number)
  {
    case 1: segments = b | c; break;
    case 2: segments = a | b | d | e | g; break;
    case 3: segments = a | b | c | d | g; break;
    case 4: segments = f | g | b | c; break;
    case 5: segments = a | f | g | c | d; break;
    case 6: segments = a | f | g | e | c | d; break;
    case 7: segments = a | b | c; break;
    case 8: segments = a | b | c | d | e | f | g; break;
    case 9: segments = a | b | c | d | f | g; break;
    case 0: segments = a | b | c | d | e | f; break;
    case ' ': segments = 0; break;
    case 'c': segments = g | e | d; break;
    case '-': segments = g; break;
  }

  if (decimal) segments |= dp;

  //Clock these bits out to the drivers
  for (byte x = 0 ; x < 8 ; x++)
  {
    digitalWrite(segmentClock, LOW);
    digitalWrite(segmentData, segments & 1 << (7 - x));
    digitalWrite(segmentClock, HIGH); //Data transfers to the register on the rising edge of SRCK
  }
}

COUNTER_UP_DOWN.ino (3.66 KB)

Hi,
Welcome to the forum.

You will be better to start a new thread.

Tom... :slight_smile:

@donknowz, do not hijack. Thread split.