Advertisement
citybuilder45

Control 7 Segment Panel and DC Motor with Remote

Jan 26th, 2021 (edited)
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "IRremote.h"
  2.  
  3. int receiver = 11;
  4. int itsON[] = {0};
  5. int value[] = {0};
  6.  
  7. IRrecv irrecv(receiver);    
  8. decode_results results;    
  9.  
  10. int translateIR() {
  11.   switch(results.value)
  12.   {
  13.   case 0xFF6897: return value[0] = 0;    break;
  14.   case 0xFF30CF: return value[0] = 1;    break;
  15.   case 0xFF18E7: return value[0] = 2;    break;
  16.   case 0xFF7A85: return value[0] = 3;    break;
  17.   case 0xFF10EF: return value[0] = 4;    break;
  18.   case 0xFF38C7: return value[0] = 5;    break;
  19.   case 0xFF5AA5: return value[0] = 6;    break;
  20.   case 0xFF42BD: return value[0] = 7;    break;
  21.   case 0xFF4AB5: return value[0] = 8;    break;
  22.   case 0xFF52AD: return value[0] = 9;    break;
  23.   }
  24.   delay(500);
  25. }
  26.  
  27. // define the LED digit patterns, from 0 - 9
  28. // 1 = LED on, 0 = LED off, in this order:
  29. //                74HC595 pin     Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7
  30. //                Mapping to      a,b,c,d,e,f,g of Seven-Segment LED
  31. byte seven_seg_digits[11] = { B11111100,  // = 0
  32.                               B01100000,  // = 1
  33.                               B11011010,  // = 2
  34.                               B11110010,  // = 3
  35.                               B01100110,  // = 4
  36.                               B10110110,  // = 5
  37.                               B10111110,  // = 6
  38.                               B11100000,  // = 7
  39.                               B11111110,  // = 8
  40.                               B11100110,  // = 9
  41.                               B00000000   // = null
  42.                              };
  43.  
  44. // connect to the ST_CP of 74HC595 (pin 3,latch pin)
  45. int latchPin = 3;
  46. // connect to the SH_CP of 74HC595 (pin 4, clock pin)
  47. int clockPin = 4;
  48. // connect to the DS of 74HC595 (pin 2)
  49. int dataPin = 2;
  50.  
  51. #define ENABLE 5
  52. #define DIRA 6
  53. #define DIRB 7
  54.  
  55. void setup() {
  56.   irrecv.enableIRIn();
  57.  
  58.   pinMode(latchPin, OUTPUT);
  59.   pinMode(clockPin, OUTPUT);
  60.   pinMode(dataPin, OUTPUT);
  61.   pinMode(ENABLE,OUTPUT);
  62.   pinMode(DIRA,OUTPUT);
  63.   pinMode(DIRB,OUTPUT);
  64. }
  65.  
  66. int sevenSegWrite(byte digit) {
  67.  
  68.   digitalWrite(latchPin, LOW);
  69.   shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);  
  70.   digitalWrite(latchPin, HIGH);
  71.  
  72.   switch(results.value)
  73.  
  74.   {
  75.   case 0xFFA25D:
  76.     if(itsON[0] == 1) {        
  77.       sevenSegWrite(11);
  78.       digitalWrite(ENABLE,LOW);
  79.       digitalWrite(DIRA,LOW);
  80.       digitalWrite(DIRB,LOW);  
  81.       itsON[0] = 0;          
  82.     }
  83.     else {                    
  84.       sevenSegWrite(value[0]);
  85.       digitalWrite(ENABLE,value[0]);
  86.       digitalWrite(DIRA,LOW);
  87.       digitalWrite(DIRB,HIGH);
  88.       itsON[0] = 1;          
  89.     }
  90.     break;
  91.   }
  92. }
  93.  
  94. int increment(int num) {
  95.   switch(results.value)
  96.   {
  97.     case 0xFF906F:
  98.       int add = num + 1;
  99.       digitalWrite(latchPin, LOW);
  100.       shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[add]);
  101.       digitalWrite(latchPin, HIGH);
  102.       value[0] = add;
  103.       break;
  104.   }
  105. }
  106.  
  107. int decrement(int num) {
  108.   switch(results.value)
  109.   {
  110.     case 0xFFE01F:
  111.       int sub = num - 1;
  112.       digitalWrite(latchPin, LOW);
  113.       shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[sub]);
  114.       digitalWrite(latchPin, HIGH);
  115.       value[0] = sub;  
  116.       break;
  117.   }  
  118. }
  119.  
  120. int motor(int num) {
  121.   if (num == 0) {
  122.     analogWrite(ENABLE, LOW);
  123.   }
  124.   else if (num == 1) {
  125.     analogWrite(ENABLE, 142);
  126.   }
  127.   else {
  128.     analogWrite(ENABLE, num * 15 + 120);
  129.   }
  130. }
  131.  
  132. void loop() {
  133.   if (irrecv.decode(&results))
  134.   {
  135.     sevenSegWrite(translateIR());
  136.     increment(value[0]);
  137.     decrement(value[0]);
  138.     motor(value[0]);
  139.     irrecv.resume();
  140.   }  
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement