Go Down

Topic: Help with a random number generating 7 seg display problem! (Read 798 times) previous topic - next topic

green_dog252

This is probably a very simple fix, and I'll just put the code up:
Code: [Select]
int potnum;
int duration;
long randNum;
void setup() {
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
 
  pinMode(A0, INPUT);
 
  Serial.begin(9600);
  randomSeed(analogRead(A1));
}

void loop() {
  randNum = random(10);
  seg(randNum);
}

void seg(long num){
  if (num = 0){
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  Serial.println(num);
  delay(pot());
  }
  if (num = 1){
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  Serial.println(num);
  delay(pot());
  }
  if (num = 2){
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  Serial.println(num);
  delay(pot());
  }
  if (num = 3){
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  Serial.println(num);
  delay(pot());
  }
  if (num = 4){
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  Serial.println(num);
  delay(pot());
  }
  if (num = 5){
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  Serial.println(num);
  delay(pot());
  }
  if (num = 6){
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  Serial.println(num);
  delay(pot());
  }
  if (num = 7){
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  Serial.println(num);
  delay(pot());
  }
  if (num = 8){
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  Serial.println(num);
  delay(pot());
  }
  if (num = 9){
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  Serial.println(num);
  delay(pot());
  }
}

int pot(){
  potnum = map(analogRead(A0), 0, 1024, 0, 500);
  return potnum;
}

 


If you go ahead and run this code for yourself, you'll see that it outputs 1, 2, 3...9 and then starts over. I want this to output random numbers on a seven segment display (I'm using an SN7446AN to achieve this).

The whole side of the program that outputs number on a display and the part that determines how quickly these numbers are displayed works fine, but the numbers aren't random! They just go on from 1-9 (it skips 0 for some reason).

So my questions are: Why does the code skip 0 and why aren't the numbers outputted random? I'm fairly new to making subroutines in Arduino, so I'm sure that's where my problem is.

please help! Thank you!

LarryD

The way you have it in your schematic isn't the same as how you have it wired up!

Coding Badly


Coding Badly

Code: [Select]
  randomSeed(analogRead(A1));

In the worst case is pointless.  In the extremely rare best case produces 1024 unique sequences.

Coding Badly


Go Up