Hey!
I have set up a 4-digit display on a simple testing loop with an Arduino Uno, and it randomly goes crazy and goes through the loop super fast.
Here is my code:
I made the code as simple as possible to try and be able to see every step of it and see where things might go wrong. The thing is, the break seems to be at a random time.
I have gone through the wiring and it seems OK. I added resistors so that the brightness would go down as much as possible, but even before that this loop would begin. Can you see a problem with the code that I just missed?
Thanks!
I have set up a 4-digit display on a simple testing loop with an Arduino Uno, and it randomly goes crazy and goes through the loop super fast.
Here is my code:
Code:
byte pinA = 2; //11
byte pinB = 3; //7
byte pinC = 4; //4
byte pinD = 5; //2
byte pinE = 6; //1
byte pinF = 7; //10
byte pinG = 8; //5
byte pinDP = 9; //3
byte D1 = 10; //12
byte D2 = 11; //9
byte D3 = 12; //8
byte D4 = 13; //6
byte pinsLetters = 8;
int wait = 250;
byte digit = 10;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pinA,OUTPUT);
pinMode(pinB,OUTPUT);
pinMode(pinC,OUTPUT);
pinMode(pinD,OUTPUT);
pinMode(pinE,OUTPUT);
pinMode(pinF,OUTPUT);
pinMode(pinG,OUTPUT);
pinMode(pinDP,OUTPUT); //DOT
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
delay(wait);
if (digit > D4)
{
digit = D1;
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
digitalWrite(D3,HIGH);
digitalWrite(D4,HIGH);
delay(wait);
}
if (digit == D1)
{
digit ++;
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
digitalWrite(D3,HIGH);
digitalWrite(D4,HIGH);
delay(wait);
}
else if (digit == D2)
{
digit ++;
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
digitalWrite(D3,HIGH);
digitalWrite(D4,HIGH);
delay(wait);
}
else if (digit == D3)
{
digit ++;
digitalWrite(D1,HIGH);
digitalWrite(D2,HIGH);
digitalWrite(D3,LOW);
digitalWrite(D4,HIGH);
delay(wait);
}
else if (digit == D4)
{
digit ++;
digitalWrite(D1,HIGH);
digitalWrite(D2,HIGH);
digitalWrite(D3,HIGH);
digitalWrite(D4,LOW);
delay(wait);
}
else
{
digitalWrite(D1,LOW);
digitalWrite(D2,LOW);
digitalWrite(D3,LOW);
digitalWrite(D4,LOW);
delay(wait);
}
digitalWrite(pinA, HIGH);
delay(wait);
digitalWrite(pinA,LOW);
delay(wait);
digitalWrite(pinB, HIGH);
delay(wait);
digitalWrite(pinB,LOW);
delay(wait);
digitalWrite(pinC, HIGH);
delay(wait);
digitalWrite(pinC,LOW);
delay(wait);
digitalWrite(pinD, HIGH);
delay(wait);
digitalWrite(pinD,LOW);
delay(wait);
digitalWrite(pinE, HIGH);
delay(wait);
digitalWrite(pinE,LOW);
delay(wait);
digitalWrite(pinF, HIGH);
delay(wait);
digitalWrite(pinF,LOW);
delay(wait);
digitalWrite(pinG, HIGH);
delay(wait);
digitalWrite(pinG,LOW);
delay(wait);
digitalWrite(pinDP, HIGH);
delay(wait);
digitalWrite(pinDP,LOW);
delay(wait);
Serial.println(digit);
delay(1000);
}
I have gone through the wiring and it seems OK. I added resistors so that the brightness would go down as much as possible, but even before that this loop would begin. Can you see a problem with the code that I just missed?
Thanks!