ENIB 2023 : UnderPressure : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Code)
(Liste des composants)
Ligne 8 : Ligne 8 :
 
==Liste des composants==
 
==Liste des composants==
  
* composant 1
+
* Carte Arduino
* composant 2
+
* Capteur de pression BME280
* ...
+
* Leds rouge, verte, orange
 +
* Verres
 +
* Pailles
  
 
==Code==
 
==Code==

Version du 26 janvier 2023 à 15:04

photo de l'équipe

Axebar.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 6 secondes. Plusieurs énigmes-indices l'aideront, elles seront notées sur la décoration des verres (parasols). Lorsque le jeu est gagné, des leds s'allument.

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