Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //inclure les librairies pour mettre le processeur sur pause et pour recevoir l'info de la manette et faire fonctioner le lcd
- #include <avr/interrupt.h>
- #include <avr/sleep.h>
- #include <IRremote.h>
- #include <LiquidCrystal.h>
- String currentVal;
- String answer;
- bool minus;
- String digit1 = "0";
- //initialiser le lcd et le détecteur de la manette
- IRrecv irrecv(9);
- decode_results results;
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- void setup()
- {
- pinMode(9, INPUT);
- Serial.begin(9600);
- //activer le détecteur et le lcd
- irrecv.enableIRIn();
- lcd.begin(16, 2);
- }
- void loop()
- {
- Remote();
- //assembler les valeurs en un string et l'afficher sur le lcd
- if (currentVal != "10") {
- if (answer.length() <= 4) {
- answer = String(answer + currentVal);
- currentVal = "10";
- }
- }
- lcd.setCursor(1, 1);
- lcd.print(answer);
- }
- void Remote() {
- //recevoir l'information de la manette
- if (irrecv.decode(&results)) {
- switch (results.value) {
- case 3238126971:
- currentVal = "0";
- break;
- case 2534850111:
- currentVal = "1";
- break;
- case 1033561079:
- currentVal = "2";
- break;
- case 1635910171:
- currentVal = "3";
- break;
- case 2351064443:
- currentVal = "4";
- break;
- case 1217346747:
- currentVal = "5";
- break;
- case 71952287:
- currentVal = "6";
- break;
- case 851901943:
- currentVal = "7";
- break;
- case 465573243:
- currentVal = "8";
- break;
- case 1053031451:
- currentVal = "9";
- break;
- case 4034314555:
- //perndre en compte les valeurs négatives
- lcd.setCursor(0, 1);
- Serial.println(minus);
- if (minus == false) {
- lcd.print("-");
- minus = true;
- } else {
- lcd.print("+");
- minus = false;
- }
- break;
- case 1386468383:
- //effacer un digit
- answer.remove(answer.length() - 1);
- lcd.clear();
- break;
- case 2747854299:
- Equal("+");
- break;
- case 3810010651:
- Equal("x");
- break;
- case 5316027:
- Equal("/");
- break;
- case 4001918335:
- Equal("log");
- break;
- }
- irrecv.resume();
- }
- }
- //finir le calcul
- void Equal(String mode) {
- if (digit1 != "0") {
- lcd.clear();
- //rendre la réponse négative si necessaire
- if (minus == true) {
- answer = answer.toInt() * -1;
- }
- //mettre la valeur sur le lcd
- lcd.print(String(digit1 + mode + answer + " ="));
- lcd.setCursor(1, 1);
- //multiplier
- if (mode == "x") {
- answer = digit1.toInt() * answer.toInt();
- } else if (mode == "+") {
- //Additioner
- answer = digit1.toInt() + answer.toInt();
- }else if (mode == "/") {
- //diviser(ne garde pas les décimaux)
- answer = digit1.toInt() / answer.toInt();
- }else if(mode == "log"){
- answer = log10(digit1.toInt());
- //answer.toDouble().log10();
- }
- Serial.println(answer);
- lcd.print(answer);
- //endormir le cpu
- set_sleep_mode(SLEEP_MODE_PWR_DOWN);
- sleep_enable();
- sei();
- sleep_cpu();
- }
- digit1 = answer;
- if (minus == true) {
- digit1 = digit1.toInt() * -1;
- }
- //mettre la valeur du premier string en haut et ajouter le signe +
- lcd.setCursor(0, 1);
- answer = "";
- minus = false;
- lcd.clear();
- lcd.print(digit1);
- lcd.print(mode);
- lcd.setCursor(1, 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement