Go Down

Topic: counter with 7 segment LED serial display (Read 908 times) previous topic - next topic

gizahuna

I trying to write a program to count every time a button is pushed.  Through the serial monitor, code registers the button push, but the LED display doesn't even light up.  Honestly, I don't know how to test it.  The display has 5 pins off the side.  5V for power and GND for ground together and DIN, LOAD/CS, AND CLK grouped together.  I am only connecting the DIN pin.  Do the other have to be connected as well and if so where?

Code: [Select]
#include <SoftwareSerial.h>  //for software serial communication



#define txPin 1  //change to your serial port on Arduino board
#define rxPin 0  //not used but is required

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
int buttonPressCount;


const int  buttonPin = 9;    //the pin that the pushbutton is attached to




int buttonPushCounter = 0;   //counter for the number of button presses
int buttonState = 0;         //current state of the button
int lastButtonState = 0;     //previous state of the button


void setup()  {
  pinMode(buttonPin, INPUT);  //initialize the button pin as a input
  Serial.begin(9600);  //initialize serial communication

  pinMode(txPin, OUTPUT);
  //the following resets the board, changes the brightness to 100%, and sets the board to '0000':
  mySerial.begin(9600);
  mySerial.write((byte)0x7A); //special character
  mySerial.write((byte)0x00); //set brightness to full
  mySerial.write((byte)0x76); //reset board
  mySerial.print(0); //send '0' character
  mySerial.print(0); //send '0' character
  mySerial.print(0); //send '0' character
  mySerial.print(0); //send '0' character
}

void loop(){

  buttonState = digitalRead(buttonPin);  //read the pushbutton input pin

    // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // went from off to on:
      buttonPushCounter++;

      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter, DEC);
      updateDisplay(buttonPushCounter);  //function to update the display 'requires button press count'


    }

  }

  lastButtonState = buttonState;  // save the current state as the last state, for next time through the loop



}




void updateDisplay(int buttonPushCounter){
  String intString = String(buttonPushCounter);  //changes integer to a string
  char displayChars[4];  //create array to hold the four numbers
  int stringLength = intString.length();  //get length of the string
  //the following will determine if the button press count variable has 1, 2, 3, or 4 numbers in it
  //and will fill the empty spaces with '0'. so if the button press count variable is '29' it will end up being '0029':
  if(stringLength == 4){
    displayChars[0] = intString.charAt(0);
    displayChars[1] = intString.charAt(1);
    displayChars[2] = intString.charAt(2);
    displayChars[3] = intString.charAt(3);
  }
  else if(stringLength == 3){
    displayChars[0] = 0;
    displayChars[1] = intString.charAt(0);
    displayChars[2] = intString.charAt(1);
    displayChars[3] = intString.charAt(2);
  }
  else if(stringLength == 2){
    displayChars[0] = 0;
    displayChars[1] = 0;
    displayChars[2] = intString.charAt(0);
    displayChars[3] = intString.charAt(1);
  }
  else if(stringLength == 1){
    displayChars[0] = 0;
    displayChars[1] = 0;
    displayChars[2] = 0;
    displayChars[3] = intString.charAt(0);
  }
  mySerial.write((byte)0x76); //Reset board
  mySerial.write((byte)0x76); //Reset board
  mySerial.print(displayChars[0]); //Send '0' character
  mySerial.print(displayChars[1]); //Send '0' character
  mySerial.print(displayChars[2]); //Send '0' character
  mySerial.print(displayChars[3]); //Send '0' character

  delay(100); //this will make it so you don't get double counts. you could also use this to avoid someone pressing the button repeatedly 'for fun!'

}




marco_c

Yes. You need to connect the power pins at least - how do you expect it to work otherwise.

The other pins depend on the device. If you look on the IC you will see a number (like 74HC595 or something) that will tell you the device type. If you then google that with arduino you will probably find example code.

Arduino Libraries http://arduinocode.codeplex.com
Parola for Arduino http://parola.codeplex.com

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy