#include <TM1637TinyDisplay.h>
#include <HX711.h>
// Define Digital Pins
#define CLK 23
#define DIO 24
#define RED 2
#define GRN 3
#define BLU 4
HX711 scale;
// Instantiate TM1637TinyDisplay Class
TM1637TinyDisplay display(CLK, DIO);
boolean button1WasUp = true;
boolean button2WasUp = true;
boolean button3WasUp = true;
boolean button4WasUp = true;
boolean button5WasUp = true;
char millier=0;
char centaine=0;
char dizaine=0;
char unite=0;
int sequence =1;
int reset =1;
int diffusion =0;
int repeat=0;
int enigme=1;
int red=0;
int green=0;
int blue=0;
float poids=0;
void setup() {
// Initialize Display
display.begin();
scale.begin(A3, A4);
pinMode(14, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
pinMode(17, INPUT_PULLUP);
pinMode(22, INPUT_PULLUP);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
pinMode(25, OUTPUT);
pinMode(34, OUTPUT);
pinMode(27, INPUT);
delay(1000);
pinMode(RED, OUTPUT);
pinMode(GRN, OUTPUT);
pinMode(BLU, OUTPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
Serial.begin(9600);
poids=scale.read();
poids=poids/420.52;
Serial.println(poids);
digitalWrite(34, HIGH);
}
void loop() {
if(enigme==1){
red = analogRead(A0)/4;
green = analogRead(A1)/4;
blue = analogRead(A2)/4;
analogWrite(RED, red/4);
analogWrite(GRN, green/4);
analogWrite(BLU, blue/4);
//fushia
if(sequence==1 && red>245 && green<5 && blue>245){
delay(1000);
if(sequence==1 && red>245 && green<5 && blue>245){
for(repeat=0;repeat<10;repeat++){
digitalWrite(25, HIGH);
delay(100);
digitalWrite(25, LOW);
delay(100);
}
sequence=2;
}
}
//orange
if(sequence==2 && red>245 && green>85 && green <100 && blue<5){
delay(1000);
if(sequence==2 && red>245 && green>85 && green <100 && blue<5){
for(repeat=0;repeat<10;repeat++){
digitalWrite(25, HIGH);
delay(100);
digitalWrite(25, LOW);
delay(100);
}
sequence=3;
sequence=0;
}
}
//blue turquoise
if(sequence==3 && red<5 && green>60 && green <80 && blue>160 && blue<210){
delay(1000);
if(sequence==3 && red<5 && green>60 && green <80 && blue>160 && blue<210){
for(repeat=0;repeat<10;repeat++){
digitalWrite(25, HIGH);
delay(100);
digitalWrite(25, LOW);
delay(100);
}
digitalWrite(25, HIGH);
delay(3000);
digitalWrite(25, LOW);
enigme=2;
sequence=0;
}
}
}
if (enigme==2)
{
boolean button1IsUp = digitalRead(14);
boolean button2IsUp = digitalRead(15);
boolean button3IsUp = digitalRead(16);
boolean button4IsUp = digitalRead(17);
boolean button5IsUp = digitalRead(22);
if (sequence==1 && diffusion==0){
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, HIGH); digitalWrite(21, HIGH);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, HIGH);digitalWrite(19, HIGH);digitalWrite(20, HIGH); digitalWrite(21, HIGH);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showString("0000");
diffusion=1;
}
if (sequence ==2 && diffusion ==0){
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, HIGH);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, HIGH);digitalWrite(19, HIGH);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showString("0000");
diffusion=1;
}
if (sequence ==3 && diffusion ==0){
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, HIGH); digitalWrite(21, HIGH);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, HIGH); digitalWrite(21, HIGH);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, HIGH); digitalWrite(21, LOW);
delay(500);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showString("0000");
diffusion=1;
}
if (button1WasUp && !button1IsUp){
delay(10);
button1IsUp = digitalRead(14);
if (!button1IsUp){
millier=millier+1;
if(millier>9){
millier=0;
}
}
}
button1WasUp = button1IsUp;
if (button2WasUp && !button2IsUp) {
delay(10);
button2IsUp = digitalRead(15);
if (!button2IsUp){
centaine=centaine+1;
if(centaine>9){
centaine=0;
}
}
}
button2WasUp = button2IsUp;
if (button3WasUp && !button3IsUp) {
delay(10);
button3IsUp = digitalRead(16);
if (!button3IsUp){
dizaine=dizaine+1;
if(dizaine>9){
dizaine=0;
}
}
}
button3WasUp = button3IsUp;
if (button4WasUp && !button4IsUp) {
delay(10);
button4IsUp = digitalRead(17);
if (!button4IsUp){
unite=unite+1;
if(unite>9){
unite=0;
}
}
}
button4WasUp = button4IsUp;
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
if (button5WasUp && !button5IsUp) {
delay(10);
button5IsUp = digitalRead(22);
if (!button5IsUp){
diffusion=0;
millier=centaine=dizaine=unite=0;
display.clear();
}
}
button5WasUp = button5IsUp;
if (millier==3 && centaine==1 && dizaine==5 && unite==4 && sequence==1){
while(repeat<7){
delay(100);
display.clear();
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, HIGH); digitalWrite(21, LOW);
display.clear();
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, HIGH);
delay(100);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
repeat=repeat+1;
}
display.clear();
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
millier=centaine=dizaine=unite=0;
sequence=2;
repeat=0;
diffusion=0;
delay(1000);
}
if (millier==8 && centaine==9 && dizaine==1 && unite==2 && sequence ==2){
while(repeat<7){
delay(100);
display.clear();
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, HIGH); digitalWrite(21, LOW);
display.clear();
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, HIGH);
delay(100);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
repeat=repeat+1;
}
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.clear();
millier=centaine=dizaine=unite=0;
sequence=3;
repeat=0;
diffusion=0;
delay(1000);}
if (millier==1 && centaine==1 && dizaine==7 && unite==6 && sequence ==3){
while(repeat<7){
delay(100);
display.clear();
digitalWrite(18, HIGH);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, HIGH);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, HIGH); digitalWrite(21, LOW);
display.clear();
delay(100);
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, HIGH);
delay(100);
display.showNumber (millier,false, 1, 0);
display.showNumber (centaine,false, 1, 1);
display.showNumber (dizaine,false, 1, 2);
display.showNumber (unite,false, 1, 3);
repeat=repeat+1;
}
digitalWrite(18, LOW);digitalWrite(19, LOW);digitalWrite(20, LOW); digitalWrite(21, LOW);
display.clear();
millier=centaine=dizaine=unite=0;
sequence=4;
enigme=3;
repeat=0;
diffusion=0;
delay(1000);}
}
}