duaron

Arduino Project 001v2 7 segment display 4 digits

Nov 21st, 2014
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.56 KB | None | 0 0
  1. //arduino 4 digit 7 segment project
  2. #define DIGIT_ON  HIGH
  3. #define DIGIT_OFF  LOW
  4.  
  5. int time = 10;
  6.  
  7. int x=100;
  8.  
  9. int a = 1;
  10. int b = 2;
  11. int c = 3;
  12. int d = 4;
  13. int e = 5;
  14. int f = 6;
  15. int g = 7;
  16. //segments
  17. char seg[]= {a,b,c,d,e,f,g};
  18. //numbers and others
  19. int num[10][7] = {{1,1,1,1,1,1,0}, //0
  20.          {0,0,1,1,0,0,0}, //1
  21.          {1,1,0,1,1,0,1}, //2
  22.          {0,1,1,1,1,0,1}, //3
  23.          {0,0,1,1,0,1,1}, //4
  24.          {0,1,1,0,1,1,1}, //5
  25.          {1,1,1,0,1,1,1}, //6
  26.          {0,0,1,1,1,0,0}, //7
  27.          {1,1,1,1,1,1,1}, //8
  28.          {0,0,1,1,1,1,1}};//9
  29.  
  30. int hifen[] =   {0,0,0,0,0,0,1}; //-
  31. int o[] =       {1,1,1,0,0,0,1}; //o
  32.  
  33. long t,t2; //time of numbers
  34.  
  35. void setup(){
  36.  pinMode(13, OUTPUT);// 4 digit
  37.  pinMode(12, OUTPUT);// 3 digit
  38.  pinMode(11, OUTPUT);// 2 digit
  39.  pinMode(10, OUTPUT);// 1 digit
  40.  
  41.  pinMode(g, OUTPUT);
  42.  pinMode(f, OUTPUT);
  43.  pinMode(e, OUTPUT);
  44.  pinMode(d, OUTPUT);
  45.  pinMode(c, OUTPUT);
  46.  pinMode(b, OUTPUT);
  47.  pinMode(a, OUTPUT);
  48. }
  49.  
  50. void loop(){
  51.   //counter
  52.   for(int i=0; i<10; i++){
  53.     for(int j=0; j<10; j++){
  54.       for(int k=0; k<10; k++){
  55.         for(int l=0; l<10; l++){
  56.           t=millis();          
  57.           while(t2<(t+1000)){ //1s, podem colocar o contador a correr à velocidade que quiserem
  58.             printNumber(i,3);
  59.             delayMicroseconds(time);
  60.             printNumber(j,2);
  61.             delayMicroseconds(time);
  62.             printNumber(k,1);
  63.             delayMicroseconds(time);
  64.             printNumber(l,0);
  65.             delayMicroseconds(time);
  66.             t2=millis();
  67.           }
  68.         }
  69.       }
  70.     }  
  71.   }
  72.  
  73.   //loop
  74.   /*
  75.   for(int i =0 ; i<8 ; i++){
  76.      lightNumber(o);
  77.      digitalWrite((10),LOW);
  78.      delay(200);
  79.      lightNumber(hifen);
  80.      digitalWrite((11),LOW);
  81.      delay(200);
  82.      lightNumber(hifen);
  83.      digitalWrite((12),LOW);
  84.      delay(200);
  85.      lightNumber(o);
  86.      digitalWrite((13),LOW);
  87.      delay(200);
  88.      lightNumber(hifen);
  89.      digitalWrite((12),LOW);
  90.      delay(200);
  91.      lightNumber(hifen);
  92.      digitalWrite((11),LOW);
  93.      delay(200);
  94.  
  95.   } */
  96. }
  97.  
  98. void lightNumber(int c[]){
  99.   clearLeds();
  100.   for(int i=0; i<7; i++){
  101.     if(c[i]==1){
  102.       digitalWrite(seg[i], HIGH);
  103.     }
  104.   }
  105. }
  106.  
  107. void printNumber(int n, int index){
  108.   clearLeds();
  109.   if(n>=0 && n<=9){
  110.     lightNumber(num[n]);  
  111.   }  
  112.   digitalWrite((10+index),LOW);
  113. }
  114.  
  115. void clearLeds(){
  116.   for(int i=0; i<7; i++){
  117.     digitalWrite(seg[i], LOW);
  118.   }
  119.   digitalWrite(13, HIGH);
  120.   digitalWrite(12, HIGH);
  121.   digitalWrite(11, HIGH);
  122.   digitalWrite(10, HIGH);
  123. }
Advertisement
Add Comment
Please, Sign In to add comment