Advertisement
Guest User

7segments 3 digits

a guest
Feb 16th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.75 KB | None | 0 0
  1. #include <lc-addrlabels.h>
  2. #include <lc-switch.h>
  3. #include <lc.h>
  4. #include <pt-sem.h>
  5. #include <pt.h>
  6.  
  7. #include <IRremote.h>
  8. #include <IRremoteInt.h>
  9.  
  10. static struct pt pt1, pt2; //pt1=receive ; pt2=display
  11.  
  12. const int a0 = 2;
  13. const int a1 = 3;
  14. const int a2 = 4;
  15. const int a3 = 5;
  16.  
  17. const int d1 = 9;  //gauche
  18. const int d2 = 10; //centre
  19. const int d3 = 11; //droite
  20.  
  21. const int receiver = 8;
  22.  
  23. IRrecv irrecv(receiver);
  24. decode_results results;
  25.  
  26. boolean power;
  27. int actualDigit = d1;
  28. int etat_d1 = 0;
  29. int etat_d2 = 0;
  30. int etat_d3 = 0;
  31.  
  32. void setup() {
  33.   Serial.begin(9600);
  34.   pinMode(a0, OUTPUT);
  35.   pinMode(a1, OUTPUT);
  36.   pinMode(a2, OUTPUT);
  37.   pinMode(a3, OUTPUT);
  38.  
  39.   PT_INIT(&pt1);
  40.   PT_INIT(&pt2);
  41.  
  42.   irrecv.enableIRIn();
  43.   power = true;
  44. }
  45.  
  46. void loop() {
  47.   receiveScript(&pt1, 10);
  48.   displayScript(&pt2, 1);
  49. }
  50.  
  51. static int receiveScript(struct pt *pt, int interval)
  52. {
  53.   if(irrecv.decode(&results))
  54.   {
  55.     Serial.println(results.value, DEC);
  56.     decodeValue(results.value);
  57.     irrecv.resume();
  58.   }
  59.   delay(interval);
  60. }
  61.  
  62. static int displayScript(struct pt *pt, int interval)
  63. {
  64.   digitalWrite(d1, HIGH);
  65.   digitalWrite(d2, LOW);
  66.   digitalWrite(d3, LOW);
  67.   dWrite(etat_d1, d1);
  68.   digitalWrite(d1, LOW);
  69.   digitalWrite(d2, HIGH);
  70.   digitalWrite(d3, LOW);
  71.   dWrite(etat_d2, d2);
  72.   digitalWrite(d1, LOW);
  73.   digitalWrite(d2, LOW);
  74.   digitalWrite(d3, HIGH);
  75.   dWrite(etat_d3, d3);
  76.   delay(interval);
  77. }
  78.  
  79. int decodeValue(int value)
  80. {
  81.   switch(value) {
  82.     case 2155855935: //power
  83.       if(power) { power = false; }
  84.       else { power = true; }
  85.       break;
  86.     case 2155806975: //digit+1
  87.       actualDigit +=1;
  88.       Serial.write("actualDigit= ");
  89.       Serial.println(actualDigit, DEC);
  90.       break;
  91.     case 2155821255: //digit-1
  92.       actualDigit -=1;
  93.       Serial.write("actualDigit= ");
  94.       Serial.println(actualDigit, DEC);
  95.       break;
  96.     case 2155841655: //0
  97.       if(power) dSave(0, actualDigit);
  98.       break;
  99.     case 2155864095: //1
  100.       if(power) dSave(1, actualDigit);
  101.       break;
  102.     case 2155847775: //2
  103.       if(power) dSave(2, actualDigit);
  104.       break;
  105.     case 2155831455: //3
  106.       if(power) dSave(3, actualDigit);
  107.       break;
  108.     case 2155860015: //4
  109.       if(power) dSave(4, actualDigit);
  110.       break;
  111.     case 2155843695: //5
  112.       if(power) dSave(5, actualDigit);
  113.       break;
  114.     case 2155827375: //6
  115.       if(power) dSave(6, actualDigit);
  116.       break;
  117.     case 2155868175: //7
  118.       if(power) dSave(7, actualDigit);
  119.       break;
  120.     case 2155851855: //8
  121.       if(power) dSave(8, actualDigit);
  122.       break;
  123.     case 2155835535: //9
  124.       if(power) dSave(9, actualDigit);
  125.       break;
  126.   }
  127. }
  128.  
  129. int dSave(int car, int digit) {
  130.   switch(digit)
  131.   {
  132.     case 9:
  133.       etat_d1 = car;
  134.       break;
  135.     case 10:
  136.       etat_d2 = car;
  137.       break;
  138.     case 11:
  139.       etat_d3 = car;
  140.       break;
  141.     default:
  142.       Serial.write("dSave: invalid digit");
  143.       Serial.println(actualDigit, DEC);
  144.       break;
  145.   }
  146. }
  147.  
  148. int dWrite(int car, int digit) {
  149.   switch(car) {
  150.     case 0:
  151.       digitalWrite(a0, LOW);
  152.       digitalWrite(a1, LOW);
  153.       digitalWrite(a2, LOW);
  154.       digitalWrite(a3, LOW);
  155.       break;
  156.      
  157.     case 1:
  158.       digitalWrite(a0, HIGH);
  159.       digitalWrite(a1, LOW);
  160.       digitalWrite(a2, LOW);
  161.       digitalWrite(a3, LOW);
  162.       break;
  163.      
  164.     case 2:
  165.       digitalWrite(a0, LOW);
  166.       digitalWrite(a1, HIGH);
  167.       digitalWrite(a2, LOW);
  168.       digitalWrite(a3, LOW);
  169.       break;
  170.      
  171.     case 3:
  172.       digitalWrite(a0, HIGH);
  173.       digitalWrite(a1, HIGH);
  174.       digitalWrite(a2, LOW);
  175.       digitalWrite(a3, LOW);
  176.       break;
  177.      
  178.     case 4:
  179.       digitalWrite(a0, LOW);
  180.       digitalWrite(a1, LOW);
  181.       digitalWrite(a2, HIGH);
  182.       digitalWrite(a3, LOW);
  183.       break;
  184.      
  185.     case 5:
  186.       digitalWrite(a0, HIGH);
  187.       digitalWrite(a1, LOW);
  188.       digitalWrite(a2, HIGH);
  189.       digitalWrite(a3, LOW);
  190.       break;
  191.      
  192.     case 6:
  193.       digitalWrite(a0, LOW);
  194.       digitalWrite(a1, HIGH);
  195.       digitalWrite(a2, HIGH);
  196.       digitalWrite(a3, LOW);
  197.       break;
  198.      
  199.     case 7:
  200.       digitalWrite(a0, HIGH);
  201.       digitalWrite(a1, HIGH);
  202.       digitalWrite(a2, HIGH);
  203.       digitalWrite(a3, LOW);
  204.       break;
  205.      
  206.     case 8:
  207.       digitalWrite(a0, LOW);
  208.       digitalWrite(a1, LOW);
  209.       digitalWrite(a2, LOW);
  210.       digitalWrite(a3, HIGH);
  211.       break;
  212.      
  213.     case 9:
  214.       digitalWrite(a0, HIGH);
  215.       digitalWrite(a1, LOW);
  216.       digitalWrite(a2, LOW);
  217.       digitalWrite(a3, HIGH);
  218.       break;
  219.      
  220.     case 10:
  221.       digitalWrite(a0, HIGH);
  222.       digitalWrite(a1, HIGH);
  223.       digitalWrite(a2, HIGH);
  224.       digitalWrite(a3, HIGH);
  225.       break;      
  226.   }
  227.   return car;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement