Pages: [1]   Go Down
Author Topic: counter with 7 segment LED serial display  (Read 702 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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!'

}



Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 27
Posts: 1184
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Pages: [1]   Go Up
Jump to: