Partie parking

Répartition des Tâches

Marius: Partie parking (codage de la barrière du parking, codage du nombre de places, 3D du parking à vélo et du parking).
Martin: Partie lumière et du tramway ( codage de la lumière, 3D du guichet, codage de l'arrivée du tramway).

Organisation et planning

Marius et Martin: 13 mars: répartition des tâches et étude préalable faites.
16 mars: Schéma
Marius: 16 mars: recherche d'idées pour la barrière du parking. 23 mars: codage de la barrière + début codage des places. 27 mars: 3D de la barrière + 3D parking. 2 avril: fin de la 3D du parking + 3D de l'abris vélo. 7 avril: fin du codage des places + regroupement des codes + tests avec la barrière. 7 mai: regroupement de la partie de la maquette et assemblage.
Martin: 16 mars: Algorigramme. 23 mars: codage de la lumière. 7 avril: 3d cache lumière. 8 avril: codage de l'arrivée du tram + cache de l'afficheur. 29 avril: cache de la carte arduino. 7 mai: regroupement de la partie de la maquette.

Schéma du projet.

Schéma

Diagramme de cas d'utilisation.

Schéma

Analyse du cahier des charges

Étude préalable

Étude préalable

Recherche de solutions déjà existantes:

Choix de la 4ème barrière.

Composants et fournitures

Voici les composants nécéssaires pour la partie Parking.

Jumeau numérique

jumeau numérique

Codage

#include
#include
#include
#include

Ou sont les composants
#define PIN_SERVO_3 3
#define PIN_SIMPLE_BUTTON_4 4
#define PIN_ULTRASONIC_8 8
#define PIN_ULTRASONIC_7 7

Servo servomotor_3;
rgb_lcd lcdRgb;
Ultrasonic ultrasonic_8(PIN_ULTRASONIC_8);
Ultrasonic ultrasonic_7(PIN_ULTRASONIC_7);

Initialisation
int liste;

void setup() {
servomotor_3.attach(PIN_SERVO_3);
lcdRgb.begin(16, 2);
pinMode(PIN_SIMPLE_BUTTON_4, INPUT);
pinMode(PIN_ULTRASONIC_8, INPUT);
pinMode(PIN_ULTRASONIC_7, INPUT);
servomotor_3.write(20);
lcdRgb.setCursor(2, 0);
lcdRgb.print(String("PLACE LIBRE"));
}

Ecriture sur l'afficheur et initialisation du servomoteur et de la liste
void loop() {
lcdRgb.setCursor(2, 0);
lcdRgb.print(String("PLACE LIBRE"));
lcdRgb.setCursor(6, 1);
lcdRgb.print(String(liste));
liste = 200;
Partie bouton + barrière
if (digitalRead(PIN_SIMPLE_BUTTON_4)) { si il y a une pression sur le bouton
servomotor_3.write(90);Le servomoteur se met à l'angle 90 donc la barrière est ouverte
delay(1000*10);Attendre 10 secondes
servomotor_3.write(20);Retour à la position initial
} else {Sinon le servomoteur reste en position fermé si il n'y a pas de pression sur le bouton
servomotor_3.write(20);
}
if (ultrasonic_8.MeasureInCentimeters() < 10) {Si il y a un obstacle à moins de 10 cms
liste = liste - 1;moins 1 à la liste à l'afficheur
}
if (ultrasonic_7.MeasureInCentimeters() < 10) {
liste = liste - 1;
}
}

Algorigramme du code

Problèmes rencontrés

J'ai rencontré un problème avec un servomoteur qui faisait un faux contact dans la carte quand j'appuyais sur le bouton. J'ai regardé attentivement quand cela coupé et j'ai vu que cela venait de lui donc je l'ai changé.

Maquette

jumeau numérique

Modélisation 3D des éléments

Voici la 3D du parking.

Voici la 3D de la barrière et de l'abri vélo.

Manque de temps pour utiliser les panneaux solaires. Solution trouvée : utiliser l'ordinateur comme source d'énergie.

Vidéo

Vidéo démonstrative du codage du parking.