Vous êtes sur la page 1sur 14

BLOC ELECTRONIQUE

SEQUENCE 8 - CORBEILLE D’EXERCICES

1. LES VARIABLES 2
EXERCICE 1 2
EXERCICE 2 2
EXERCICE 3 3
EXERCICE 4 5
EXERCICE 5 6

3. LA COMMUNICATION SERIE 7
EXERCICE 1 7
EXERCICE 2 7
EXERCICE 3 8
EXERCICE 4 8
EXERCICE 5 9

4. LES TABLEAUX 10
EXERCICE 1 10
EXERCICE 2 10
EXERCICE 3 10
EXERCICE 4 11
EXERCICE 5 11

5. LES FONCTIONS 12
EXERCICE 1 12
EXERCICE 2 12
EXERCICE 3 13
EXERCICE 4 14
EXERCICE 5 14

ecole-ingenieurs.cesi.fr
SEQUENCE 8 - CORBEILLE D’EXERCICES

1. LES VARIABLES

EXERCICE 1

Déclarer les variables suivantes dans un même programme :

 var1 : une variable globale de type entier, initialisée avec la valeur 0


 var2 : une variable globale de type caractère, initialisée avec la valeur « c »
 var3 : une variable locale (de portée sur la fonction setup) de type réel
 var4 : une variable locale (de portée sur la fonction setup) de type booléen, initialisée avec
la valeur TRUE
 var5 : une constante globale de type entier de valeur -5

EXERCICE 2

Quel est le type de variable le mieux adapté à chacune des situations suivantes sur Arduino ?

 Une variable pouvant prendre les valeurs : 6, 64, 640, 6400, 64000
 Un compteur pour parcourir tous les éléments d’un tableau de 100 réels
 Récupérer la valeur de la fonction digitalread()
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
 Récupérer le résultat de la division de 2 entiers compris entre 1 et 100 au dixième près.
 Définir une variable contenant un numéro de broche de la carte Arduino

CORBEILLE D’EXERCICES p.2


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 3

On considère le code suivant :

const int sensorPin = A0;


const float baselineTemp = 20.0;

void pinWrite(boolean a, boolean b, boolean c) {


digitalWrite(2, a);
digitalWrite(3, b);
digitalWrite(4, c);
}

void setup() {
Serial.begin(9600);
for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}

void loop() {
int sensorVal = analogRead(sensorPin);

Serial.print("sensor Value: ");


Serial.print(sensorVal);

float voltage = (sensorVal / 1024.0) * 5.0;

Serial.print(", Volts: ");


Serial.print(voltage);

Serial.print(", degrees C: ");


float temperature = (voltage - .5) * 100;
Serial.println(temperature);

if (temperature < baselineTemp + 2) {


pinWrite(LOW, LOW, LOW);

CORBEILLE D’EXERCICES p.3


SEQUENCE 8 - CORBEILLE D’EXERCICES

}
else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) {
pinWrite(HIGH, LOW, LOW);
}
else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) {
pinWrite(HIGH, HIGH, LOW);
}
else if (temperature >= baselineTemp + 6) {
pinWrite(HIGH, HIGH, HIGH);
}

delay(1);
}

Lister toutes les variables utilisées dans le programme :

Nom de la variable Type Portée (globale, locale). Si locale, Constante (oui/non)


précisez la portée

CORBEILLE D’EXERCICES p.4


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 4

- Quelles seront les valeurs contenues dans les variables a et b après exécution des instructions
suivantes ?
int a = 5;
int b=0;
b = b + 4;
a = a + 1;
b = b – 4;

- Quelles seront les valeurs contenues dans les variables c et d après exécution des instructions
suivantes ?
int c,d;
c = 5;
d = 7;
c = d;
d = c;

- Quelles seront les valeurs contenues dans les variables e et f après exécution des instructions
suivantes ?
int e,f;
e = 6;
f = 9;
f + e;
e - 1;

- Quelles seront les valeurs contenues dans les variables g et h après exécution des instructions
suivantes ?
float g = 3.25;
float h = 1;
g = h + g;
h = g + h;

- Quelles seront les valeurs contenues dans les variables i et j après exécution des instructions
suivantes ?
boolean i=true;
boolean j=false;
if (j)
i = not(j);
else
j = i;

- Quelles seront les valeurs contenues dans les variables m et n après exécution des
instructions suivantes ?
int m = 5;
for (int n=0 ; n<10 ; n++){
m = m + 1;
}

CORBEILLE D’EXERCICES p.5


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 5

- Ecrire un programme permettant d’intervertir les valeurs contenues dans 2 variables a et b


de type float.

- Ecrire un programme permettant d’afficher la table de multiplication des nombres 1 à 20.

- Ecrire un programme qui tire 5 fois de suite au hasard une valeur comprise entre 0 et 100
et qui stocke dans une variable max la valeur maximum obtenue lors de ces 5 tirages.

Pour la génération de valeurs aléatoires :


https://www.arduino.cc/reference/en/language/functions/random-numbers/random/

CORBEILLE D’EXERCICES p.6


SEQUENCE 8 - CORBEILLE D’EXERCICES

3. LA COMMUNICATION SERIE

EXERCICE 1

On souhaite initialiser la vitesse de transmission entre la carte et le PC à 2400 bauds.


Donner l’instruction correspondante et positionner la correctement dans un programme Arduino.

EXERCICE 2

On affecte à une variable xxx une valeur aléatoire comprise entre -20 et 40 au début du programme.
Le programme affiche alors cette valeur dans une phrase. Puis selon la valeur de xxx, on affiche un
texte différent :
Si xxx est compris entre -20 et 0, on affiche : « Ca caille ! »
Si xxx est compris entre 0 et 20 , on affiche : « Ni chaud ni froid. »
Si xxx est compris entre 20 et 40, on affiche : « Ca crame ! »

Exemple :

xxx reçoit la valleur -5. Le programme affiche :


La température extérieure est : -5 degres
Ca caille !

CORBEILLE D’EXERCICES p.7


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 3

Soit le code :

void setup()
{
Serial.begin(9600);
}

void loop()
{
char i = 0;
char lettre = 'a';

Serial.println("------ ca commence ------");

for(i=0; i<26; i++)


{
Serial.print(lettre);
lettre = lettre + 1;
delay(250);
}
Serial.println("");

delay(5000);
}

Que fait ce programme ?


Tester le.
Expliquer l’affichage observé.

EXERCICE 4

Ecrire le programme suivant :

L’utilisateur saisit un nombre dans la console. Le programme affiche alors le double du nombre saisi.

CORBEILLE D’EXERCICES p.8


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 5

Ecrire un programme qui tire une valeur aléatoire comprise entre 0 et 100 et qui la stocke dans la
variable mystere.

L’utilisateur fait des propositions de nombre dans la console.

- Si le nombre saisi est plus petit que le nombre mystère, le programma affiche « plus
grand mon grand ! »
- Si le nombre saisi est plus grand que le nombre mystère, le programme affiche « plus petit
mon petit ! »
- Si les 2 nombres sont égaux, le programme affiche « bravo ! »

CORBEILLE D’EXERCICES p.9


SEQUENCE 8 - CORBEILLE D’EXERCICES

4. LES TABLEAUX

Les programmes demandés ici ne seront exécutés qu’une seule fois. Vous pouvez donc les
implémenter dans la fonction setup() de votre programme Arduino.

EXERCICE 1

Créer un tableau à 1 dimension contenant les entiers de 1 à 10 dans l’ordre.

Afficher la valeur minimale du tableau.

Afficher la valeur maximale du tableau.

Afficher tous les éléments du tableau du plus petit au plus grand.

Affiche tous les éléments du tableau du plus grand au plus petit.

EXERCICE 2

Créer un tableau d’entiers à 1 dimension contenant 30 valeurs aléatoires comprises entre 1 et 100.

Parcourir le tableau et afficher la valeur minimale et la valeur maximale.

Afficher le nombre d’éléments du tableau dont la valeur est supérieure à 30.

Pour la génération de valeurs aléatoires :

https://www.arduino.cc/reference/en/language/functions/random-numbers/random/

EXERCICE 3

Créer 1 tableau t1 de réels à 1 dimension contenant 5 valeurs aléatoires comprises entre 1 et 5.

Ecrire les instructions permettant de vérifier si les valeurs du tableau sont triées par ordre croissant.

CORBEILLE D’EXERCICES p.10


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 4

Créer un tableau d’entiers à 1 dimension contenant 30 valeurs aléatoires comprises entre 1 et 100.

Ecrire les instructions permettant de vérifier si une valeur saisie par l’utilisateur est présente dans le
tableau. Le programme affichera la position de l’élément dans le tableau.

EXERCICE 5

Soit le tableau t déclaré ainsi :

float t[3][4] ;

Ecrire les instructions permettant de calculer, dans une variable, la somme des éléments de t.

CORBEILLE D’EXERCICES p.11


SEQUENCE 8 - CORBEILLE D’EXERCICES

5. LES FONCTIONS

EXERCICE 1

Ecrire une fonction nommée Affichage qui ne prend aucun paramètre et qui ne renvoie aucune
valeur. La fonction affichera simplement « geek inside ».

Appeler cette fonction dans la fonction setup() du programme.

EXERCICE 2

Soit le code :
int x=54;
int y=67;

void setup(){

void loop()
{

int monAddition(int param1, int param2)


{
int somme = 0;
somme = param1 + param2;
return somme;
}
Compléter le programme pour qu’il affiche le résultat de l’appel de la fonction monAddition sur x et
y. Tester avec différentes valeurs de x et y.

CORBEILLE D’EXERCICES p.12


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 3

Modifier le code suivant en créant une fonction calcul qui réalise l’opération permettant d’obtenir
un résultat en fonction de 3 paramètres.
int x=12;
int y=89;
int z=56;

void setup(){
int resultat1, resultat2, resultat3;

resultat1 = x+y;
if (resultat1 > z)
resultat1 = x+y-z;
else
resultat1 = z-x-y;

resultat2 = x+z;
if (resultat2 > y)
resultat2 = x+z-y;
else
resultat2 = y-x-z;

resultat3 = y+z;
if (resultat3 > x)
resultat3 = y+z-x;
else
resultat3 = x-y-z;
}

void loop(){
}

Tester avec différentes valeurs de x, y et z.

CORBEILLE D’EXERCICES p.13


SEQUENCE 8 - CORBEILLE D’EXERCICES

EXERCICE 4

Pour chacune des fonctions prédéfinies suivantes, indiquer le nom, le type de retour et la liste de
paramètres attendus :

- delay
- digitalRead
- setup
- loop
- analogRead
- pinmode

EXERCICE 5

On considère le montage électronique suivant :

Ecrire une fonction shutDown permettant d’éteindre toutes les LEDS.

Ecrire une fonction wakeUp permettant d’allumer toutes les LEDS.

Ecrire le programme complet permettant de faire clignoter les LEDS en faisant appel aux fonctions
précédentes. Vous choisirez le rythme du clignotement.

CORBEILLE D’EXERCICES p.14

Vous aimerez peut-être aussi