Thursday, November 14, 2024

Week 4 Extension - Try a 7-Segment Display

Since I found a seven-segment display in the kit I checked out from the library, I figured I would give it a shot!  Step one of course was to get everything on Tinkercard, and once I just copied over from what I found on a few online resources, everything worked perfectly!

Ah, what a lovely day -- I'm going to get things done early....

Nope.

Wired everything the same as Tinkercad.  Pressed button.  Nothing.

Rewrote code so not dependent on the button.  Nothing.

Checked security of all the wires.  Nothing.

Pulled out all the wires and put them back together.  Still nothing.

Time for bed, defeated and ashamed.

The next day, clearly I must've just done it wrong.

Pulled out all the wires and put them back together.  Still nothing.  This is getting old.

I started looking online for all the ways to test the display itself -- clearly the part must be broken.  Unfortunately all the troubleshooting tips required using a multimeter, which I don't have.  But while looking at everything, I realized there are two types of 7-segment displays: Anode and Cathode.  I moved the one resistor wire from the + to the - side and .... magic!  Didn't get anything that looked like numbers on the display, but it at least started lighting up.

I did some more looking around online, and went back to Tinkercad.  This video I actually talk through it, so if you normally have sound off, having the sound on might help.


And here we get the circuit diagram!


All kinds of fun, but it's working now!


And here's the code!  Right now it's just doing the numbers 1 through six, but it could be edited to also do 0 and 7 - 9.

unsigned const int A = 13;
unsigned const int B = 12;
unsigned const int C = 11;
unsigned const int D = 10;
unsigned const int E = 9;
unsigned const int F = 8;
unsigned const int G = 7;
unsigned const int H = 6;
int randomNumber;
int buttonPin = 2;
int buttonState = 0;

void setup(){

  int index;
 
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(H, OUTPUT);

  pinMode(buttonPin, INPUT);
 
  Serial.begin(9600);
  randomSeed(analogRead(0));
 
  delay(100);
 
} // end setup


void loop(){
 
  int index;
 
  buttonState = digitalRead(buttonPin);
 
  if (buttonState == HIGH) {
     delay(100);
   
     randomNumber = random(1,7); // Generate a random # from 1 to 6
     Serial.println(randomNumber);
  }
  delay(500);
  //randomNumber = random(1,7);
   Serial.println(randomNumber);
 
  switch(randomNumber) {
    case 1:
      one();
      break;
    case 2:
      two();  
      break;
    case 3:
      three();
      break;
    case 4:
      four();
      break;
    case 5:
      five();
      break;
    case 6:
      six();
      break;
    default:
      Serial.println("Nothing happening");
      break;
  } // end switch
 
} // end main loop

void zero(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void one(void) {
   Serial.println("11111");
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void two(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, HIGH);
  digitalWrite(H, HIGH);
}

void three(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, HIGH);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void four(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void five(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void six(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, HIGH);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void seven(void) {
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void eight(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}

void nine(void) {
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
  digitalWrite(D, LOW);
  digitalWrite(E, HIGH);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(H, HIGH);
}



No comments:

Post a Comment

Nooooo, don't make me reflect on my learning!

 ... I just want to stick wires in breadboards and make froggies dance!!! Okay, but seriously, that stupid dancing frog was clearly my most ...