Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "IRremote.h"
- int receiver = 11;
- int itsON[] = {0};
- int value[] = {0};
- IRrecv irrecv(receiver);
- decode_results results;
- int translateIR() {
- switch(results.value)
- {
- case 0xFF6897: return value[0] = 0; break;
- case 0xFF30CF: return value[0] = 1; break;
- case 0xFF18E7: return value[0] = 2; break;
- case 0xFF7A85: return value[0] = 3; break;
- case 0xFF10EF: return value[0] = 4; break;
- case 0xFF38C7: return value[0] = 5; break;
- case 0xFF5AA5: return value[0] = 6; break;
- case 0xFF42BD: return value[0] = 7; break;
- case 0xFF4AB5: return value[0] = 8; break;
- case 0xFF52AD: return value[0] = 9; break;
- }
- delay(500);
- }
- // define the LED digit patterns, from 0 - 9
- // 1 = LED on, 0 = LED off, in this order:
- // 74HC595 pin Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7
- // Mapping to a,b,c,d,e,f,g of Seven-Segment LED
- byte seven_seg_digits[11] = { B11111100, // = 0
- B01100000, // = 1
- B11011010, // = 2
- B11110010, // = 3
- B01100110, // = 4
- B10110110, // = 5
- B10111110, // = 6
- B11100000, // = 7
- B11111110, // = 8
- B11100110, // = 9
- B00000000 // = null
- };
- // connect to the ST_CP of 74HC595 (pin 3,latch pin)
- int latchPin = 3;
- // connect to the SH_CP of 74HC595 (pin 4, clock pin)
- int clockPin = 4;
- // connect to the DS of 74HC595 (pin 2)
- int dataPin = 2;
- #define ENABLE 5
- #define DIRA 6
- #define DIRB 7
- void setup() {
- irrecv.enableIRIn();
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- pinMode(ENABLE,OUTPUT);
- pinMode(DIRA,OUTPUT);
- pinMode(DIRB,OUTPUT);
- }
- int sevenSegWrite(byte digit) {
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);
- digitalWrite(latchPin, HIGH);
- switch(results.value)
- {
- case 0xFFA25D:
- if(itsON[0] == 1) {
- sevenSegWrite(11);
- digitalWrite(ENABLE,LOW);
- digitalWrite(DIRA,LOW);
- digitalWrite(DIRB,LOW);
- itsON[0] = 0;
- }
- else {
- sevenSegWrite(value[0]);
- digitalWrite(ENABLE,value[0]);
- digitalWrite(DIRA,LOW);
- digitalWrite(DIRB,HIGH);
- itsON[0] = 1;
- }
- break;
- }
- }
- int increment(int num) {
- switch(results.value)
- {
- case 0xFF906F:
- int add = num + 1;
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[add]);
- digitalWrite(latchPin, HIGH);
- value[0] = add;
- break;
- }
- }
- int decrement(int num) {
- switch(results.value)
- {
- case 0xFFE01F:
- int sub = num - 1;
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[sub]);
- digitalWrite(latchPin, HIGH);
- value[0] = sub;
- break;
- }
- }
- int motor(int num) {
- if (num == 0) {
- analogWrite(ENABLE, LOW);
- }
- else if (num == 1) {
- analogWrite(ENABLE, 142);
- }
- else {
- analogWrite(ENABLE, num * 15 + 120);
- }
- }
- void loop() {
- if (irrecv.decode(&results))
- {
- sevenSegWrite(translateIR());
- increment(value[0]);
- decrement(value[0]);
- motor(value[0]);
- irrecv.resume();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement