Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <lc-addrlabels.h>
- #include <lc-switch.h>
- #include <lc.h>
- #include <pt-sem.h>
- #include <pt.h>
- #include <IRremote.h>
- #include <IRremoteInt.h>
- static struct pt pt1, pt2; //pt1=receive ; pt2=display
- const int a0 = 2;
- const int a1 = 3;
- const int a2 = 4;
- const int a3 = 5;
- const int d1 = 9; //gauche
- const int d2 = 10; //centre
- const int d3 = 11; //droite
- const int receiver = 8;
- IRrecv irrecv(receiver);
- decode_results results;
- boolean power;
- int actualDigit = d1;
- int etat_d1 = 0;
- int etat_d2 = 0;
- int etat_d3 = 0;
- void setup() {
- Serial.begin(9600);
- pinMode(a0, OUTPUT);
- pinMode(a1, OUTPUT);
- pinMode(a2, OUTPUT);
- pinMode(a3, OUTPUT);
- PT_INIT(&pt1);
- PT_INIT(&pt2);
- irrecv.enableIRIn();
- power = true;
- }
- void loop() {
- receiveScript(&pt1, 10);
- displayScript(&pt2, 1);
- }
- static int receiveScript(struct pt *pt, int interval)
- {
- if(irrecv.decode(&results))
- {
- Serial.println(results.value, DEC);
- decodeValue(results.value);
- irrecv.resume();
- }
- delay(interval);
- }
- static int displayScript(struct pt *pt, int interval)
- {
- digitalWrite(d1, HIGH);
- digitalWrite(d2, LOW);
- digitalWrite(d3, LOW);
- dWrite(etat_d1, d1);
- digitalWrite(d1, LOW);
- digitalWrite(d2, HIGH);
- digitalWrite(d3, LOW);
- dWrite(etat_d2, d2);
- digitalWrite(d1, LOW);
- digitalWrite(d2, LOW);
- digitalWrite(d3, HIGH);
- dWrite(etat_d3, d3);
- delay(interval);
- }
- int decodeValue(int value)
- {
- switch(value) {
- case 2155855935: //power
- if(power) { power = false; }
- else { power = true; }
- break;
- case 2155806975: //digit+1
- actualDigit +=1;
- Serial.write("actualDigit= ");
- Serial.println(actualDigit, DEC);
- break;
- case 2155821255: //digit-1
- actualDigit -=1;
- Serial.write("actualDigit= ");
- Serial.println(actualDigit, DEC);
- break;
- case 2155841655: //0
- if(power) dSave(0, actualDigit);
- break;
- case 2155864095: //1
- if(power) dSave(1, actualDigit);
- break;
- case 2155847775: //2
- if(power) dSave(2, actualDigit);
- break;
- case 2155831455: //3
- if(power) dSave(3, actualDigit);
- break;
- case 2155860015: //4
- if(power) dSave(4, actualDigit);
- break;
- case 2155843695: //5
- if(power) dSave(5, actualDigit);
- break;
- case 2155827375: //6
- if(power) dSave(6, actualDigit);
- break;
- case 2155868175: //7
- if(power) dSave(7, actualDigit);
- break;
- case 2155851855: //8
- if(power) dSave(8, actualDigit);
- break;
- case 2155835535: //9
- if(power) dSave(9, actualDigit);
- break;
- }
- }
- int dSave(int car, int digit) {
- switch(digit)
- {
- case 9:
- etat_d1 = car;
- break;
- case 10:
- etat_d2 = car;
- break;
- case 11:
- etat_d3 = car;
- break;
- default:
- Serial.write("dSave: invalid digit");
- Serial.println(actualDigit, DEC);
- break;
- }
- }
- int dWrite(int car, int digit) {
- switch(car) {
- case 0:
- digitalWrite(a0, LOW);
- digitalWrite(a1, LOW);
- digitalWrite(a2, LOW);
- digitalWrite(a3, LOW);
- break;
- case 1:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, LOW);
- digitalWrite(a2, LOW);
- digitalWrite(a3, LOW);
- break;
- case 2:
- digitalWrite(a0, LOW);
- digitalWrite(a1, HIGH);
- digitalWrite(a2, LOW);
- digitalWrite(a3, LOW);
- break;
- case 3:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, HIGH);
- digitalWrite(a2, LOW);
- digitalWrite(a3, LOW);
- break;
- case 4:
- digitalWrite(a0, LOW);
- digitalWrite(a1, LOW);
- digitalWrite(a2, HIGH);
- digitalWrite(a3, LOW);
- break;
- case 5:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, LOW);
- digitalWrite(a2, HIGH);
- digitalWrite(a3, LOW);
- break;
- case 6:
- digitalWrite(a0, LOW);
- digitalWrite(a1, HIGH);
- digitalWrite(a2, HIGH);
- digitalWrite(a3, LOW);
- break;
- case 7:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, HIGH);
- digitalWrite(a2, HIGH);
- digitalWrite(a3, LOW);
- break;
- case 8:
- digitalWrite(a0, LOW);
- digitalWrite(a1, LOW);
- digitalWrite(a2, LOW);
- digitalWrite(a3, HIGH);
- break;
- case 9:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, LOW);
- digitalWrite(a2, LOW);
- digitalWrite(a3, HIGH);
- break;
- case 10:
- digitalWrite(a0, HIGH);
- digitalWrite(a1, HIGH);
- digitalWrite(a2, HIGH);
- digitalWrite(a3, HIGH);
- break;
- }
- return car;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement