Vittascience : Une plateforme innovante pour enseigner la programmation
Vittascience est une plateforme pédagogique en ligne qui permet d’enseigner la programmation informatique et l’intelligence artificielle aux enfants de manière ludique et interactive. Elle propose une interface intuitive où les enfants peuvent coder en blocs, à la manière de Scratch, ou en code, pour ceux qui souhaitent progresser vers des langages plus complexes. L’interface en mode hybride, comprenant les modes blocs et code juxtaposés, permet de mieux comprendre le lien entre les deux modes de langage. Vittascience offre une transition en douceur entre ces deux modes, permettant aux enfants de développer leurs compétences à leur propre rythme.
Prise en main de la carte Arduino UNO et de l'interface Vittascience
prise_en_main_de_la_carte_arduino_uno_et_de_l_interface_vittascience.pdf
Mesurer la luminosité avec une photorésistance sur Arduino
mesurer_la_luminosite_avec_une_photoresistance_sur_arduino.pdf
Pour Téléverser le programme robot sur mBot1 à partir de l'interface Vittascience ( si “Televerser” ne fonctionne pas , passer par les étapes 1 et 2 …) :
1- Vider le cache de Google Chrome
2-Passer en navigation privée sur Google chrome
3- cliquer sur “Téléverser” ( connecter sur USB et allumer le mBot1 avant …)
4- choisir le port COM du mBot1 et faire connexion ( exemple: “ USB Serial (COM3)” sous Windows 11 ou “USB Serial (ttyUSB0)” sous Linux)
et c'est tout , dans la console série de vittascience tu dois voir :
Le programme utilise 8469 octets d'espace de stockage. (28%) Compilation réussie. Téléversement du programme ... Carte détectée: Arduino Nano w/ ATmega328 Programme Arduino envoyé avec succès dans la carte !"
robot-mbot-utiliser-les-led-rgb
robot_mbot_-_utiliser_les_led_rgb.pdf
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> MeRGBLed rgbled_board(7, 2); void setup() { } void loop() { rgbled_board.setColor(1, 255, 0, 0); rgbled_board.show(); rgbled_board.setColor(2, 51, 51, 255); rgbled_board.show(); delay(1000*0.5); rgbled_board.setColor(1, 51, 51, 255); rgbled_board.show(); rgbled_board.setColor(2, 255, 0, 0); rgbled_board.show(); delay(1000*0.5); }
Exercice- 1 : Le feu tricolore RGB du mBot
Objectif : programmer les LED RGB du mBot pour afficher plusieurs couleurs, puis les éteindre.
Matériel : un mBot classique avec sa carte mCore et un ordinateur équipé de Chrome pour se connecter à Vittascience. La carte mCore possède deux LED RGB contrôlables séparément ou ensemble. Les couleurs se règlent avec des valeurs de rouge, vert et bleu, de 0 à 255.
Consigne : crée dans mBlock un programme qui affiche chaque couleur pendant une seconde, puis éteint les LED.
Pour continuer :
Ajoute une boucle pour répéter le feu tricolore trois fois, et ensuite choisis deux couleurs et alterne-les
Utilise les blocs suivant :
À 440 hertz :
| Notes | Fréquences |
|---|---|
| DO (C4) | 261.63 Hz |
| RÉ (D4) | 293.66 Hz |
| MI (E4) | 329.63 Hz |
| FA (F4) | 349.23 Hz |
| SOL (G4) | 392 Hz |
| LA (A4) | 440 Hz |
| SI (B4) | 493.88 Hz |
| Do aigu | 523,25 Hz |
Exercice- 2 : Jouer de la musique avec le buzzer du mBot
Objectif : programmer le Buzzer du mBot pour jouer une musique.
Matériel : un mBot classique avec sa carte mCore et un ordinateur équipé de Chrome pour se connecter à Vittascience. La carte mCore possède un Buzzer pour émettre un son très basique
Consigne : crée dans mBlock un programme qui joue une petite musique .
Pour continuer :
Ajoute une boucle pour répéter la musique cinq fois.
Utilise les blocs suivant :
robot-mbot-utiliser-le-capteur-de-distance
robot_mbot_-_utiliser_le_capteur_de_distance.pdf
robot_mbot_-_utiliser_le_capteur_de_distance_-_partie_3_20251027_123737.ino.tar (Enlever .tar)
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> // Ultrasonic on PORT_3 MeUltrasonicSensor ultrasonic_3(PORT_3); MeDCMotor motor_L(9); MeDCMotor motor_R(10); void mBot_setMotorLeft(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_L.run((9) == M1 ? -(dir*speed) : (dir*speed)); } void mBot_setMotorRight(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_R.run((10) == M1 ? -(dir*speed) : (dir*speed)); } void setup() { } void loop() { if (ultrasonic_3.distanceCm() > 5) { mBot_setMotorRight(1, 25); mBot_setMotorLeft(1, 25); } else { mBot_setMotorRight(0, 0); mBot_setMotorLeft(0, 0); } }
Exercice- 3 : Mesurer une distance avec le robot mBot
Objectif : programmer le capteur de distance du mBot pour afficher le résultat dans la console.
Matériel : un mBot classique avec sa carte mCore et un ordinateur équipé de Chrome pour se connecter à Vittascience. La carte mCore possède un capteur de distance HC-SR04
Consigne : crée dans Vittascience un programme qui affiche la distance mesurée .
Pour continuer :
Créer un programme anti-obstacle qui arrête le mBot si la distance est < à 5cm est qui fait avancer le mBot si la distance est > à 5cm
Au démarrage
Répéter indéfiniment
Si la distance du capteur ultrason (port 3) est inférieure à 5 cm
Arrêter les moteurs
Sinon
Faire avancer le mBot à 50 % de puissance
Utiliser les blocs suivant
robot-mbot-controler-le-robot-avec-une-telecommande
robot_mbot_-_controler_le_robot_avec_une_telecommande.pdf
Exercice- 4 : Tester la telecommande du robot mBot
Objectif : programmer la telecommande du mBot pour verifier son fonctionnement.
Matériel : un mBot classique avec sa carte mCore et un ordinateur équipé de Chrome pour se connecter à Vittascience. La carte mCore possède un capteur de infrarouge pour la liaison avec une telecommande
Consigne : crée dans Vittascience un programme qui test la telecommande .
Au démarrage
Répéter indéfiniment
Si le bouton A de la télécommande est appuyé
Allumer les LED en rouge
Sinon
Éteindre les LED
Pour continuer :
Créer un programme de verrouillage par télécommande : le code est 1–2–3. Tant qu’il n’est pas saisi, le mBot reste arrêté.
Au démarrage
mettre étape à 0
mettre autorisé à faux
arrêter les moteurs
Répéter indéfiniment
Si autorisé = faux :
Si le bouton 1 est appuyé :
si étape = 0, mettre étape à 1
sinon, remettre étape à 0
Si le bouton 2 est appuyé :
si étape = 1, mettre étape à 2
sinon, remettre étape à 0
Si le bouton 3 est appuyé :
si étape = 2, mettre autorisé à vrai
sinon, remettre étape à 0
Si autorisé = vrai :
piloter le mBot avec les flèches de la télécommande ou allumer les leds en Rouge
Utiliser les blocs suivant
robot_mbot_-_controler_le_robot_avec_une_telecommande_-_partie_3_20251027_144323.ino.tar ( enlever .tar)
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> MeIR ir; MeDCMotor motor_L(9); MeDCMotor motor_R(10); void mBot_setMotorLeft(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_L.run((9) == M1 ? -(dir*speed) : (dir*speed)); } void mBot_setMotorRight(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_R.run((10) == M1 ? -(dir*speed) : (dir*speed)); } void setup() { ir.begin(); } void loop() { if (ir.keyPressed(64)) { mBot_setMotorRight(1, 25); mBot_setMotorLeft(1, 25); } else if (ir.keyPressed(25)) { mBot_setMotorRight(-1, 25); mBot_setMotorLeft(-1, 25); } else if (ir.keyPressed(7)) { mBot_setMotorRight(1, 25); mBot_setMotorLeft(-1, 25); } else if (ir.keyPressed(9)) { mBot_setMotorRight(-1, 25); mBot_setMotorLeft(1, 25); } else { mBot_setMotorRight(0, 0); mBot_setMotorLeft(0, 0); } }
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> MeRGBLed rgbled_board(7, 2); MeIR ir; void serial_setupConnection(long baudrate) { Serial.begin(baudrate); while (!Serial) { Serial.println("En attente de l'ouverture du port série..."); delay(1000); } Serial.println("Port série activé. Baudrate: " + String(baudrate)); delay(50); } void setup() { ir.begin(); serial_setupConnection(9600); rgbled_board.setColor(0, 255, 0, 0); rgbled_board.show(); while (!(ir.keyPressed(12))) { } while (!(ir.keyPressed(24))) { } while (!(ir.keyPressed(94))) { } rgbled_board.setColor(0, 51, 204, 0); rgbled_board.show(); Serial.println("C\'est bon vous pouvez démarrez !"); Serial.println("@music:261.63|"); delay(1000*1); } void loop() { }
robot_mbot_-_utiliser_le_bouton.pdf
robot_mbot_-_utiliser_le_bouton_-_partie_3_20251027_15143.ino.tar(enlever .tar)
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> MeDCMotor motor_L(9); MeDCMotor motor_R(10); int buttonPressed() { return analogRead(A7) <= 10 ? 1 : 0; } void mBot_setMotorLeft(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_L.run((9) == M1 ? -(dir*speed) : (dir*speed)); } void mBot_setMotorRight(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_R.run((10) == M1 ? -(dir*speed) : (dir*speed)); } void setup() { pinMode(A7,INPUT); } void loop() { if (buttonPressed()) { mBot_setMotorRight(1, 25); mBot_setMotorLeft(1, 25); delay(1000*1); mBot_setMotorRight(-1, 25); mBot_setMotorLeft(-1, 25); delay(1000*1); mBot_setMotorRight(0, 0); mBot_setMotorLeft(0, 0); } }
robot-mbot-utiliser-les-suiveurs-de-ligne
robot_mbot_-_utiliser_les_suiveurs_de_ligne.pdf
correctionsuiviligneexo4_vittascience_20251020_193057.ino.zip
Robot circuit Vittascience test gauchedroite variables 20251121
#include <MeMCore.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> // Line Finder on PORT_2 MeLineFollower lineFinder_2(PORT_2); MeRGBLed rgbled_board(7, 2); MeDCMotor motor_L(9); MeDCMotor motor_R(10); int vitesse; int vitessem; int droite; int gauche; int buttonPressed() { return analogRead(A7) <= 10 ? 1 : 0; } void mBot_setMotorLeft(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_L.run((9) == M1 ? -(dir*speed) : (dir*speed)); } void mBot_setMotorRight(int8_t dir, int16_t speed) { speed = speed/100.0*255; motor_R.run((10) == M1 ? -(dir*speed) : (dir*speed)); } void setup() { pinMode(A7,INPUT); while (!buttonPressed() ) {} vitesse = 50; vitessem = 50; droite = 0; gauche = 0; } void loop() { if (!lineFinder_2.readSensor2() && !lineFinder_2.readSensor1()) { rgbled_board.setColor(1, 0, 0, 0); rgbled_board.show(); rgbled_board.setColor(2, 0, 0, 0); rgbled_board.show(); mBot_setMotorRight(1, vitesse); mBot_setMotorLeft(1, vitessem); } else if (!lineFinder_2.readSensor1()) { rgbled_board.setColor(2, 0, 0, 0); rgbled_board.show(); rgbled_board.setColor(1, 255, 255, 255); rgbled_board.show(); mBot_setMotorRight(1, vitesse); mBot_setMotorLeft(0, 0); gauche = 1; droite = 0; } else if (!lineFinder_2.readSensor2()) { rgbled_board.setColor(1, 0, 0, 0); rgbled_board.show(); rgbled_board.setColor(2, 255, 255, 255); rgbled_board.show(); mBot_setMotorLeft(1, vitesse); mBot_setMotorRight(0, 0); gauche = 0; droite = 1; } else { if (!!lineFinder_2.readSensor2() && !!lineFinder_2.readSensor1()) { rgbled_board.setColor(1, 255, 255, 255); rgbled_board.show(); rgbled_board.setColor(2, 255, 255, 255); rgbled_board.show(); if (droite == 1) { mBot_setMotorRight(1, 0); mBot_setMotorLeft(1, vitesse); } if (gauche == 1) { mBot_setMotorRight(1, vitesse); mBot_setMotorLeft(1, 0); } } } }