ENIB 2023 : UnderPressure

De Les Fabriques du Ponant
Révision datée du 15 janvier 2024 à 15:59 par Antonydbzh (discussion | contributions) (Catégories)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

photo de l'équipe

Snapchat-1427582049.jpg

Que fait ce projet ?

Le joueur se retrouve face à un plateau rempli de verres avec des pailles. Son but est de trouver le bon verre et de souffler dedans à 2 bars pendant 5 secondes (le nombre de verres sur le plateau). Plusieurs énigmes-indices l'aideront, elles seront notées dans la décoration des verres (papier crépon). Lorsque le jeu est gagné, la led rouge devient verte.

Liste des composants

  • Carte Arduino
  • Capteur de pression BME280
  • Leds rouge, verte, orange
  • Verres
  • Pailles

Code



#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme; // I2C

const int greenLed = 5;
const int orangeLed = 6;
const int redLed = 7;
const float targetPressure = 1.0;
const int targetDuration = 5000; // 5 seconds

unsigned long startTime;
bool pressureReached = false;

void setup() {
  // Start the I2C communication
  Wire.begin();

  // Initialize the BME280 sensor
  bme.begin(0x76);

  // Set the LED pins as output
  pinMode(greenLed, OUTPUT);
  pinMode(orangeLed, OUTPUT);
  pinMode(redLed, OUTPUT);
}

void loop() {
  float pressure = bme.readPressure() / 100.0F;

  // Check if the pressure is correct
  if (pressure >= targetPressure) {
    if (!pressureReached) {
      // Start the timer
      startTime = millis();
      pressureReached = true;
    } else {
      // Check if the duration is long enough
      if (millis() - startTime >= targetDuration) {
        // Turn on the green LED
        digitalWrite(greenLed, HIGH);
        digitalWrite(orangeLed, LOW);
        digitalWrite(redLed, LOW);
      } else {
        // Turn on the orange LED
        digitalWrite(greenLed, LOW);
        digitalWrite(orangeLed, HIGH);
        digitalWrite(redLed, LOW);
      }
    }
  } else {
    // Turn on the red LED
    digitalWrite(greenLed, LOW);
    digitalWrite(orangeLed, LOW);
    digitalWrite(redLed, HIGH);
    pressureReached = false;
  }
}

Catégories