1 013
modifications
Modifications
aucun résumé de modification
<br />
Le site web est directement relié aux interactions du cube et permet d’enchaîner les instructions de façon fluide.
-- Code réalisé sur particle --
//Importation des librairy pour l'écran 4x7 segments
#include <TM1637Display.h>
//Importation des librairy pour le ruban a led
#include <neopixel.h>
//Initialisation de l'écran 4x7 segments
#define CLK D1
#define DIO D2
TM1637Display display(CLK, DIO);
//Initialisation du ruban de led
#define PIN D6
#define N_LEDS 9
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN);
//Initialisation des Capteurs de fin de courses
#define FinCourse1 D4
#define FinCourse2 D5
#define FinCourse3 D7
//Initialisation du capteur de pression
int fsrAnalogPin = A2;
int fsrReading;
//Initialisation du solenoid
int solenoidPin = D4;
//Initialisation du bouton
int interrupteur = LOW;
int toggle = 0;
int buttonPin = D0;
int buttonState = 0;
//Initialisation des potentiomètres
int analogPin0 = A0;
int analogPin1 = A1;
int analogPin2 = A3;
int val0 = 0;
int val1 = 0;
int val2 = 0;
//Initiatilsation de variables pour changer la couleur des leds
int red0 = 0;
int red1 = 0;
int red2 = 0;
int red3 = 0;
int red4 = 0;
int red5 = 0;
int red6 = 0;
//Initialisation de la variable du nombre d'arbres découpés
int arbre=0;
void setup() {
strip.begin();
pinMode(buttonPin, INPUT);
display.setBrightness(0x0d);
Serial.begin(9600); // Envoi de message de déboggage sur connexion série
pinMode(fsrAnalogPin, OUTPUT);
pinMode(solenoidPin, OUTPUT);
//Variables envoyées au web
Particle.variable("interrupteur", interrupteur);
Particle.variable("red0", red0);
Particle.variable("red1", red1);
Particle.variable("red2", red2);
Particle.variable("red3", red3);
Particle.variable("red4", red4);
Particle.variable("red5", red5);
Particle.variable("red6", red6);
pinMode(FinCourse1, INPUT);
pinMode(FinCourse2, INPUT);
pinMode(FinCourse3, INPUT);
Serial.begin(115200);
}
void loop() {
//Lecture de la valeur du capteur de pression
fsrReading = analogRead(fsrAnalogPin);
val0 = analogRead(analogPin0);
val1 = analogRead(analogPin1);
val2 = analogRead(analogPin2);
//Lecture de la valeur des fin de courses
int fdc1 = digitalRead(FinCourse1);
int fdc2 = digitalRead(FinCourse2);
int fdc3 = digitalRead(FinCourse3);
//Lecture de la valeur du bouton
buttonState = digitalRead(buttonPin);
//Bouton avec 2 étâts comme un interrupteur (interrupteur ON et interrupteur OFF)
if (buttonState == HIGH) {
if (toggle == 1) {
interrupteur=!interrupteur;
toggle=0;
}
}
else {
toggle=1;
}
//Si l'interrupteur est ON
if(interrupteur == HIGH){
if(toggle == 0){ //Remise a 0 des valeurs de l'arbre et des leds au clic
arbre=0;
red0=0;
red1=0;
red2=0;
red3=0;
red4=0;
red5=0;
red6=0;
}
//Solenoid permettant d'ouvrir la porte se bloque
digitalWrite(solenoidPin, LOW);
for(int i=0; i<strip.numPixels(); i++) {
// Pour toute les leds ou le capteur est fonctionnel, elles deviennent rouges -> Début de l'expérience
strip.setPixelColor(i, strip.Color(255,0,0));
//Seules 2 capteurs ne sont pas fonctionnels -> Les leds s'allument vertes dès le début
strip.setPixelColor(0, strip.Color(0,255,0));
strip.setPixelColor(5, strip.Color(0,255,0));
//Pour chaque interaction avec un capteur -> Valeur de la led prend 1
if(val0 > 3800) {
red0 = 1;
}
if(val1 > 3800) {
red1 = 1;
}
if(val2 > 3800) {
red3 = 1;
}
if(fsrReading < 200){
red2 = 1;
}
if(fdc1 == HIGH){
red4 = 1;
}
if(fdc2 == HIGH){
red5 = 1;
}
if(fdc3 == HIGH){
red6 = 1;
}
//Si la valeur de la led est 1 -> Led s'allume en vert
if(red0 == 1){
strip.setPixelColor(6, strip.Color(0,255,0));
}
if(red1 == 1){
strip.setPixelColor(1, strip.Color(0,255,0));
}
if(red2 == 1){
strip.setPixelColor(3, strip.Color(0,255,0));
}
if(red3 == 1){
strip.setPixelColor(4, strip.Color(0,255,0));
}
if(red4 == 1){
strip.setPixelColor(2, strip.Color(0,255,0));
}
if(red5 == 1){
strip.setPixelColor(8, strip.Color(0,255,0));
}
if(red6 == 1){
strip.setPixelColor(7, strip.Color(0,255,0));
}
strip.show();
arbre++; //Incrementation du nombre d'arbres
delay(25);
display.showNumberDec(arbre);
}
} else //Si l'interrupteur est OFF {
for(int i=0; i<strip.numPixels(); i++) {//Toute les leds clignotent vert et blanc
strip.setPixelColor(i, strip.Color(0,255,0));
delay(50);
strip.show();
strip.setPixelColor(i, strip.Color(255,255,255));
delay(50);
strip.show();
digitalWrite(solenoidPin, HIGH); //Solenoid permettant d'ouvrir la porte s'e bloque s'ouvre
}
//Le nombre d'arbre se stop
arbre=arbre;
display.showNumberDec(arbre);
}
}