Help with two 7-segment displays & pot code

:slight_smile: Yes, I am getting the zero that I wanted now. I see your point though, essentially its still the same no? and I thought for a moment there, I knew what I was doing!!!!! :slight_smile: However, I was getting the zero before but only when the sketch uploaded and when the pot was at one extreme. As soon as I swept the pot up and down, "1" was the minimum that I could get! So the small change I made appeared to have solved this. After that, I took out other parts of the code that didn't appear to be needed and ended up with this...

//**************************************************************//
//  Name    : shiftOutCode, Predefined Array Style		  //
//  Author  : Carlyn Maw, Tom Igoe				   //
//  Date    : 25 Oct, 2006						  //
//  Version : 1.0							     //
//  Notes   : Code for using a 74HC595 Shift Register	     //
//	    : to count from 0 to 255				    //
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
int j;
//holders for infromation you're going to pass to shifting function
byte data;
byte dataArray[10];


void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  Serial.begin(9600);

 
  dataArray[0] = 0x3F; // 0
  dataArray[1] = 0x06; // 1
  dataArray[2] = 0x5B; // 2
  dataArray[3] = 0x4F; // 3
  dataArray[4] = 0x66; // 4
  dataArray[5] = 0x6D; // 5
  dataArray[6] = 0x7C; // 6
  dataArray[7] = 0x07; // 7
  dataArray[8] = 0x7F; // 8
  dataArray[9] = 0x67; // 9


}

void loop(){

    if (j= map(analogRead (0), 0, 1023, 0, 10));
    {
	data = dataArray[j];
	//ground latchPin and hold low for as long as you are transmitting
	digitalWrite(latchPin, 0);
	//move 'em out
	shiftOut(dataPin, clockPin, data);
	//return the latch pin high to signal chip that it
	//no longer needs to listen for information
	digitalWrite(latchPin, 1);

  }
 }

// the heart of the program
void shiftOut(int myDataPin, int myClockPin, byte myDataOut)
{
  // This shifts 8 bits out MSB first,
  //on the rising edge of the clock,
  //clock idles low

  //internal function setup
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

  //clear everything out just in case to
  //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut?
  //NOTICE THAT WE ARE COUNTING DOWN in our for loop
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights.
  for (j=7; j>=0; j--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<j) ) {
	pinState= 1;
    }
    else {
	pinState= 0;
    }

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);
  }

  //stop shifting
  digitalWrite(myClockPin, 0);

}