Arduino 2019-4: aide quizz
Mooc Semaine 1: outils
1. Quels sont les deux blocs qui doivent être présents obligatoirement dans un programme Arduino (deux choix possibles) ?
Avec le logiciel IDE Arduino, en sélectionnant Fichier/Nouveau on obtient la trame d’un programme contenant les 2 blocs obligatoires:
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
2. Une LED est branchée sur la broche 2 (avec l’autre patte sur GND). Parmi les fonctions ci-dessous, laquelle permet d’allumer cette LED ?
3. Je souhaite contrôler une LED branchée sur la broche 6, que devra obligatoirement contenir le bloc setup ?
5. Si je souhaite définir une variable appelée brocheLed qui a pour valeur 13 et qui est de type entier. Quelle est la bonne syntaxe ?
un langage de programmation est comme une langue étrangère, avec ses mots mais aussi ses régles de syntaxe. Donc il faut être précis:
digitalWrite(2, HIGH);
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.DigitalWrite
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/
pinMode(6, OUTPUT);
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PinMode
https://www.arduino.cc/en/Reference.PinMode
int brocheLed = 13;
sur Arduino UNO, la valeur int est compris de -32,768 à 32,767
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Int
https://www.arduino.cc/reference/en/language/variables/data-types/int/
4. Si je tape delay(10000) et que je téléverse mon programme, celui-ci se mettra en pause pendant une durée de ? seconde(s)
le paramètre de delay est en milliseconde; donc 10000 / 1000 –> 10 secondes
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Delay
https://www.arduino.cc/reference/en/language/functions/time/delay/
Mooc Semaine 2: Capteurs numériques
1. La fonction digitalRead permet de lire l’état d’une broche numérique. Que peut renvoyer cette fonction (plusieurs choix possibles) ?
HIGH et LOW
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.DigitalRead
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
2. Avec une tension de 9V, quelle devra être la valeur théorique de la résistance (en Ω) si l’on souhaite protéger la LED branchée en série ?
on va se servir de la formule de loi d’électricité dite loi d’Ohm : R = U⁄I
avec :
- U : Tension
- I : Intensité
- R : Résistance
il faut que la LED ait 2.2V (valeur raisonnable) à ses bornes.
on limite l’intensité à travers une LED à 20mA (= 0,02 A)
Nous avons du 9V. La chute de tension au travers de la résistance est de 9V – 2,2V = 6,8V. Ça nous donne donc R = 6,8V/0,02A = 340Ω.
3. Je souhaite lire un bouton branché sur la broche 6, que devra obligatoirement contenir le bloc setup ?
pinMode(6, INPUT);
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PinMode
https://www.arduino.cc/en/Reference.PinMode
4. Je souhaite utiliser une LED branchée sur la broche 12. Quelle sera la meilleure syntaxe pour déclarer ma constante ?
const int ledPin = 12;
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Const
https://www.arduino.cc/reference/tr/language/variables/variable-scope–qualifiers/const/
5 Nous viendrons lire l’état du bouton tous les X secondes. Quelle est la valeur de X ?
const int buttonPin = 2; const int ledPin = 13; int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } delay(5000); }
le paramètre de delay est en milliseconde; donc 5000 / 1000 –> 5 secondes
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Delay
https://www.arduino.cc/reference/en/language/functions/time/delay/
Mooc Semaine 3: capteurs analogiques
1. Je stocke le résultat de la fonction analogRead dans une variable appelée maVariable. Je souhaite utiliser la fonction map pour la passer dans l’intervalle suivant : 0→100. Le résultat sera stocké dans la variable appelée maNouvelleVariable. Quelle sera la bonne syntaxe ?
maNouvelleVariable = map(maVariable, 0, 1023, 0, 100);
Ré-étalonne un nombre d’une fourchette de valeur vers une autre fourchette.
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Map
https://www.arduino.cc/reference/en/language/functions/math/map/
2. La fonction analogRead permet de lire l’état d’une broche analogique. Que peut théoriquement renvoyer cette fonction (plusieurs choix possibles) ?
0 255 10
valeur renvoyée: int (0 to 1023) correspondant au résultat de la mesure effectuée
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.AnalogRead
https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
3. Je souhaite que mon programme Arduino puisse échanger du texte avec l’ordinateur (à une vitesse de 9600 bauds). Que devra contenir le bloc setup ?
Serial.begin(9600);
notons que la syntaxe est typique d’un langage de programmation objet: objet.méthode(valeur)
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Serialbegin
https://www.arduino.cc/reference/en/language/functions/communication/serial/
4. La LED a une polarité, elle a un sens. D’après vos connaissances, le cours et le wiki. Que se passera-t-il si la LED appelée LED1 est branchée à l’envers (comme indiqué dans le circuit ci-dessous) ?
Aucune des LED ne vont s’allumer
car quand une Led est branchée à l’envers, le courant ne passe plus
5.quelle valeur sera envoyée à la LED branchée sur la broche 13 si j’appuie sur le bouton branché sur la broche 2 (attention, il y a un piège) ?
int buttonState = LOW; void setup() { pinMode(13, OUTPUT); pinMode(2, INPUT); } void loop(){ digitalRead(2); if (buttonState == HIGH) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } }
LOW
la variable buttonState n’est pas modifiée dans le bloc loop et garde donc LOW.
Mooc Semaine 4: Librairies et sorties
1. Si on regarde le code suivant :
for(int uneBroche = 2; uneBroche < 8; uneBroche++) { digitalWrite(uneBroche, HIGH); }
Les LED branchées sur les broches de 2 à 7 vont s’allumer
for (initialization; condition; incrementation)
A chaque exécution de la boucle, la condition est testée; si elle est VRAIE, le bloc d’instructions et l’incrementation sont exécutés. puis la condition est testée de nouveau. Lorsque la condition devient FAUSSE, la boucle stoppe.
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.For
https://www.arduino.cc/reference/en/language/structure/control-structure/for/
2. Je souhaite utiliser un servomoteur branché sur la broche 9 et que j’appelle monServo
. Que devra forcément contenir mon programme ?
monServo.attach(9);
notons que la syntaxe est typique d’un langage de programmation objet: objet.méthode(valeur).
A l’objet monServo on peut appliquer 2 méthodes .attach(x) et .detach(y)
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Servoattach
https://www.arduino.cc/en/Reference/ServoAttach
3. Dans un montage avec un condensateur placé en parallèle d’un bouton poussoir. Si au lieu d’un condensateur de 100nF je mets un 100uF à la place, que se passe-t-il ?
il n’y a aucune influence sur les Leds !
4. Soit le code suivant :
for(int i = 1; i <= 8; i++) { Serial.println("meuh"); }
i=1 meuh
i=2 meuh
i=3 meuh
i=4 meuh
i=5 meuh
i=6 meuh
i=7 meuh
i=8 meuh
i=9 or i<=8 est faux –> fin de la boucle for
8 meuh !
5. Si on regarde le code suivant :
for(int i = 2; i < 4; i+=1) { Serial.println("bip bip"); for(int j = 2; j < 3; j+=1) { Serial.println("meuh"); } }