Terminale STI2D SIN Seance

logigramme

Séance 1 — Algorithmique appliquée au SIN

Durée: 1h–1h30 | Python (simulation) + squelette C/Arduino

1) Du besoin à l’algorithme

Exemple fil rouge : allumer une LED quand la luminosité est faible.

  • Entrée : LDR → lum (valeur analogique).
  • Sortie : LED (ON/OFF).
  • Paramètre : seuil S.

Notions clés : séquence, condition, boucle, variables.

2) Représentations

Logigramme

Début
  Lire la luminosité
  Si luminosité < seuil alors
      Allumer LED
  Sinon
      Éteindre LED
  Fin Si
Fin

Pseudo-code

variable lum, seuil
début
  seuil ← 40
  lire lum
  si lum < seuil alors
     afficher "LED ON"
  sinon
     afficher "LED OFF"
  fin si
fin

3) Vers le code

Python (simulation)

seuil = 40
lum = 35
if lum < seuil:
    print("LED ON")
else:
    print("LED OFF")

Arduino (embarqué)

int seuil = 400;          // à calibrer
void loop(){
  int lum = analogRead(A0);
  if(lum < seuil) digitalWrite(5, HIGH);
  else            digitalWrite(5, LOW);
}

4) Bonnes pratiques (ajouts)

  • Étalonnage : relever lum en clair/sombre, choisir S au milieu. Tracer via Serial ou moniteur Python.
  • Anti-bruit : moyenne glissante ou médiane sur 5 mesures.
  • Hystérésis : ON si lum < S_on, OFF si lum > S_off pour éviter le clignotement.
  • Échelle : analogRead() renvoie 0..1023; normaliser en % si besoin.
  • Clarté : commentaires courts, noms explicites, indentation stable.
// Snippet Arduino — hystérésis
const int S_ON=380, S_OFF=420;
bool led=false;
void loop(){
  int lum=analogRead(A0);
  if(!led && lum<S_ON) led=true;
  if( led && lum>S_OFF) led=false;
  digitalWrite(5, led?HIGH:LOW);
}

5) Mini-exercices d’ancrage (ajouts)

  1. Donner 2 jeux de valeurs lum et décider ON/OFF pour S=40 puis S=60.
  2. Écrire le pseudo-code avec hystérésis (deux seuils).
  3. Modifier la condition si le câblage rend lum plus grand quand il fait sombre.

Objectifs

  • Identifier E/S et variables.
  • Représenter la logique en logigramme puis pseudo-code.
  • Simuler en Python avant l’embarqué.

Contexte

Éclairage automatique : allumer une LED quand la luminosité descend sous un seuil S ajustable.

  • Entrée : LDR → lum
  • Sortie : LED
  • Paramètre : S

Notions : séquence | condition | variables | test

Démarche

  1. Analyse du besoin : E/S, variables, cas limites.
  2. Formalisation : logigramme clair → pseudo-code indenté.
  3. Simulation Python : tableau de mesures, test du seuil.
  4. Mise en commun : comparer les seuils et la clarté des étapes.

Extensions (ajouts facultatifs)

  • Seuil réglable par potentiomètre sur A1.
  • Journalisation série + tracé Moniteur/Plotter.
  • Hystérésis simple pour éviter l’oscillation.

Exemple Python minimal

# Simulation d'un éclairage automatique
seuil = 40
mesures = [80, 65, 42, 39, 35, 45, 60]
for lum in mesures:
    if lum < seuil:
        print(f"Lum={lum} -> LED ON")
    else:
        print(f"Lum={lum} -> LED OFF")

Squelette Arduino (à compléter)

void setup(){
  pinMode(A0, INPUT);   // LDR
  pinMode(5, OUTPUT);   // LED
  Serial.begin(9600);
}
void loop(){
  int lum = analogRead(A0);
  // TODO: comparer à un seuil S et piloter la LED
}

Bonus Arduino — seuil réglable & log (ajout)

const int PIN_LDR=A0, PIN_POT=A1, PIN_LED=5;
void setup(){ pinMode(PIN_LED,OUTPUT); Serial.begin(9600); }
void loop(){
  int lum = analogRead(PIN_LDR);       // 0..1023
  int pot = analogRead(PIN_POT);       // 0..1023
  int S   = map(pot,0,1023,200,800);   // fenêtre utile
  bool on = (lum < S);
  digitalWrite(PIN_LED, on?HIGH:LOW);
  Serial.print("lum=");Serial.print(lum);
  Serial.print("  S=");Serial.print(S);
  Serial.print("  LED=");Serial.println(on?"ON":"OFF");
  delay(80);
}

Évaluation formative

CritèreAttenduPts
Identification E/SEntrées/sorties et variables correctement relevées4
Logigramme / pseudo-codeClair, complet, enchaînement logique correct8
Simulation PythonFonctionnelle, deux cas de test, commentaires utiles6
JustificationsRéponses précises et argumentées2

Total: 20 points (formatif)

Pièces jointes (à déposer sur le site)

  • /uploads/sin-algo/00_gabarit_logigramme.pdf
  • /uploads/sin-algo/00_gabarit_pseudo_code.pdf
  • /uploads/sin-algo/s1_seuil_lumiere.py

Exemple d’attendu — Autre système : Ventilation automatique

Objectif : activer un ventilateur si la température dépasse Tseuil.

  • Entrée : capteur température → temp
  • Sortie : ventilateur ON/OFF
  • Paramètre : Tseuil
# Simulation ventilation automatique
Tseuil = 25
mesures = [22, 24, 26, 28, 23, 27]
for temp in mesures:
    if temp > Tseuil:
        print(f"Temp={temp}°C -> Ventilateur ON")
    else:
        print(f"Temp={temp}°C -> Ventilateur OFF")
// Squelette Arduino
int capteur = A1;     // Température
int ventil = 6;       // Ventilateur
int Tseuil = 25;
void setup(){ pinMode(capteur,INPUT); pinMode(ventil,OUTPUT); Serial.begin(9600); }
void loop(){
  int temp = analogRead(capteur);  // conversion à adapter selon capteur
  if(temp > Tseuil) digitalWrite(ventil,HIGH);
  else              digitalWrite(ventil,LOW);
  delay(1000);
}

Variante : signaler la surchauffe par buzzer ou LED rouge.

STI2D — SIN — Séance 1 • Onglets Cours & TP • simulateurs intégrés • ajouts (calibration, anti-bruit, hystérésis, extensions)