L'information source est d'abord acquise grâce à un capteur, qui va effectuer des mesures de la grandeur physique d'intérêt. Le capteur produit, comme résultat de ses mesures, un signal électrique de type logique, analogique ou numérique.
Le signal produit par le capteur est ensuite traité, typiquement par un programme exécuté sur un microcontrôleur, dans le cadre de petits systèmes, voire sur un ordinateur plus puissant, doté d'un ou plusieurs microprocesseurs, pour de gros systèmes.
Enfin, une fois le signal traité, vient une phase de communication du résultat du traitement. L'information peut, par exemple, être restituée sous forme d'une visualisation, après avoir été stockée dans une base de données. Un autre scénario possible est l'envoi d'une consigne vers un système, pour commander une action ou configurer des paramètres de ce dernier.
La chaine d'information commence par l'acquisition d'une mesure de la grandeur physique d'intérêt, puis vient un traitement des données collectées et enfin, une communication des résultats du traitement.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Acquérir des données du capteur
La première étape de la chaine de transmission consiste donc en l'acquisition de données à partir des différents capteurs choisis. Dans le cadre du système développé dans ce cours, trois capteurs ont été choisis et présentés dans le chapitre précédent. La température est mesurée à l'aide d'un LM35, l'humidité relative à l'aide d'un DHT11 et, enfin, le niveau sonore avec un module de détection sonore.
Pour choisir le capteur le plus adéquat, pour mesurer une grandeur physique donnée, plusieurs critères peuvent être pris en compte :
Il faut évidemment d'abord vérifier que la plage de mesures du capteur couvre les valeurs qu'il faudra être capable de mesurer, dans le cadre du système développé.
Ensuite, il faut s'intéresser aux éventuelles contraintes imposées par le projet, et s'assurer que les caractéristiques du capteur soient compatibles avec ces dernières. Il se peut, par exemple, qu'un certain niveau de précision, qu'une résolution minimale ou encore qu'un temps de réponse minimal soit imposé.
On peut également prendre en compte les caractéristiques en lien avec la qualité du capteur, telles que sa fiabilité, sa fidélité ou encore sa gamme de températures d'utilisation. En fonction du système développé, un simple capteur pourrait suffire, ou alors il se peut qu'il faille monter en qualité.
Enfin, il ne faut pas non plus négliger le prix du capteur, notamment par rapport au budget total prévu pour développer le système. Ce budget pourrait être plus faible dans le cadre d'un prototype et ensuite plus élevé dans le cadre d'une version plus avancée, une fois que la preuve de concept a été faite et validée.
On peut aussi s'intéresser au nombre de capteurs qui seront nécessaires pour le système à développer. Comme on l'a vu au chapitre précédent, certains capteurs peuvent mesurer plusieurs grandeurs physiques, comme le DHT11 qui mesure l'humidité relative et la température. N'avoir qu'un capteur au lieu de deux peut rendre plus faciles les traitements effectués dans la suite de la chaine d'information, pour autant que ses caractéristiques satisfont les demandes du projet, évidemment. Cette question particulière de la mesure de la température, avec le LM35 ou le DHT11 est abordée plus loin, à la section 2.3.
Enfin, il faut également s'assurer que les différents capteurs choisis sont compatibles entre eux, le plus possible en tout cas, notamment par rapport à leur type de signal de sortie et à leurs tensions d' alimentation possibles. Au plus il y aura de l'hétérogénéité, au plus la suite de la chaine d'information sera complexe à réaliser.
Donner la liste des capteurs du kit arduino.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Traiter des données par l'Arduino
La deuxième étape de la chaine de transmission consiste donc à traiter les données qui proviennent des capteurs. Cette étape est typiquement réalisée par un programme exécuté sur une machine, que ce soit un simple microcontrôleur ou un ordinateur plus puissant composé d'un ou plusieurs microprocesseurs.
Le but de cette étape est de récupérer toutes les données provenant de plusieurs capteurs pour les traiter, et pour les analyser et prendre des décisions. Le traitement des données consiste en une interprétation des signaux électriques reçus des capteurs, selon leur type. Les données de type numérique vont souvent nécessiter plus de travail que les données logiques ou analogiques. On peut également, parfois, devoir transformer, interpréter ou vérifier les données reçues. Rappelez-vous, par exemple, du DHT11, vu à la section 1.3, qui envoie des trames de 40 bits contenant les valeurs mesurées de l'humidité relative et de la température (chacune sur 16 bits), ainsi qu'un code de 8 bits utilisé pour vérifier s'il y a eu des erreurs de transmission sur le bus 1-Wire. Le traitement des données provenant de ce capteur nécessitera beaucoup de travail.
Dans ce cours, on va travailler avec l'Arduino Uno , présentée sur la figure 2, une simple carte électronique open source sur laquelle se trouve un microcontrôleur ATmega328P d'architecture Atmel, autour duquel se trouvent toute une série d'autres composants, qui vont faciliter sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino Uno est une simple carte électronique open source composée d'un microcontrôleur ATmega328P et d'une série de composants facilitant sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino possède de nombreuses pins, lui permettant de communiquer avec d'autres circuits, notamment des capteurs. L'Arduino Uno possède précisément 14\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">14 pins numériques et 6\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">6 pins analogiques, toutes capables de fonctionner en entrée ou en sortie. D'autres versions de l'Arduino possèdent un plus grand nombre de pins. La tension de fonctionnement de ces 20\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">20 pins est de 5 V, la même que celle de l'Arduino. On pourra donc aisément utiliser les trois capteurs que l'on a sélectionné pour le système de surveillance sonore développé dans ce cours.
Enfin, l'Arduino se programme très facilement grâce à l' environnement de développement intégré Arduino IDE et au langage de programmation Arduino, une version spécifique du langage C++, avec une librairie standard contenant des fonctions spécifiques à l'Arduino. Un programme Arduino, appelé sketch, est compilé puis chargé sur le microcontrôleur de l'Arduino pour y être exécuté. Un sketch se compose de trois parties, inspirées du langage de programmation Processing : (a) une partie en-tête, avec notamment des imports de librairies et des définitions de variables globales, (b) la fonction d'initialisation (setup) exécutée une seule fois au lancement du sketch, (c) et, enfin, la fonction boucle principale (loop) dont le contenu est exécuté en boucle, se répétant indéfiniment.
La figure 3 montre un exemple de sketch Arduino, qui fait clignoter une LED connectée à la pin numérique 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, en produisant un signal électrique qui alterne entre un signal haut et un signal bas, en attendant une seconde entre les transitions :
Dans l'en-tête du sketch, on définit simplement le mot LED comme étant équivalent à 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, le numéro de la pin numérique sur laquelle la LED a été connectée.
Dans la fonction d'initialisation, on configure la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 en mode sortie, à l'aide de la fonction pinMode, c'est-à-dire que le microcontrôleur de l'Arduino va pouvoir envoyer un signal vers le monde extérieur via cette pin, en l'occurrence alimenter ou non la LED avec une tension de 5 V.
Enfin, dans la fonction boucle principale, on va répéter indéfiniment quatre opérations : (a) envoyer un signal haut vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 avec la fonction digitalWrite, appelée avec HIGH comme second paramètre, (b) attendre 1000 ms, c'est-à-dire une seconde, (c) envoyer un signal bas vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, de nouveau avec digitalWrite, mais appelée cette fois-ci avec LOW comme second paramètre, (d) et, enfin, encore attendre 1000 ms.
Ce très simple exemple de sketch vous montre la facilité avec laquelle on peut programmer la carte électronique Arduino Uno.
1
#define LED 7
2
3
voidsetup() {
4
pinMode(LED, OUTPUT);
5
}
6
7
voidloop() {
8
digitalWrite(LED, HIGH);
9
delay(1000);
10
digitalWrite(LED, LOW);
11
delay(1000);
12
}
Un sketch Arduino se compose de trois parties, à savoir une en-tête, la fonction d'initialisation qui s'exécute une fois au lancement et la fonction boucle principale dont le contenu se répète en boucle indéfiniment.
Avec l'Arduino Uno, on va donc pouvoir, sans problèmes, collecter les données provenant du LM35, du DHT11 et du module de détection sonore, dans le cadre du système de surveillance du niveau sonore aux alentours d'un aéroport développé dans ce livre. On verra comment traiter les données envoyées par chacun des capteurs dans la section 2.2.
Donner des exemples de microcontroller.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Communiquer des données vers l'extérieur
La dernière étape de la chaine de transmission est la communication des données qui ont été collectées, analysées et traitées. Elle peut prendre plusieurs formes, selon la communication qui est faite.
Une première possibilité de communication est l'envoi d'une consigne, ou d'un signal de commande, depuis la machine qui a traité les données du capteur vers une autre machine, un appareil, un moteur, etc. Par exemple, un thermostat mesure la température ambiante et la compare ensuite avec une température seuil configurée. Si la température mesurée est inférieure au seuil, le thermostat envoie un signal vers la chaudière pour la démarrer, pour chauffer la pièce.
La communication peut aussi simplement consister en l'envoi des données collectées vers une autre machine, plus puissante, qui va pouvoir faire des traitements plus avancés. Par exemple, un serveur dans le cloud peut stocker des données reçues et proposer une interface de visualisation de ces dernières, sous forme d'un dashboard. La figure 4 montre un exemple de dashboard qui présente des données d'inscriptions à un collège. Il a été généré sur le service cloud Visualize Free (disponible ici : https://www.visualizefree.com), qui permet de gratuitement réaliser des visualisations.
The Grove Beginner Kit has a plug and plays unboxing demo, where you first plug in the power to the board, you get the chance to experience all the sensors in one go! Use the button and rotary potentiometer to experience each sensor demo!
Arduino IDE is an integrated development environment for Arduino, which is used for single-chip microcomputer software programming, downloading, testing and so on.
Download and Install Arduino IDE for your desired operating system here.
Arduino connects to the PC via a USB cable. The USB driver depends on the type of USB chip you're using on your Arduino. Note: USB chips are usually printed on the back of the development board.
Download the CP2102 USB Driver. Note: Download according to your OS.
After the driver installation is completed, connect Arduino to the USB port of PC with a USB cable.
For Windows users: You can see it in My Computer -> Properties -> Hardware -> Device Management. A COM will appear.
For Mac OS users: You can navigate to on the top left corner, and choose About this Mac -> System Report... -> USB. A CP2102 USB Driver should appear.
If the driver is not installed, or if the driver is installed incorrectly (not matching the chip model), it will appear as an \"unknown device\" in the device manager. At this point, the driver should be reinstalled.
1.Open the Arduino IDE on your PC. 2.Click on Tools -> Board-> Arduino AVR Boards-> Arduino Uno to select the correct Development Board Model. Select Arduino Uno as Board.
3.Click Tools -> Port to select the correct Port (the Serial Port showed in Device Manager in the previous step). In this case, COM11 is selected. For Mac OS users, it should be /dev/cu.SLAB_USBtoUART.
4.Create a new Arduino file and name it Hello.ino, then copy the following code into it:
voidsetup(){
Serial.begin(9600);// initializes the serial port with a baud rate of 9600
}
voidloop(){
Serial.println(\"hello, world\");// prints a string to a serial port
delay(1000);//delay of 1 second
}
5.In the upper left corner of the Arduino IDE, there are two buttons, Verify and Upload. First, press the Verify button(✓) to compile. After the compilation is successful, press the upload button(→).
6.Navigate to Tools -> Serial Monitor, or click the Serial Monitor in the upper right corner(Magnifier Symbol), you can see the program running results:
Note: If you installed the portable Arduino IDE from our USB Drive, you can find all the module demos in the Files -> Sketch Book, as well as all the module libraries, are pre-installed with Arduino IDE!
Note: All modules are pre-wired on a single circuit board, so no cables and soldering are needed. However, if you break out the modules and want to connect them with Grove cables, please kindly check the Breakout Guide.
We have completed the output \"Hello world\" program. Now let's learn how to light the LED module. We know the three basic components of a control system: Input, Control, and Output. But lighting up LED uses only the output, not the input. Seeeduino is the control unit, the LED module is the output unit and the output signal is a digital signal.
Background Information:
What is Digital Signal
Digital signal: Digital signal refers to the value of the amplitude is discrete, the amplitude is limited to a finite number of values. In our controller, the digital signal has two states: LOW(0V) for 0; HIGH(5V) for 1. So sending a HIGH signal to LED can light it up.
Components Involved
Seeeduino Lotus
Grove LED
Grove Cable(If Broken out)
Hardware connection
Module connection
Default connection by PCB stamp hole.
Connect the Seeeduino to the computer through the USB cable.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//LED Blink
//The LED will turn on for one second and then turn off for one second
intledPin=4;
voidsetup(){
pinMode(ledPin,OUTPUT);
}
voidloop(){
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}
Code Analysis
setup(){
}
The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc. The setup() function will only run once, after each powerup or reset of the Arduino board.
loop(){
}
After creating a setup() function, which initializes and sets the initial values, the loop() function does precisely what its name suggests, and loops consecutively, allowing your program to change and respond. Use it to actively control the Arduino board.
intledPin=4;\n
Description:
Converts a value to the int data type.
Syntax:
int(x) or (int)x (C-style type conversion)
Parameters:
x: a value. Allowed data types: any type.
Assigned an int type 4 to variable named ledPin.
pinMode(ledPin,OUTPUT);\n
Description:
Configures the specified pin to behave either as an input or an output. See the Digital Pins page for details on the functionality of the pins.
As of Arduino 1.0.1, it is possible to enable the internal pull-up resistors with the mode INPUT_PULLUP. Additionally, the INPUT mode explicitly disables the internal pullups.
Syntax:
pinMode(pin, mode)
Parameters:
pin: the Arduino pin number to set the mode of.
mode: INPUT, OUTPUT, or INPUT_PULLUP.
Setting ledPin to the output mode.
digitalWrite(ledPin,HIGH);\n
Description:
Write a HIGH or a LOW value to a digital pin.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the Digital Pins tutorial for more information.
If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts as a large current-limiting resistor.
Syntax:
digitalWrite(pin, value)
Parameters:
pin: the Arduino pin number.
value: HIGH or LOW.
When we set the ledPin as output, HIGH means sending high level to the pin, LED turns on.
digitalWrite(ledPin,LOW);\n
When we set the led as output, low stands for sending low level to the pin, LED turns off.
delay(1000);\n
Description:
Pauses the program for the amount of time (in milliseconds) specified as a parameter. (There are 1000 milliseconds in a second.)
Syntax:
delay(ms)
Parameters:
ms: the number of milliseconds to pause. Allowed data types: unsigned long.
Delay the program by 1000ms(1s).
Demo Effect and Serial Print Result:
The LED module will be 1 second on and 1 second off.
LED Brightness Adjustment:
On the Grove LED module, there is a variable resistor that can be adjusted using a screw driver. Twist it to make the LED light up brighter!
Breakout Guide
If modules are broken out from the board. Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4.
The first thing we need to know is that the input of the button is a digital signal, and there are only two states, 0 or 1, so we can control the output based on those two states.
Practice: Use button to turn ON and OFF the LED module
Components Involved
Seeeduino Lotus
Grove LED
Grove Button
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Button
Control: Seeeduino
Output: LED module
Both the sensor and the LED use digital signals, so they should be connected to digital interfaces.
Software code:
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Button to turn ON/OFF LED
//Constants won't change. They're used here to set pin numbers:
constintbuttonPin=6;// the number of the pushbutton pin
constintledPin=4;// the number of the LED pin
// variables will change:
intbuttonState=0;// variable for reading the pushbutton status
voidsetup(){
// initialize the LED pin as an output:
pinMode(ledPin,OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin,INPUT);
}
voidloop(){
// read the state of the pushbutton value:
buttonState=digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if(buttonState==HIGH){
// turn LED on:
digitalWrite(ledPin,HIGH);
}else{
// turn LED off:
digitalWrite(ledPin,LOW);
}
}
Code Analysis
pinMode(ledPin,OUTPUT);\n
Define LED as the output unit.
pinMode(buttonPin,INPUT);\n
Define button as the input unit.
buttonState=digitalRead(buttonPin);\n
Description:
Reads the value from a specified digital pin, either HIGH or LOW.
Syntax:
digitalRead(pin)
Parameters:
pin: the Arduino pin number you want to read
This function is used to read the states of digital pins, either HIGH or LOW. When the button is pressed, the state is HIGH, otherwise is LOW.
if(buttonState==HIGH){
digitalWrite(ledPin,HIGH);
}else{
digitalWrite(ledPin,LOW);
}
}
Description:
The if…else allows greater control over the flow of code than the basic if statement, by allowing multiple tests to be grouped. An else clause (if at all exists) will be executed if the condition in the if statement results in false. The else can proceed another if test, so that multiple, mutually exclusive tests can be run at the same time.
Each test will proceed to the next one until a true test is encountered. When a true test is found, its associated block of code is run, and the program then skips to the line following the entire if/else construction. If no test proves to be true, the default else block is executed, if one is present, and sets the default behaviour.
Note that an else if block may be used with or without a terminating else block and vice versa. An unlimited number of such else if branches are allowed.
Syntax:
if(condition1){
//do Thing A
}
elseif(condition2){
//do Thing B
}
else{
//do Thing C
}
The usage of the statement is: if the logical expression in parentheses is true, execute the statement in curly braces after if, if not, execute the statement in curly braces after the else. If the state of the button is high, the LED pin outputs a high level and turn the LED on, else turn LED off.
Demo Effect and Serial Print Result:
Pressing the button will turn the LED module on.
Breakout Guide
Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4. Connect the Grove Button to digital interface D6.
"},{"edit":" "}],[{"text":"
Application 4: Controlling the Frequency of the Blink¶
In the last section, we studied that button only has two states, ON/OFF state corresponding 0V and 5V, but in practice, we often counter the need for many states, not just 0V and 5V. Then you need to use Analog Signal! Rotary Potentiometer is a classic example that uses an analog signal.
Background Information:
What is Analog Signal
Analog signals: Signals vary continuously in time and value, and the amplitude, frequency, or phase of the signal changes continuously at any time, such as the current broadcast sound signal, or image signal, etc. The analog signal has sine wave and triangle wave and so on. The analog pins of your microcontroller can have between 0V and 5V is mapped to a range between 0 and 1023 where 1023 is mapped as 5V and 512 is mapped as 2.5v and etc.
Components Involved
Seeeduino Lotus
Grove LED
Grove Rotary Switch
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Rotary Potentiometer
Control: Seeeduino Lotus
Output: LED module
The input is an analog signal, so it is connected to the analog signal interface, the LED module is connected to the digital signal interface.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Rotary controls LED
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
introtaryValue=0;// variable to store the value coming from the rotary
voidsetup(){
// declare the ledPin as an OUTPUT:
pinMode(ledPin,OUTPUT);
pinMode(rotaryPin,INPUT);
}
voidloop(){
// read the value from the sensor:
rotaryValue=analogRead(rotaryPin);
// turn the ledPin on
digitalWrite(ledPin,HIGH);
// stop the program for <sensorValue> milliseconds:
delay(rotaryValue);
// turn the ledPin off:
digitalWrite(ledPin,LOW);
// stop the program for for <sensorValue> milliseconds:
delay(rotaryValue);
}
Code Analysis
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
Description:
You may find that we define rotatePin and ledPin in different ways. This is because Rotary Potentiometer generates an analog signal, and the LED is controlled by a digital signal.
To define for Analog Pin, use A + the number of the Pin (For Example here A0).
To define for Digital Pin, use just the number of the pin (For Example here 4).
rotaryValue=analogRead(rotaryPin);\n
Description:
Reads the value from the specified analog pin. Arduino boards contain a multichannel, 10-bit analog to digital converter. This means that it will map input voltages between 0 and the operating voltage(5V or 3.3V) into integer values between 0 and 1023. On an Arduino UNO, for example, this yields a resolution between readings of: 5 volts / 1024 units or, 0.0049 volts (4.9 mV) per unit.
Syntax:
analogRead(pin)
Parameters:
pin: the name of the analog input pin to read from (A0 to A5 on most boards).
Returns: The analog reading on the pin. Although it is limited to the resolution of the analog to digital converter (0-1023 for 10 bits or 0-4095 for 12 bits). Data type: int.
This function is used to read the value of Analog pins(the rotary sensor position), the range of values is: 0 ~ 1023.
delay(rotaryValue);\n
Delay function, The millisecond duration of the delay is the value in parentheses. Because the value is the value of the analog signal of the knob pin being read, so the delay time can be controlled by the knob.
Demo Effect and Serial Print Result:
Turning the Potentiometer will change the frequency of LED flickering.
Breakout Guide
Use a Grove cable to connect LED to Seeeduino Lotus's digital interface D4, and a Grove cable to connect the Grove Rotary Switch to analog signal interface A0.
OLED Display can be used for many situations, where you could use it to visualize sensor readings!
Background Information:
What is Arduino Libraries
The Arduino environment can be extended through the use of libraries, just like most other programming platforms. Libraries provide extra functionalities for use in sketches, i.e. working with specific hardware or manipulating data. To use a library in a sketch, select it from Sketch ->Include Library.
The Seeeduino is then connected to the computer via a USB cable.
Software Code
Open Arduino IDE.
Install the U8g2 library: Navigate to Sketch -> Include Library -> Manage Libraries... and Search for the keyword \"U8g2\" in the Library Manager. It's the u8g2 library by oliver, and click then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
// U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
voidsetup(void){
//u8x8.setBusClock(100000); // If you breakout other modules, please enable this line
u8x8.begin();
u8x8.setFlipMode(1);
}
voidloop(void){
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0,0);
u8x8.print(\"Hello World!\");
}
Attention
If you breakout all the modules and use the Grove OLED separately, you may find it won't work with this code. If you encounter such a problem, please refer to the end of this section: Breakout Guide.
Code analysis
#include<>\n
Description:
#include is used to include outside libraries in your sketch. This gives the programmer access to a large group of standard C libraries (groups of pre-made functions), and also libraries written especially for Arduino.
Note that #include, similar to #define, has no semicolon terminator, and the compiler will yield cryptic error messages if you add one.
#include<U8x8lib.h>\n
#include is an instruction that introduces a header file. Here we use the U8x8lib.h library.
Once the object is declared, you can use functions from the library.
u8x8.begin();\n
Description:
Simplified setup procedure of the display for the Arduino environment. See the setup guide for the selection of a suitable U8g2 constructor.
Syntax:
u8x8.begin()
Initialize the u8g2 library
u8x8.setFlipMode(1);\n
Description:
Some displays support a 180-degree rotation of the internal frame buffer. This hardware feature can be controlled with this procedure. Important: Redraw the complete display after changing the flip mode. Best is to clear the display first, then change the flip mode and finally redraw the content. Results will be undefined for any existing content on the screen.
Syntax:
u8x8.setFlipMode(mode)
Parameters:
mode: 0 or 1
Flips the display 180 degrees.
u8x8.setCursor();\n
Description:
Define the cursor for the print function. Any output of the print function will start at this position.
Syntax:
u8x8.setCursor(x, y)
Parameters:
x, y: Column/row position for the cursor of the print function.
Sets the draw cursor position.
u8x8.setFont()\n
Description:
Define a u8x8 font for the glyph and string drawing functions.
Syntax:
u8x8.setFont(font_8x8)
Set the font for display.
u8x8.print();\n
Draw the content on the OLED.
Demo Effect and Serial Print Result:
Prints Hello World onto the OLED Display.
U8g2 Library Reference
If you want to more information about U8g2 library, please refer to here.
Breakout Guide
Use Grove cable to connect the OLED to Seeeduino Lotus's I2C interface (Note: I2C's default address is 0x78).
Note
If you breakout other modoule to use the OLED and it do not work, or you want to use fastest OLED I2C (default: 40KHZ), please follow this instrcution:
Click \"This PC\" -> Documents -> Arduino -> libraries -> U8g2 -> src -> U8x8lib.cpp -> Sliding to 1334 line -> delete or disable this line -> save the file.
Wire.setClock(u8x8->bus_clock);// just delete or disable this line\n
Or you can set the bus lock to 100000 then add in the setup().
voidsetup(void){
u8x8.setBusClock(100000);// it for limit the I2C bus clock
L'information source est d'abord acquise grâce à un capteur, qui va effectuer des mesures de la grandeur physique d'intérêt. Le capteur produit, comme résultat de ses mesures, un signal électrique de type logique, analogique ou numérique.
Le signal produit par le capteur est ensuite traité, typiquement par un programme exécuté sur un microcontrôleur, dans le cadre de petits systèmes, voire sur un ordinateur plus puissant, doté d'un ou plusieurs microprocesseurs, pour de gros systèmes.
Enfin, une fois le signal traité, vient une phase de communication du résultat du traitement. L'information peut, par exemple, être restituée sous forme d'une visualisation, après avoir été stockée dans une base de données. Un autre scénario possible est l'envoi d'une consigne vers un système, pour commander une action ou configurer des paramètres de ce dernier.
La chaine d'information commence par l'acquisition d'une mesure de la grandeur physique d'intérêt, puis vient un traitement des données collectées et enfin, une communication des résultats du traitement.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Acquérir des données du capteur
La première étape de la chaine de transmission consiste donc en l'acquisition de données à partir des différents capteurs choisis. Dans le cadre du système développé dans ce cours, trois capteurs ont été choisis et présentés dans le chapitre précédent. La température est mesurée à l'aide d'un LM35, l'humidité relative à l'aide d'un DHT11 et, enfin, le niveau sonore avec un module de détection sonore.
Pour choisir le capteur le plus adéquat, pour mesurer une grandeur physique donnée, plusieurs critères peuvent être pris en compte :
Il faut évidemment d'abord vérifier que la plage de mesures du capteur couvre les valeurs qu'il faudra être capable de mesurer, dans le cadre du système développé.
Ensuite, il faut s'intéresser aux éventuelles contraintes imposées par le projet, et s'assurer que les caractéristiques du capteur soient compatibles avec ces dernières. Il se peut, par exemple, qu'un certain niveau de précision, qu'une résolution minimale ou encore qu'un temps de réponse minimal soit imposé.
On peut également prendre en compte les caractéristiques en lien avec la qualité du capteur, telles que sa fiabilité, sa fidélité ou encore sa gamme de températures d'utilisation. En fonction du système développé, un simple capteur pourrait suffire, ou alors il se peut qu'il faille monter en qualité.
Enfin, il ne faut pas non plus négliger le prix du capteur, notamment par rapport au budget total prévu pour développer le système. Ce budget pourrait être plus faible dans le cadre d'un prototype et ensuite plus élevé dans le cadre d'une version plus avancée, une fois que la preuve de concept a été faite et validée.
On peut aussi s'intéresser au nombre de capteurs qui seront nécessaires pour le système à développer. Comme on l'a vu au chapitre précédent, certains capteurs peuvent mesurer plusieurs grandeurs physiques, comme le DHT11 qui mesure l'humidité relative et la température. N'avoir qu'un capteur au lieu de deux peut rendre plus faciles les traitements effectués dans la suite de la chaine d'information, pour autant que ses caractéristiques satisfont les demandes du projet, évidemment. Cette question particulière de la mesure de la température, avec le LM35 ou le DHT11 est abordée plus loin, à la section 2.3.
Enfin, il faut également s'assurer que les différents capteurs choisis sont compatibles entre eux, le plus possible en tout cas, notamment par rapport à leur type de signal de sortie et à leurs tensions d' alimentation possibles. Au plus il y aura de l'hétérogénéité, au plus la suite de la chaine d'information sera complexe à réaliser.
Donner la liste des capteurs du kit arduino.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Traiter des données par l'Arduino
La deuxième étape de la chaine de transmission consiste donc à traiter les données qui proviennent des capteurs. Cette étape est typiquement réalisée par un programme exécuté sur une machine, que ce soit un simple microcontrôleur ou un ordinateur plus puissant composé d'un ou plusieurs microprocesseurs.
Le but de cette étape est de récupérer toutes les données provenant de plusieurs capteurs pour les traiter, et pour les analyser et prendre des décisions. Le traitement des données consiste en une interprétation des signaux électriques reçus des capteurs, selon leur type. Les données de type numérique vont souvent nécessiter plus de travail que les données logiques ou analogiques. On peut également, parfois, devoir transformer, interpréter ou vérifier les données reçues. Rappelez-vous, par exemple, du DHT11, vu à la section 1.3, qui envoie des trames de 40 bits contenant les valeurs mesurées de l'humidité relative et de la température (chacune sur 16 bits), ainsi qu'un code de 8 bits utilisé pour vérifier s'il y a eu des erreurs de transmission sur le bus 1-Wire. Le traitement des données provenant de ce capteur nécessitera beaucoup de travail.
Dans ce cours, on va travailler avec l'Arduino Uno , présentée sur la figure 2, une simple carte électronique open source sur laquelle se trouve un microcontrôleur ATmega328P d'architecture Atmel, autour duquel se trouvent toute une série d'autres composants, qui vont faciliter sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino Uno est une simple carte électronique open source composée d'un microcontrôleur ATmega328P et d'une série de composants facilitant sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino possède de nombreuses pins, lui permettant de communiquer avec d'autres circuits, notamment des capteurs. L'Arduino Uno possède précisément 14\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">14 pins numériques et 6\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">6 pins analogiques, toutes capables de fonctionner en entrée ou en sortie. D'autres versions de l'Arduino possèdent un plus grand nombre de pins. La tension de fonctionnement de ces 20\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">20 pins est de 5 V, la même que celle de l'Arduino. On pourra donc aisément utiliser les trois capteurs que l'on a sélectionné pour le système de surveillance sonore développé dans ce cours.
Enfin, l'Arduino se programme très facilement grâce à l' environnement de développement intégré Arduino IDE et au langage de programmation Arduino, une version spécifique du langage C++, avec une librairie standard contenant des fonctions spécifiques à l'Arduino. Un programme Arduino, appelé sketch, est compilé puis chargé sur le microcontrôleur de l'Arduino pour y être exécuté. Un sketch se compose de trois parties, inspirées du langage de programmation Processing : (a) une partie en-tête, avec notamment des imports de librairies et des définitions de variables globales, (b) la fonction d'initialisation (setup) exécutée une seule fois au lancement du sketch, (c) et, enfin, la fonction boucle principale (loop) dont le contenu est exécuté en boucle, se répétant indéfiniment.
La figure 3 montre un exemple de sketch Arduino, qui fait clignoter une LED connectée à la pin numérique 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, en produisant un signal électrique qui alterne entre un signal haut et un signal bas, en attendant une seconde entre les transitions :
Dans l'en-tête du sketch, on définit simplement le mot LED comme étant équivalent à 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, le numéro de la pin numérique sur laquelle la LED a été connectée.
Dans la fonction d'initialisation, on configure la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 en mode sortie, à l'aide de la fonction pinMode, c'est-à-dire que le microcontrôleur de l'Arduino va pouvoir envoyer un signal vers le monde extérieur via cette pin, en l'occurrence alimenter ou non la LED avec une tension de 5 V.
Enfin, dans la fonction boucle principale, on va répéter indéfiniment quatre opérations : (a) envoyer un signal haut vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 avec la fonction digitalWrite, appelée avec HIGH comme second paramètre, (b) attendre 1000 ms, c'est-à-dire une seconde, (c) envoyer un signal bas vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, de nouveau avec digitalWrite, mais appelée cette fois-ci avec LOW comme second paramètre, (d) et, enfin, encore attendre 1000 ms.
Ce très simple exemple de sketch vous montre la facilité avec laquelle on peut programmer la carte électronique Arduino Uno.
1
#define LED 7
2
3
voidsetup() {
4
pinMode(LED, OUTPUT);
5
}
6
7
voidloop() {
8
digitalWrite(LED, HIGH);
9
delay(1000);
10
digitalWrite(LED, LOW);
11
delay(1000);
12
}
Un sketch Arduino se compose de trois parties, à savoir une en-tête, la fonction d'initialisation qui s'exécute une fois au lancement et la fonction boucle principale dont le contenu se répète en boucle indéfiniment.
Avec l'Arduino Uno, on va donc pouvoir, sans problèmes, collecter les données provenant du LM35, du DHT11 et du module de détection sonore, dans le cadre du système de surveillance du niveau sonore aux alentours d'un aéroport développé dans ce livre. On verra comment traiter les données envoyées par chacun des capteurs dans la section 2.2.
Donner des exemples de microcontroller.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Communiquer des données vers l'extérieur
La dernière étape de la chaine de transmission est la communication des données qui ont été collectées, analysées et traitées. Elle peut prendre plusieurs formes, selon la communication qui est faite.
Une première possibilité de communication est l'envoi d'une consigne, ou d'un signal de commande, depuis la machine qui a traité les données du capteur vers une autre machine, un appareil, un moteur, etc. Par exemple, un thermostat mesure la température ambiante et la compare ensuite avec une température seuil configurée. Si la température mesurée est inférieure au seuil, le thermostat envoie un signal vers la chaudière pour la démarrer, pour chauffer la pièce.
La communication peut aussi simplement consister en l'envoi des données collectées vers une autre machine, plus puissante, qui va pouvoir faire des traitements plus avancés. Par exemple, un serveur dans le cloud peut stocker des données reçues et proposer une interface de visualisation de ces dernières, sous forme d'un dashboard. La figure 4 montre un exemple de dashboard qui présente des données d'inscriptions à un collège. Il a été généré sur le service cloud Visualize Free (disponible ici : https://www.visualizefree.com), qui permet de gratuitement réaliser des visualisations.
The Grove Beginner Kit has a plug and plays unboxing demo, where you first plug in the power to the board, you get the chance to experience all the sensors in one go! Use the button and rotary potentiometer to experience each sensor demo!
Arduino IDE is an integrated development environment for Arduino, which is used for single-chip microcomputer software programming, downloading, testing and so on.
Download and Install Arduino IDE for your desired operating system here.
Arduino connects to the PC via a USB cable. The USB driver depends on the type of USB chip you're using on your Arduino. Note: USB chips are usually printed on the back of the development board.
Download the CP2102 USB Driver. Note: Download according to your OS.
After the driver installation is completed, connect Arduino to the USB port of PC with a USB cable.
For Windows users: You can see it in My Computer -> Properties -> Hardware -> Device Management. A COM will appear.
For Mac OS users: You can navigate to on the top left corner, and choose About this Mac -> System Report... -> USB. A CP2102 USB Driver should appear.
If the driver is not installed, or if the driver is installed incorrectly (not matching the chip model), it will appear as an \"unknown device\" in the device manager. At this point, the driver should be reinstalled.
1.Open the Arduino IDE on your PC. 2.Click on Tools -> Board-> Arduino AVR Boards-> Arduino Uno to select the correct Development Board Model. Select Arduino Uno as Board.
3.Click Tools -> Port to select the correct Port (the Serial Port showed in Device Manager in the previous step). In this case, COM11 is selected. For Mac OS users, it should be /dev/cu.SLAB_USBtoUART.
4.Create a new Arduino file and name it Hello.ino, then copy the following code into it:
voidsetup(){
Serial.begin(9600);// initializes the serial port with a baud rate of 9600
}
voidloop(){
Serial.println(\"hello, world\");// prints a string to a serial port
delay(1000);//delay of 1 second
}
5.In the upper left corner of the Arduino IDE, there are two buttons, Verify and Upload. First, press the Verify button(✓) to compile. After the compilation is successful, press the upload button(→).
6.Navigate to Tools -> Serial Monitor, or click the Serial Monitor in the upper right corner(Magnifier Symbol), you can see the program running results:
Note: If you installed the portable Arduino IDE from our USB Drive, you can find all the module demos in the Files -> Sketch Book, as well as all the module libraries, are pre-installed with Arduino IDE!
Note: All modules are pre-wired on a single circuit board, so no cables and soldering are needed. However, if you break out the modules and want to connect them with Grove cables, please kindly check the Breakout Guide.
We have completed the output \"Hello world\" program. Now let's learn how to light the LED module. We know the three basic components of a control system: Input, Control, and Output. But lighting up LED uses only the output, not the input. Seeeduino is the control unit, the LED module is the output unit and the output signal is a digital signal.
Background Information:
What is Digital Signal
Digital signal: Digital signal refers to the value of the amplitude is discrete, the amplitude is limited to a finite number of values. In our controller, the digital signal has two states: LOW(0V) for 0; HIGH(5V) for 1. So sending a HIGH signal to LED can light it up.
Components Involved
Seeeduino Lotus
Grove LED
Grove Cable(If Broken out)
Hardware connection
Module connection
Default connection by PCB stamp hole.
Connect the Seeeduino to the computer through the USB cable.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//LED Blink
//The LED will turn on for one second and then turn off for one second
intledPin=4;
voidsetup(){
pinMode(ledPin,OUTPUT);
}
voidloop(){
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}
Code Analysis
setup(){
}
The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc. The setup() function will only run once, after each powerup or reset of the Arduino board.
loop(){
}
After creating a setup() function, which initializes and sets the initial values, the loop() function does precisely what its name suggests, and loops consecutively, allowing your program to change and respond. Use it to actively control the Arduino board.
intledPin=4;\n
Description:
Converts a value to the int data type.
Syntax:
int(x) or (int)x (C-style type conversion)
Parameters:
x: a value. Allowed data types: any type.
Assigned an int type 4 to variable named ledPin.
pinMode(ledPin,OUTPUT);\n
Description:
Configures the specified pin to behave either as an input or an output. See the Digital Pins page for details on the functionality of the pins.
As of Arduino 1.0.1, it is possible to enable the internal pull-up resistors with the mode INPUT_PULLUP. Additionally, the INPUT mode explicitly disables the internal pullups.
Syntax:
pinMode(pin, mode)
Parameters:
pin: the Arduino pin number to set the mode of.
mode: INPUT, OUTPUT, or INPUT_PULLUP.
Setting ledPin to the output mode.
digitalWrite(ledPin,HIGH);\n
Description:
Write a HIGH or a LOW value to a digital pin.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the Digital Pins tutorial for more information.
If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts as a large current-limiting resistor.
Syntax:
digitalWrite(pin, value)
Parameters:
pin: the Arduino pin number.
value: HIGH or LOW.
When we set the ledPin as output, HIGH means sending high level to the pin, LED turns on.
digitalWrite(ledPin,LOW);\n
When we set the led as output, low stands for sending low level to the pin, LED turns off.
delay(1000);\n
Description:
Pauses the program for the amount of time (in milliseconds) specified as a parameter. (There are 1000 milliseconds in a second.)
Syntax:
delay(ms)
Parameters:
ms: the number of milliseconds to pause. Allowed data types: unsigned long.
Delay the program by 1000ms(1s).
Demo Effect and Serial Print Result:
The LED module will be 1 second on and 1 second off.
LED Brightness Adjustment:
On the Grove LED module, there is a variable resistor that can be adjusted using a screw driver. Twist it to make the LED light up brighter!
Breakout Guide
If modules are broken out from the board. Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4.
The first thing we need to know is that the input of the button is a digital signal, and there are only two states, 0 or 1, so we can control the output based on those two states.
Practice: Use button to turn ON and OFF the LED module
Components Involved
Seeeduino Lotus
Grove LED
Grove Button
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Button
Control: Seeeduino
Output: LED module
Both the sensor and the LED use digital signals, so they should be connected to digital interfaces.
Software code:
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Button to turn ON/OFF LED
//Constants won't change. They're used here to set pin numbers:
constintbuttonPin=6;// the number of the pushbutton pin
constintledPin=4;// the number of the LED pin
// variables will change:
intbuttonState=0;// variable for reading the pushbutton status
voidsetup(){
// initialize the LED pin as an output:
pinMode(ledPin,OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin,INPUT);
}
voidloop(){
// read the state of the pushbutton value:
buttonState=digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if(buttonState==HIGH){
// turn LED on:
digitalWrite(ledPin,HIGH);
}else{
// turn LED off:
digitalWrite(ledPin,LOW);
}
}
Code Analysis
pinMode(ledPin,OUTPUT);\n
Define LED as the output unit.
pinMode(buttonPin,INPUT);\n
Define button as the input unit.
buttonState=digitalRead(buttonPin);\n
Description:
Reads the value from a specified digital pin, either HIGH or LOW.
Syntax:
digitalRead(pin)
Parameters:
pin: the Arduino pin number you want to read
This function is used to read the states of digital pins, either HIGH or LOW. When the button is pressed, the state is HIGH, otherwise is LOW.
if(buttonState==HIGH){
digitalWrite(ledPin,HIGH);
}else{
digitalWrite(ledPin,LOW);
}
}
Description:
The if…else allows greater control over the flow of code than the basic if statement, by allowing multiple tests to be grouped. An else clause (if at all exists) will be executed if the condition in the if statement results in false. The else can proceed another if test, so that multiple, mutually exclusive tests can be run at the same time.
Each test will proceed to the next one until a true test is encountered. When a true test is found, its associated block of code is run, and the program then skips to the line following the entire if/else construction. If no test proves to be true, the default else block is executed, if one is present, and sets the default behaviour.
Note that an else if block may be used with or without a terminating else block and vice versa. An unlimited number of such else if branches are allowed.
Syntax:
if(condition1){
//do Thing A
}
elseif(condition2){
//do Thing B
}
else{
//do Thing C
}
The usage of the statement is: if the logical expression in parentheses is true, execute the statement in curly braces after if, if not, execute the statement in curly braces after the else. If the state of the button is high, the LED pin outputs a high level and turn the LED on, else turn LED off.
Demo Effect and Serial Print Result:
Pressing the button will turn the LED module on.
Breakout Guide
Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4. Connect the Grove Button to digital interface D6.
"},{"edit":" "}],[{"text":"
Application 4: Controlling the Frequency of the Blink¶
In the last section, we studied that button only has two states, ON/OFF state corresponding 0V and 5V, but in practice, we often counter the need for many states, not just 0V and 5V. Then you need to use Analog Signal! Rotary Potentiometer is a classic example that uses an analog signal.
Background Information:
What is Analog Signal
Analog signals: Signals vary continuously in time and value, and the amplitude, frequency, or phase of the signal changes continuously at any time, such as the current broadcast sound signal, or image signal, etc. The analog signal has sine wave and triangle wave and so on. The analog pins of your microcontroller can have between 0V and 5V is mapped to a range between 0 and 1023 where 1023 is mapped as 5V and 512 is mapped as 2.5v and etc.
Components Involved
Seeeduino Lotus
Grove LED
Grove Rotary Switch
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Rotary Potentiometer
Control: Seeeduino Lotus
Output: LED module
The input is an analog signal, so it is connected to the analog signal interface, the LED module is connected to the digital signal interface.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Rotary controls LED
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
introtaryValue=0;// variable to store the value coming from the rotary
voidsetup(){
// declare the ledPin as an OUTPUT:
pinMode(ledPin,OUTPUT);
pinMode(rotaryPin,INPUT);
}
voidloop(){
// read the value from the sensor:
rotaryValue=analogRead(rotaryPin);
// turn the ledPin on
digitalWrite(ledPin,HIGH);
// stop the program for <sensorValue> milliseconds:
delay(rotaryValue);
// turn the ledPin off:
digitalWrite(ledPin,LOW);
// stop the program for for <sensorValue> milliseconds:
delay(rotaryValue);
}
Code Analysis
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
Description:
You may find that we define rotatePin and ledPin in different ways. This is because Rotary Potentiometer generates an analog signal, and the LED is controlled by a digital signal.
To define for Analog Pin, use A + the number of the Pin (For Example here A0).
To define for Digital Pin, use just the number of the pin (For Example here 4).
rotaryValue=analogRead(rotaryPin);\n
Description:
Reads the value from the specified analog pin. Arduino boards contain a multichannel, 10-bit analog to digital converter. This means that it will map input voltages between 0 and the operating voltage(5V or 3.3V) into integer values between 0 and 1023. On an Arduino UNO, for example, this yields a resolution between readings of: 5 volts / 1024 units or, 0.0049 volts (4.9 mV) per unit.
Syntax:
analogRead(pin)
Parameters:
pin: the name of the analog input pin to read from (A0 to A5 on most boards).
Returns: The analog reading on the pin. Although it is limited to the resolution of the analog to digital converter (0-1023 for 10 bits or 0-4095 for 12 bits). Data type: int.
This function is used to read the value of Analog pins(the rotary sensor position), the range of values is: 0 ~ 1023.
delay(rotaryValue);\n
Delay function, The millisecond duration of the delay is the value in parentheses. Because the value is the value of the analog signal of the knob pin being read, so the delay time can be controlled by the knob.
Demo Effect and Serial Print Result:
Turning the Potentiometer will change the frequency of LED flickering.
Breakout Guide
Use a Grove cable to connect LED to Seeeduino Lotus's digital interface D4, and a Grove cable to connect the Grove Rotary Switch to analog signal interface A0.
OLED Display can be used for many situations, where you could use it to visualize sensor readings!
Background Information:
What is Arduino Libraries
The Arduino environment can be extended through the use of libraries, just like most other programming platforms. Libraries provide extra functionalities for use in sketches, i.e. working with specific hardware or manipulating data. To use a library in a sketch, select it from Sketch ->Include Library.
The Seeeduino is then connected to the computer via a USB cable.
Software Code
Open Arduino IDE.
Install the U8g2 library: Navigate to Sketch -> Include Library -> Manage Libraries... and Search for the keyword \"U8g2\" in the Library Manager. It's the u8g2 library by oliver, and click then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
// U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
voidsetup(void){
//u8x8.setBusClock(100000); // If you breakout other modules, please enable this line
u8x8.begin();
u8x8.setFlipMode(1);
}
voidloop(void){
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0,0);
u8x8.print(\"Hello World!\");
}
Attention
If you breakout all the modules and use the Grove OLED separately, you may find it won't work with this code. If you encounter such a problem, please refer to the end of this section: Breakout Guide.
Code analysis
#include<>\n
Description:
#include is used to include outside libraries in your sketch. This gives the programmer access to a large group of standard C libraries (groups of pre-made functions), and also libraries written especially for Arduino.
Note that #include, similar to #define, has no semicolon terminator, and the compiler will yield cryptic error messages if you add one.
#include<U8x8lib.h>\n
#include is an instruction that introduces a header file. Here we use the U8x8lib.h library.
Once the object is declared, you can use functions from the library.
u8x8.begin();\n
Description:
Simplified setup procedure of the display for the Arduino environment. See the setup guide for the selection of a suitable U8g2 constructor.
Syntax:
u8x8.begin()
Initialize the u8g2 library
u8x8.setFlipMode(1);\n
Description:
Some displays support a 180-degree rotation of the internal frame buffer. This hardware feature can be controlled with this procedure. Important: Redraw the complete display after changing the flip mode. Best is to clear the display first, then change the flip mode and finally redraw the content. Results will be undefined for any existing content on the screen.
Syntax:
u8x8.setFlipMode(mode)
Parameters:
mode: 0 or 1
Flips the display 180 degrees.
u8x8.setCursor();\n
Description:
Define the cursor for the print function. Any output of the print function will start at this position.
Syntax:
u8x8.setCursor(x, y)
Parameters:
x, y: Column/row position for the cursor of the print function.
Sets the draw cursor position.
u8x8.setFont()\n
Description:
Define a u8x8 font for the glyph and string drawing functions.
Syntax:
u8x8.setFont(font_8x8)
Set the font for display.
u8x8.print();\n
Draw the content on the OLED.
Demo Effect and Serial Print Result:
Prints Hello World onto the OLED Display.
U8g2 Library Reference
If you want to more information about U8g2 library, please refer to here.
Breakout Guide
Use Grove cable to connect the OLED to Seeeduino Lotus's I2C interface (Note: I2C's default address is 0x78).
Note
If you breakout other modoule to use the OLED and it do not work, or you want to use fastest OLED I2C (default: 40KHZ), please follow this instrcution:
Click \"This PC\" -> Documents -> Arduino -> libraries -> U8g2 -> src -> U8x8lib.cpp -> Sliding to 1334 line -> delete or disable this line -> save the file.
Wire.setClock(u8x8->bus_clock);// just delete or disable this line\n
Or you can set the bus lock to 100000 then add in the setup().
voidsetup(void){
u8x8.setBusClock(100000);// it for limit the I2C bus clock
L'information source est d'abord acquise grâce à un capteur, qui va effectuer des mesures de la grandeur physique d'intérêt. Le capteur produit, comme résultat de ses mesures, un signal électrique de type logique, analogique ou numérique.
Le signal produit par le capteur est ensuite traité, typiquement par un programme exécuté sur un microcontrôleur, dans le cadre de petits systèmes, voire sur un ordinateur plus puissant, doté d'un ou plusieurs microprocesseurs, pour de gros systèmes.
Enfin, une fois le signal traité, vient une phase de communication du résultat du traitement. L'information peut, par exemple, être restituée sous forme d'une visualisation, après avoir été stockée dans une base de données. Un autre scénario possible est l'envoi d'une consigne vers un système, pour commander une action ou configurer des paramètres de ce dernier.
La chaine d'information commence par l'acquisition d'une mesure de la grandeur physique d'intérêt, puis vient un traitement des données collectées et enfin, une communication des résultats du traitement.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Acquérir des données du capteur
La première étape de la chaine de transmission consiste donc en l'acquisition de données à partir des différents capteurs choisis. Dans le cadre du système développé dans ce cours, trois capteurs ont été choisis et présentés dans le chapitre précédent. La température est mesurée à l'aide d'un LM35, l'humidité relative à l'aide d'un DHT11 et, enfin, le niveau sonore avec un module de détection sonore.
Pour choisir le capteur le plus adéquat, pour mesurer une grandeur physique donnée, plusieurs critères peuvent être pris en compte :
Il faut évidemment d'abord vérifier que la plage de mesures du capteur couvre les valeurs qu'il faudra être capable de mesurer, dans le cadre du système développé.
Ensuite, il faut s'intéresser aux éventuelles contraintes imposées par le projet, et s'assurer que les caractéristiques du capteur soient compatibles avec ces dernières. Il se peut, par exemple, qu'un certain niveau de précision, qu'une résolution minimale ou encore qu'un temps de réponse minimal soit imposé.
On peut également prendre en compte les caractéristiques en lien avec la qualité du capteur, telles que sa fiabilité, sa fidélité ou encore sa gamme de températures d'utilisation. En fonction du système développé, un simple capteur pourrait suffire, ou alors il se peut qu'il faille monter en qualité.
Enfin, il ne faut pas non plus négliger le prix du capteur, notamment par rapport au budget total prévu pour développer le système. Ce budget pourrait être plus faible dans le cadre d'un prototype et ensuite plus élevé dans le cadre d'une version plus avancée, une fois que la preuve de concept a été faite et validée.
On peut aussi s'intéresser au nombre de capteurs qui seront nécessaires pour le système à développer. Comme on l'a vu au chapitre précédent, certains capteurs peuvent mesurer plusieurs grandeurs physiques, comme le DHT11 qui mesure l'humidité relative et la température. N'avoir qu'un capteur au lieu de deux peut rendre plus faciles les traitements effectués dans la suite de la chaine d'information, pour autant que ses caractéristiques satisfont les demandes du projet, évidemment. Cette question particulière de la mesure de la température, avec le LM35 ou le DHT11 est abordée plus loin, à la section 2.3.
Enfin, il faut également s'assurer que les différents capteurs choisis sont compatibles entre eux, le plus possible en tout cas, notamment par rapport à leur type de signal de sortie et à leurs tensions d' alimentation possibles. Au plus il y aura de l'hétérogénéité, au plus la suite de la chaine d'information sera complexe à réaliser.
Donner la liste des capteurs du kit arduino.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Traiter des données par l'Arduino
La deuxième étape de la chaine de transmission consiste donc à traiter les données qui proviennent des capteurs. Cette étape est typiquement réalisée par un programme exécuté sur une machine, que ce soit un simple microcontrôleur ou un ordinateur plus puissant composé d'un ou plusieurs microprocesseurs.
Le but de cette étape est de récupérer toutes les données provenant de plusieurs capteurs pour les traiter, et pour les analyser et prendre des décisions. Le traitement des données consiste en une interprétation des signaux électriques reçus des capteurs, selon leur type. Les données de type numérique vont souvent nécessiter plus de travail que les données logiques ou analogiques. On peut également, parfois, devoir transformer, interpréter ou vérifier les données reçues. Rappelez-vous, par exemple, du DHT11, vu à la section 1.3, qui envoie des trames de 40 bits contenant les valeurs mesurées de l'humidité relative et de la température (chacune sur 16 bits), ainsi qu'un code de 8 bits utilisé pour vérifier s'il y a eu des erreurs de transmission sur le bus 1-Wire. Le traitement des données provenant de ce capteur nécessitera beaucoup de travail.
Dans ce cours, on va travailler avec l'Arduino Uno , présentée sur la figure 2, une simple carte électronique open source sur laquelle se trouve un microcontrôleur ATmega328P d'architecture Atmel, autour duquel se trouvent toute une série d'autres composants, qui vont faciliter sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino Uno est une simple carte électronique open source composée d'un microcontrôleur ATmega328P et d'une série de composants facilitant sa programmation et son interfaçage avec d'autres circuits extérieurs.
L'Arduino possède de nombreuses pins, lui permettant de communiquer avec d'autres circuits, notamment des capteurs. L'Arduino Uno possède précisément 14\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">14 pins numériques et 6\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">6 pins analogiques, toutes capables de fonctionner en entrée ou en sortie. D'autres versions de l'Arduino possèdent un plus grand nombre de pins. La tension de fonctionnement de ces 20\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">20 pins est de 5 V, la même que celle de l'Arduino. On pourra donc aisément utiliser les trois capteurs que l'on a sélectionné pour le système de surveillance sonore développé dans ce cours.
Enfin, l'Arduino se programme très facilement grâce à l' environnement de développement intégré Arduino IDE et au langage de programmation Arduino, une version spécifique du langage C++, avec une librairie standard contenant des fonctions spécifiques à l'Arduino. Un programme Arduino, appelé sketch, est compilé puis chargé sur le microcontrôleur de l'Arduino pour y être exécuté. Un sketch se compose de trois parties, inspirées du langage de programmation Processing : (a) une partie en-tête, avec notamment des imports de librairies et des définitions de variables globales, (b) la fonction d'initialisation (setup) exécutée une seule fois au lancement du sketch, (c) et, enfin, la fonction boucle principale (loop) dont le contenu est exécuté en boucle, se répétant indéfiniment.
La figure 3 montre un exemple de sketch Arduino, qui fait clignoter une LED connectée à la pin numérique 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, en produisant un signal électrique qui alterne entre un signal haut et un signal bas, en attendant une seconde entre les transitions :
Dans l'en-tête du sketch, on définit simplement le mot LED comme étant équivalent à 7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, le numéro de la pin numérique sur laquelle la LED a été connectée.
Dans la fonction d'initialisation, on configure la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 en mode sortie, à l'aide de la fonction pinMode, c'est-à-dire que le microcontrôleur de l'Arduino va pouvoir envoyer un signal vers le monde extérieur via cette pin, en l'occurrence alimenter ou non la LED avec une tension de 5 V.
Enfin, dans la fonction boucle principale, on va répéter indéfiniment quatre opérations : (a) envoyer un signal haut vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7 avec la fonction digitalWrite, appelée avec HIGH comme second paramètre, (b) attendre 1000 ms, c'est-à-dire une seconde, (c) envoyer un signal bas vers la pin~7\" role=\"presentation\" style=\"display: inline; line-height: normal; text-align: left; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;\">7, de nouveau avec digitalWrite, mais appelée cette fois-ci avec LOW comme second paramètre, (d) et, enfin, encore attendre 1000 ms.
Ce très simple exemple de sketch vous montre la facilité avec laquelle on peut programmer la carte électronique Arduino Uno.
1
#define LED 7
2
3
voidsetup() {
4
pinMode(LED, OUTPUT);
5
}
6
7
voidloop() {
8
digitalWrite(LED, HIGH);
9
delay(1000);
10
digitalWrite(LED, LOW);
11
delay(1000);
12
}
Un sketch Arduino se compose de trois parties, à savoir une en-tête, la fonction d'initialisation qui s'exécute une fois au lancement et la fonction boucle principale dont le contenu se répète en boucle indéfiniment.
Avec l'Arduino Uno, on va donc pouvoir, sans problèmes, collecter les données provenant du LM35, du DHT11 et du module de détection sonore, dans le cadre du système de surveillance du niveau sonore aux alentours d'un aéroport développé dans ce livre. On verra comment traiter les données envoyées par chacun des capteurs dans la section 2.2.
Donner des exemples de microcontroller.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Communiquer des données vers l'extérieur
La dernière étape de la chaine de transmission est la communication des données qui ont été collectées, analysées et traitées. Elle peut prendre plusieurs formes, selon la communication qui est faite.
Une première possibilité de communication est l'envoi d'une consigne, ou d'un signal de commande, depuis la machine qui a traité les données du capteur vers une autre machine, un appareil, un moteur, etc. Par exemple, un thermostat mesure la température ambiante et la compare ensuite avec une température seuil configurée. Si la température mesurée est inférieure au seuil, le thermostat envoie un signal vers la chaudière pour la démarrer, pour chauffer la pièce.
La communication peut aussi simplement consister en l'envoi des données collectées vers une autre machine, plus puissante, qui va pouvoir faire des traitements plus avancés. Par exemple, un serveur dans le cloud peut stocker des données reçues et proposer une interface de visualisation de ces dernières, sous forme d'un dashboard. La figure 4 montre un exemple de dashboard qui présente des données d'inscriptions à un collège. Il a été généré sur le service cloud Visualize Free (disponible ici : https://www.visualizefree.com), qui permet de gratuitement réaliser des visualisations.
The Grove Beginner Kit has a plug and plays unboxing demo, where you first plug in the power to the board, you get the chance to experience all the sensors in one go! Use the button and rotary potentiometer to experience each sensor demo!
Arduino IDE is an integrated development environment for Arduino, which is used for single-chip microcomputer software programming, downloading, testing and so on.
Download and Install Arduino IDE for your desired operating system here.
Arduino connects to the PC via a USB cable. The USB driver depends on the type of USB chip you're using on your Arduino. Note: USB chips are usually printed on the back of the development board.
Download the CP2102 USB Driver. Note: Download according to your OS.
After the driver installation is completed, connect Arduino to the USB port of PC with a USB cable.
For Windows users: You can see it in My Computer -> Properties -> Hardware -> Device Management. A COM will appear.
For Mac OS users: You can navigate to on the top left corner, and choose About this Mac -> System Report... -> USB. A CP2102 USB Driver should appear.
If the driver is not installed, or if the driver is installed incorrectly (not matching the chip model), it will appear as an \"unknown device\" in the device manager. At this point, the driver should be reinstalled.
1.Open the Arduino IDE on your PC. 2.Click on Tools -> Board-> Arduino AVR Boards-> Arduino Uno to select the correct Development Board Model. Select Arduino Uno as Board.
3.Click Tools -> Port to select the correct Port (the Serial Port showed in Device Manager in the previous step). In this case, COM11 is selected. For Mac OS users, it should be /dev/cu.SLAB_USBtoUART.
4.Create a new Arduino file and name it Hello.ino, then copy the following code into it:
voidsetup(){
Serial.begin(9600);// initializes the serial port with a baud rate of 9600
}
voidloop(){
Serial.println(\"hello, world\");// prints a string to a serial port
delay(1000);//delay of 1 second
}
5.In the upper left corner of the Arduino IDE, there are two buttons, Verify and Upload. First, press the Verify button(✓) to compile. After the compilation is successful, press the upload button(→).
6.Navigate to Tools -> Serial Monitor, or click the Serial Monitor in the upper right corner(Magnifier Symbol), you can see the program running results:
Note: If you installed the portable Arduino IDE from our USB Drive, you can find all the module demos in the Files -> Sketch Book, as well as all the module libraries, are pre-installed with Arduino IDE!
Note: All modules are pre-wired on a single circuit board, so no cables and soldering are needed. However, if you break out the modules and want to connect them with Grove cables, please kindly check the Breakout Guide.
We have completed the output \"Hello world\" program. Now let's learn how to light the LED module. We know the three basic components of a control system: Input, Control, and Output. But lighting up LED uses only the output, not the input. Seeeduino is the control unit, the LED module is the output unit and the output signal is a digital signal.
Background Information:
What is Digital Signal
Digital signal: Digital signal refers to the value of the amplitude is discrete, the amplitude is limited to a finite number of values. In our controller, the digital signal has two states: LOW(0V) for 0; HIGH(5V) for 1. So sending a HIGH signal to LED can light it up.
Components Involved
Seeeduino Lotus
Grove LED
Grove Cable(If Broken out)
Hardware connection
Module connection
Default connection by PCB stamp hole.
Connect the Seeeduino to the computer through the USB cable.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//LED Blink
//The LED will turn on for one second and then turn off for one second
intledPin=4;
voidsetup(){
pinMode(ledPin,OUTPUT);
}
voidloop(){
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);
}
Code Analysis
setup(){
}
The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc. The setup() function will only run once, after each powerup or reset of the Arduino board.
loop(){
}
After creating a setup() function, which initializes and sets the initial values, the loop() function does precisely what its name suggests, and loops consecutively, allowing your program to change and respond. Use it to actively control the Arduino board.
intledPin=4;\n
Description:
Converts a value to the int data type.
Syntax:
int(x) or (int)x (C-style type conversion)
Parameters:
x: a value. Allowed data types: any type.
Assigned an int type 4 to variable named ledPin.
pinMode(ledPin,OUTPUT);\n
Description:
Configures the specified pin to behave either as an input or an output. See the Digital Pins page for details on the functionality of the pins.
As of Arduino 1.0.1, it is possible to enable the internal pull-up resistors with the mode INPUT_PULLUP. Additionally, the INPUT mode explicitly disables the internal pullups.
Syntax:
pinMode(pin, mode)
Parameters:
pin: the Arduino pin number to set the mode of.
mode: INPUT, OUTPUT, or INPUT_PULLUP.
Setting ledPin to the output mode.
digitalWrite(ledPin,HIGH);\n
Description:
Write a HIGH or a LOW value to a digital pin.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the Digital Pins tutorial for more information.
If you do not set the pinMode() to OUTPUT, and connect an LED to a pin, when calling digitalWrite(HIGH), the LED may appear dim. Without explicitly setting pinMode(), digitalWrite() will have enabled the internal pull-up resistor, which acts as a large current-limiting resistor.
Syntax:
digitalWrite(pin, value)
Parameters:
pin: the Arduino pin number.
value: HIGH or LOW.
When we set the ledPin as output, HIGH means sending high level to the pin, LED turns on.
digitalWrite(ledPin,LOW);\n
When we set the led as output, low stands for sending low level to the pin, LED turns off.
delay(1000);\n
Description:
Pauses the program for the amount of time (in milliseconds) specified as a parameter. (There are 1000 milliseconds in a second.)
Syntax:
delay(ms)
Parameters:
ms: the number of milliseconds to pause. Allowed data types: unsigned long.
Delay the program by 1000ms(1s).
Demo Effect and Serial Print Result:
The LED module will be 1 second on and 1 second off.
LED Brightness Adjustment:
On the Grove LED module, there is a variable resistor that can be adjusted using a screw driver. Twist it to make the LED light up brighter!
Breakout Guide
If modules are broken out from the board. Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4.
The first thing we need to know is that the input of the button is a digital signal, and there are only two states, 0 or 1, so we can control the output based on those two states.
Practice: Use button to turn ON and OFF the LED module
Components Involved
Seeeduino Lotus
Grove LED
Grove Button
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Button
Control: Seeeduino
Output: LED module
Both the sensor and the LED use digital signals, so they should be connected to digital interfaces.
Software code:
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Button to turn ON/OFF LED
//Constants won't change. They're used here to set pin numbers:
constintbuttonPin=6;// the number of the pushbutton pin
constintledPin=4;// the number of the LED pin
// variables will change:
intbuttonState=0;// variable for reading the pushbutton status
voidsetup(){
// initialize the LED pin as an output:
pinMode(ledPin,OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin,INPUT);
}
voidloop(){
// read the state of the pushbutton value:
buttonState=digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if(buttonState==HIGH){
// turn LED on:
digitalWrite(ledPin,HIGH);
}else{
// turn LED off:
digitalWrite(ledPin,LOW);
}
}
Code Analysis
pinMode(ledPin,OUTPUT);\n
Define LED as the output unit.
pinMode(buttonPin,INPUT);\n
Define button as the input unit.
buttonState=digitalRead(buttonPin);\n
Description:
Reads the value from a specified digital pin, either HIGH or LOW.
Syntax:
digitalRead(pin)
Parameters:
pin: the Arduino pin number you want to read
This function is used to read the states of digital pins, either HIGH or LOW. When the button is pressed, the state is HIGH, otherwise is LOW.
if(buttonState==HIGH){
digitalWrite(ledPin,HIGH);
}else{
digitalWrite(ledPin,LOW);
}
}
Description:
The if…else allows greater control over the flow of code than the basic if statement, by allowing multiple tests to be grouped. An else clause (if at all exists) will be executed if the condition in the if statement results in false. The else can proceed another if test, so that multiple, mutually exclusive tests can be run at the same time.
Each test will proceed to the next one until a true test is encountered. When a true test is found, its associated block of code is run, and the program then skips to the line following the entire if/else construction. If no test proves to be true, the default else block is executed, if one is present, and sets the default behaviour.
Note that an else if block may be used with or without a terminating else block and vice versa. An unlimited number of such else if branches are allowed.
Syntax:
if(condition1){
//do Thing A
}
elseif(condition2){
//do Thing B
}
else{
//do Thing C
}
The usage of the statement is: if the logical expression in parentheses is true, execute the statement in curly braces after if, if not, execute the statement in curly braces after the else. If the state of the button is high, the LED pin outputs a high level and turn the LED on, else turn LED off.
Demo Effect and Serial Print Result:
Pressing the button will turn the LED module on.
Breakout Guide
Use a Grove cable to connect the Grove LED to Seeeduino Lotus's digital interface D4. Connect the Grove Button to digital interface D6.
"},{"edit":" "}],[{"text":"
Application 4: Controlling the Frequency of the Blink¶
In the last section, we studied that button only has two states, ON/OFF state corresponding 0V and 5V, but in practice, we often counter the need for many states, not just 0V and 5V. Then you need to use Analog Signal! Rotary Potentiometer is a classic example that uses an analog signal.
Background Information:
What is Analog Signal
Analog signals: Signals vary continuously in time and value, and the amplitude, frequency, or phase of the signal changes continuously at any time, such as the current broadcast sound signal, or image signal, etc. The analog signal has sine wave and triangle wave and so on. The analog pins of your microcontroller can have between 0V and 5V is mapped to a range between 0 and 1023 where 1023 is mapped as 5V and 512 is mapped as 2.5v and etc.
Components Involved
Seeeduino Lotus
Grove LED
Grove Rotary Switch
Grove Cables(If broken out)
Hardware connection
Module connection:
Default connection by PCB stamp hole.
The Seeeduino is then connected to the computer via a USB cable.
Hardware analysis:
Input: Rotary Potentiometer
Control: Seeeduino Lotus
Output: LED module
The input is an analog signal, so it is connected to the analog signal interface, the LED module is connected to the digital signal interface.
Software Code
Open Arduino IDE.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
//Rotary controls LED
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
introtaryValue=0;// variable to store the value coming from the rotary
voidsetup(){
// declare the ledPin as an OUTPUT:
pinMode(ledPin,OUTPUT);
pinMode(rotaryPin,INPUT);
}
voidloop(){
// read the value from the sensor:
rotaryValue=analogRead(rotaryPin);
// turn the ledPin on
digitalWrite(ledPin,HIGH);
// stop the program for <sensorValue> milliseconds:
delay(rotaryValue);
// turn the ledPin off:
digitalWrite(ledPin,LOW);
// stop the program for for <sensorValue> milliseconds:
delay(rotaryValue);
}
Code Analysis
introtaryPin=A0;// select the input pin for the rotary
intledPin=4;// select the pin for the LED
Description:
You may find that we define rotatePin and ledPin in different ways. This is because Rotary Potentiometer generates an analog signal, and the LED is controlled by a digital signal.
To define for Analog Pin, use A + the number of the Pin (For Example here A0).
To define for Digital Pin, use just the number of the pin (For Example here 4).
rotaryValue=analogRead(rotaryPin);\n
Description:
Reads the value from the specified analog pin. Arduino boards contain a multichannel, 10-bit analog to digital converter. This means that it will map input voltages between 0 and the operating voltage(5V or 3.3V) into integer values between 0 and 1023. On an Arduino UNO, for example, this yields a resolution between readings of: 5 volts / 1024 units or, 0.0049 volts (4.9 mV) per unit.
Syntax:
analogRead(pin)
Parameters:
pin: the name of the analog input pin to read from (A0 to A5 on most boards).
Returns: The analog reading on the pin. Although it is limited to the resolution of the analog to digital converter (0-1023 for 10 bits or 0-4095 for 12 bits). Data type: int.
This function is used to read the value of Analog pins(the rotary sensor position), the range of values is: 0 ~ 1023.
delay(rotaryValue);\n
Delay function, The millisecond duration of the delay is the value in parentheses. Because the value is the value of the analog signal of the knob pin being read, so the delay time can be controlled by the knob.
Demo Effect and Serial Print Result:
Turning the Potentiometer will change the frequency of LED flickering.
Breakout Guide
Use a Grove cable to connect LED to Seeeduino Lotus's digital interface D4, and a Grove cable to connect the Grove Rotary Switch to analog signal interface A0.
OLED Display can be used for many situations, where you could use it to visualize sensor readings!
Background Information:
What is Arduino Libraries
The Arduino environment can be extended through the use of libraries, just like most other programming platforms. Libraries provide extra functionalities for use in sketches, i.e. working with specific hardware or manipulating data. To use a library in a sketch, select it from Sketch ->Include Library.
The Seeeduino is then connected to the computer via a USB cable.
Software Code
Open Arduino IDE.
Install the U8g2 library: Navigate to Sketch -> Include Library -> Manage Libraries... and Search for the keyword \"U8g2\" in the Library Manager. It's the u8g2 library by oliver, and click then install.
Copy the following code, click Verify to check for syntax errors. Verify that there are no errors, and you can upload the code.
// U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
voidsetup(void){
//u8x8.setBusClock(100000); // If you breakout other modules, please enable this line
u8x8.begin();
u8x8.setFlipMode(1);
}
voidloop(void){
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0,0);
u8x8.print(\"Hello World!\");
}
Attention
If you breakout all the modules and use the Grove OLED separately, you may find it won't work with this code. If you encounter such a problem, please refer to the end of this section: Breakout Guide.
Code analysis
#include<>\n
Description:
#include is used to include outside libraries in your sketch. This gives the programmer access to a large group of standard C libraries (groups of pre-made functions), and also libraries written especially for Arduino.
Note that #include, similar to #define, has no semicolon terminator, and the compiler will yield cryptic error messages if you add one.
#include<U8x8lib.h>\n
#include is an instruction that introduces a header file. Here we use the U8x8lib.h library.
Once the object is declared, you can use functions from the library.
u8x8.begin();\n
Description:
Simplified setup procedure of the display for the Arduino environment. See the setup guide for the selection of a suitable U8g2 constructor.
Syntax:
u8x8.begin()
Initialize the u8g2 library
u8x8.setFlipMode(1);\n
Description:
Some displays support a 180-degree rotation of the internal frame buffer. This hardware feature can be controlled with this procedure. Important: Redraw the complete display after changing the flip mode. Best is to clear the display first, then change the flip mode and finally redraw the content. Results will be undefined for any existing content on the screen.
Syntax:
u8x8.setFlipMode(mode)
Parameters:
mode: 0 or 1
Flips the display 180 degrees.
u8x8.setCursor();\n
Description:
Define the cursor for the print function. Any output of the print function will start at this position.
Syntax:
u8x8.setCursor(x, y)
Parameters:
x, y: Column/row position for the cursor of the print function.
Sets the draw cursor position.
u8x8.setFont()\n
Description:
Define a u8x8 font for the glyph and string drawing functions.
Syntax:
u8x8.setFont(font_8x8)
Set the font for display.
u8x8.print();\n
Draw the content on the OLED.
Demo Effect and Serial Print Result:
Prints Hello World onto the OLED Display.
U8g2 Library Reference
If you want to more information about U8g2 library, please refer to here.
Breakout Guide
Use Grove cable to connect the OLED to Seeeduino Lotus's I2C interface (Note: I2C's default address is 0x78).
Note
If you breakout other modoule to use the OLED and it do not work, or you want to use fastest OLED I2C (default: 40KHZ), please follow this instrcution:
Click \"This PC\" -> Documents -> Arduino -> libraries -> U8g2 -> src -> U8x8lib.cpp -> Sliding to 1334 line -> delete or disable this line -> save the file.
Wire.setClock(u8x8->bus_clock);// just delete or disable this line\n
Or you can set the bus lock to 100000 then add in the setup().
voidsetup(void){
u8x8.setBusClock(100000);// it for limit the I2C bus clock
HTML (HyperText Markup Language) , PHP Hypertext Preprocessor et Interation Client-Serveur : Présentation
","title":"","posi":11},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
1. Qu'est ce que PHP ?
Le PHP, acronyme récursif pour PHPHypertext Preprocessor est un langage de scripts spécialement conçu pour le développement d'applications web. Il peut être intégré facilement au HTML.
Le langage PHP a été créé en 1994 par Rasmus Lerdorf, un programmeur groenlandais et canadien pour son site web personnel.
Un exemple de code PHP
On petit exemple en PHP qui
Calcule la somme de deux varariables, $var1=5 et $var2=7 ;
Affiche la somme avec la fonction avec la fonction echo ;
Calcule et affiche la somme de deux entiers choisis aléatoirement entre 1 et 100, avec la fonction rand(1 , 100).
<!doctypehtml>
<html>
<head>
<title>
Exemple de variables
</title>
<metacharset=\"utf-8\"/>
</head>
<body>
<h1> Un premier programme en PHP : pour les tests</h1>
<?php
// Commentaires en php
// Utilisation de variables, avec le dollard $
$var1=5;
$var2=7;
$somme=$var1+$var2;
// echo permet d'afficher sur la page
// On peut méler du texte et des variables
echo\"<p>La somme de $var1 et $var2 est $somme.</p>\";
$nombre1=rand(1,100); // rand(a,b) génère un entier aléatoire entre a et b (inclus)
echo\"<p>Le 1er nombre choisi au hasard est $nombre1.</p>\";
$nombre2=rand(1,100);
echo\"<p>Le 2e nombre choisi au hasard est $nombre2.</p>\";
$somme=$nombre1+$nombre2;
// On affiche la somme
echo\"<p>La somme de $nombre1 et $nombre2 est $somme.</p>\";
?>
</body>
</html>
Visualiser le résultat Un lien vers le fichier hébergé sur un serveur distant : PHP-Exemple1.php.
Premières remarques sur le PHP
L'affichage en PHP utilise la fonction echo \" texte et $variables \". On peut afficher du texte et des variables $var simultanément très simplement.
Les lignes se terminent par un point virgule ;.
Les variables se définissent avec le dollard $var1 et peuvent s'intégrer facilement au texte.
Petit exercice important
Affichez le code source (Click droit) de la page PHP-Exemple1.php.
Vous remarquez que le code source propose juste l'affichage, sans les lignes de code PHP.
Actualisez la page, on voit que le contenu change car la fonction rand(1 , 100) est appelée.
C'est magique, le client, c'est à dire notre ordinateur ne s'aperçoit pas qu'il y a un calcul d'effectué.
Un fonctionnement distant
Le PHP fonctionne en fait sur serveur distant. On ne peut pas avoir un fonctionnement immédiat sur notre disque comme avec le HTML, le CSS ou le JavaScript.
Ce qui distingue PHP des langages de script comme le Javascript, est que le code est exécuté sur le serveur, générant ainsi le HTML, qui sera ensuite envoyé au client. Le client ne reçoit que le résultat du script, sans aucun moyen d'avoir accès au code qui a produit ce résultat. Vous pouvez configurer votre serveur web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP. Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites dynamiquement des pages statiques.
le serveur doit donc être capable de repérer les parties de codes PHP, cela se fera grâce à des balises. Le code PHP est donc inclus entre une balise de début <?php et une balise de fin ?> qui permettent au serveur web de passer en mode PHP, ce que ne fait pas votre navigateur sur votre disque dur.
Le fonctionnement du PHP
Vous pouvez maintenant tranquillement lire cette page qui expose le fonctionnement du PHP.
Il va donc nous falloir préparer un environement de travail afin de pouvoir lire les fichiers PHP.
Plusieurs solutions sont possibles, si vous avez déjà un site en ligne, tout sera plus facile, sinon, vous allez devoir installer plusieurs émulateurs de serveurs distants.
Cas 1 : j'ai un site en ligne
Si vous avez un site en ligne, tout est très simple, il vous suffit d'envoyer vos fichiers sur votre espace et de les ouvrir via votre navigateur. Chaque site à un interpréteur PHP.
Pour télécharger facilement vos fichiers, vous pouvez :
Soit vous connecter chez votre hébergeur ;
Soit utiliser un client FTP. Je vous conseil d'installer FileZilla, gratuit et très simple d'utilisation. Il vous faudra cependant récuprérer chez votre hébergeur vos identifiants de connexion. C'est un peu long la première fois mais ensuite c'est très rapide.
Il ne suffit pas d'ouvrir un fichier avec son navigateur pour que cela fonctionne, on doit généralement lancer l'émulateur puis tapper dans son navigateur :
http://localhost/MonFichier.php
WampServeur
Création automatique d’un répertoire « www » lors de l’installation (typiquement c:\\wamp\\www).
Créez un sous répertoire pour votre projet et déposez-y vos fichiers PHP
Cliquez sur le lien « Localhost » du menu de WampServer ou ouvrez votre navigateur à l’adresse :
http://localhost/MonFichier.php
Bases de données. Au lancement de PhpMyAdmin, il vous sera demandé un nom utilisateur et un mot de passe. Après installation de Wampserver 3,
le nom utilisateur par défaut est \"root\" (Sans les guillemets)
et il n'y a pas de mot de passe, ce qui veut dire que vous devez laisser la case Mot de passe du formulaire d'accès vide.
Xampp
Placer les projets dans le dossier htdocs qui est dans C:\\xampp\\htdocs
Pour ouvrir un fichier nommé MonFichier.php qui est dans le répertoire htdocs, tapper dans votre navigateur :
http://localhost/MonFichier.php
Bases de données. Pour accéder à la base de données => Admin Mysql
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
3. Un test puis les exercices et travaux dirigés
Nous sommes prêts pour un petit test.
Recopier le code source de l'exemple 1, enregistrez-le sur votre disque dur avec l'extension .php et ouvrez-le dans votre navigateur .... suspens !
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
4. Programmer en PHP
Quelques remarques sur les fonctions, les structures conditionnels en PHP
Les fonctions en PHP fonctionnent comme en Javascript. Le mot clé function permet de définir une fonction.
Les paramètres sont écrits entre parenthèses précédés du symbole $ comme toute les variables.
Le mot clé return permet de renvoyer une valeur.
Il existe de nombreuses fonctions intégrées en PHP vous pouvez consulter ces sites de références au fur et à mesure des besoins.
Exercice 1 La fonction rand(a,b) renvoie un entier aléatoire compris entre a et b. 1. Ecrire un script qui choisit aléatoirement un nombre entre 1 et 15. 2. Et qui affiche le table de multiplication de ce nombre dans un tableau. Toute amélioration est la bienvenue.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
<h1> Exercice 1 </h1>
<tableborder=\"1\">
<?php
$table=rand(1,15);
for($i=1;$i<=10;$i=$i+1) // ou ($i=1;$i<=10;$i++)
{
$calcul=$i*$table;
echo\"<tr><td>$i x $table =</td><td>$calcul</td></tr>\\n\";
}
?>
</table>
"}],[{"text":"
Exercice 2 La fonction rand(a,b) renvoie un entier aléatoire compris entre a et b. Ecrire un script en php qui : 1. choisit 100 nombres aléatoires entre 0 et 100 ; 2. les affiche ; 3. et affiche leur moyenne. Toute amélioration est la bienvenue.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
<h1> Exercice 2 </h1>
<?php
$somme=0;
for($i=1;$i<=100;$i=$i+1) // ou ($i=1;$i<=10;$i++)
{
$r=rand(1,100);
$somme=$somme+$r;
echo\"$r \";
}
$moy=$somme/100;
echo\"<br>La moyenne est de $moy\";
?>
"}],[{"text":"
5. Interagir avec une page en PHP : les méthodes GET et POST
Un script PHP s'exécute sur le serveur lorsque l'utilisateur accède à un fichier par un lien. Ce script effectue un certain nombre d'instructions pour produire la page web demandée et s'arrête lorsque celle-ci est produite. Comment faisons-nous pour passer une information d'une page à l'autre ? De l'utilisateur à la page .PHP ?
Par exemple, si je saisi mon compte utilisateur sur un site et qu'en cliquant je suis conduis vers la page de mon compte, comment cette page se souvient-elle du nom que j'ai écrit dans la page précédente ?
Il existe plusieurs solutions pour transmettre des informations d'une page aux autres :
Cookies ;
base de données ;
fichiers textes ;
la méthode GET ;
la méthode POST.
Nous allons étudier les méthodes GET et POST.
5.a. La méthode GET Interagir avec une page en PHP avec la méthode GET
Dans cet exemple, les informations après le point d'interrogation sont des données que l'on fait transiter d'une page à une autre.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
5.a.1. Former une URL pour envoyer des paramètres
Imaginons que votre site s'appelle math93.com et que vous avez une page PHP intitulée bonjour.php. Pour accéder à cette page, vous devez aller à l'URL suivante :
http://www.math93.com/bonjour.php
Pour envoyer des informations à la page bonjour.php, on va ajouter des informations à la fin de l'URL, comme ceci :
On écrit les variables et les valeurs des variables après un point d'intérogation ? .
On sépare les variables par le symbole & .
La seule limite est la longueur de l'URL. En général il n'est pas conseillé de dépasser les 256 caractères.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
5.a.2. Récupérer les valeurs des variables
Nous avons fait un lien vers le fichier php bonjour.php et à deux variables nom et prenom.
exemple3.php?nom=Galois&prenom=Evariste
Pour récupérer les valeurs des variables, on y accède via la variable $_GET.
$_GET['nom'] . à la valeur Galois ;
$_GET['prenom'] . à la valeur Evariste ;
Par exemple on a ici avec le petit code en écrivant dant la console :
Essayer de changer les noms et prénoms dans l'adresse URL.
<!doctype html>
<html>
<head>
<title>
PHP - Exemple 3
</title>
<metacharset=\"utf-8\"/>
</head>
<body>
<h1> PHP - Exemple 3 </h1>
<formaction=\"exemple3.php\"method=\"get\">
<label\"nom\">Votre Nom :</label>
<inputtype=\"text\"name=\"nom\"><br>
et <br>
<label>Votre Prénom :</label>
<inputtype=\"text\"name=\"prenom\"><br>
<inputtype=\"submit\"value=\"Envoyer\">
</form>
<?php
// les variables existent-t-elles ?
if(isset($_GET['nom']) andisset($_GET['prenom']))
{// oui les variables existent
$lenom=$_GET['nom'];
$leprenom=$_GET['prenom'];
//echo \"<p>Bonjour $_GET['prenom'] et $_GET['nom'] !</p>\" ;
echo\"<p>Bonjour $leprenom$lenom</p>\" ;
}
else
{
echo\"<p>Bonjour Madame ou Monsieur.</p>\" ;
}
?>
</body>
</html>
Remarque : isset(var) - Détermine si la variable var est déclarée et est différente de NULL.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Exercice 3 1. Ecrire une page qui prend deux nombres dans l'URL et affiche leur somme. 2. Modifier la page pour donner trois paramètres dans l'URL, deux nombres et une opération. Le résultat de l'opération sera affiché dans la page. Toute amélioration est la bienvenue.
//echo \"<p>Bonjour $_GET['prenom'] et $_GET['nom'] !</p>\" ;
if ($op==\"plus\")
{$calcul=$a+$b;
$operation=\"$a + $b =\";
}
elseif ($op==\"moins\")
{$calcul=$a-$b;
$operation=\"$a - $b =\";
}
elseif ($op==\"fois\")
{$calcul=$a*$b;
$operation=\"$a * $b =\";
}
else
{$calcul=$a/$b;
$operation=\"$a / $b =\";
}
echo\"<p>Le calcul est $operation$calcul</p>\" ;
}
else
{
echo\"<p>Pas de calcul en cours.</p>\" ;
}
?>
</body>
</html>
"}],[{"text":"
Exercice 4 1. Ecrire deux pages, la première choisissant un nombre au hasard entre -10 et 10 2. et contenant un lien vers la seconde qui affichera la racine carrée du nombre choisi, si cela est possible. Toute amélioration est la bienvenue.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
5.b. La méthode POST Interagir avec une page en PHP avec la méthode POST
Il existe une autre méthode pour passer des données d'une page à l'autre sans mentionner les valeurs dans l'URL.
Il s'agit de la méthode utilisée dans les formulaires
Un exemple
Reprenons l'exemple 3 avec le nom et le prénom.
On va donc écrire deux pages, la première une page HTML que l'on va nommer ex4-HTML.html, et la deuxième une page PHP l'on va nommer ex4-PHP.php
Afin de pouvoir accéder aux contenus envoyés par la méthode POST, il faut donner à chaque élément dont on veut récuperer les valeurs l'attribut name .
Pour récupérer les valeurs des variables, on y accède via la variable $_POST.
$_POST['nom'] . à la valeur du nom entré ;
$_POST['prenom'] . à la valeur du prénom entré ;
<!doctype html>\n<html>\n<head>\n <title>\n PHP - Exemple 4 - Méthode POST Fichier HTML\n </title>\n <metacharset=\"utf-8\"/>\n </head>\n <body>\n <h1> PHP - Exemple 4 - Méthode POST Fichier HTML</h1>\n <formaction=\"ex4-PHP.php\"method=\"post\">\n <labelfor=\"nom\">Votre Nom :</label> \n <inputtype=\"text\"name=\"nom\"> \n <div> et </div> \n <labelfor=\"prenom\">Votre Prénom :</label>\n <inputtype=\"text\"name=\"prenom\">\n <inputtype=\"submit\"value=\"Valider\">\n </form>\n</body>\n</html>\n
<!doctype html>\n<html>\n<head>\n <title>\n PHP - Exemple 4 - Méthode POST Fichier PHP\n </title>\n <meta charset=\"utf-8\"/>\n </head>\n <body>\n <h1> PHP - Exemple 4 - Méthode POST Fichier PHP </h1>\n <?php \n // les variables existent-t-elles ?\n if(isset($_POST['nom']) andisset($_POST['prenom']))\n {// oui les variables existent \n $lenom=$_POST['nom'];\n $leprenom=$_POST['prenom'];\n //echo \"<p>Bonjour $_POST['prenom'] et $_POST['nom'] !</p>\" ;\n echo\"<p>Bonjour $leprenom$lenom</p>\" ;\n }\n else\n {\n\techo\"<p>Bonjour Madame ou Monsieur.</p>\" ;\n }\n ?> \n</body>\n
Lien vers le fichier .html sur le serveur : ex4-HTML.html .
Exercice 5 Reprendre les exercices 3 et 4 mais en utilisant la méthode POST et un formulaire. Toute amélioration est la bienvenue.
"},{"edit":"
Mettre le résultat ici (code et figure).
"},{"solution":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Exercice 6 : un QCM 1. Ecrire deux pages, la première contenant un QCM avec au moins trois questions. 2. Les réponses seront proposées et l'utilisateur devra faire son choix par des cases à cocher. 3. La seconde page affichera le score obtenu. Aide : Pour récupérer l'information \"case cochée, c'est assez simple : la variable n'existe dans le post que si la case a été cochée. Toute amélioration est la bienvenue.
L'électricité existant sous différentes formes (alternatif, continu) et ayant différentes valeurs possibles (12V, 230V, ….), il existe des moyens (convertisseurs) de modifier ces valeurs et de passer d'un type d'électricité à un autre.
1. Les transformateurs : conversion alternatif/alternatif (~ vers ~)
Transformateur monophasé idéal
Les symboles du transformateur sont :
Constitution :
Principe de la conversion: alternatif → alternatif (avec conservation de la puissance apparente et de la fréquence)
Relations:
On définit alors le rapport de transformation m tel que
Puissances: Rappel: puissance apparente en monophasé: S= U × I
Donc au primaire: S1 = U1 × I1 et au secondaire S2 = U2 × I2 Relation primaire/secondaire: U2=m×U1 Si on multiplie par I2: U2×I2=m×U1×I2
Donc S1 = S2
Pertes : Il y a 2 types de pertes, les pertes « fer » et les pertes « Joules » (en charge).
Les pertes à vide (ou pertes \"fer\") se produisent au sein du noyau ferromagnétique. Elles sont constantes quel que soit le régime de charge du transformateur, c'est-à-dire quelle que soit la consommation de l’élément (charge) qui y est raccordé. Pour les déterminer on fait un essai à vide (transformateur avec secondaire non relié à la charge). On mesure la puissance consommée P10 : P10=Pfer
Les pertes joules en charge (ou pertes \"en court-circuit\" ou pertes \"cuivre\") sont, elles, dues à l'effet Joule (pertes par échauffement des conducteurs), augmentées des pertes additionnelles (pertes supplémentaires occasionnées par les courants parasites dans les enroulements et pièces de construction). Elles varient avec le carré du courant ou de la puissance débitée (si la tension reste constante). Pour les déterminer on fait un essai en court-circuit car il faut que le courant soit élevé et les pertes « fer » très faibles en comparaison, donc que les enroulements soient soumis à une faible tension. La mise en court-circuit du transformateur avec une alimentation en tension réduite permet de réaliser ces deux conditions. Les pertes du transformateur sont alors quasiment égales aux pertes par effet Joule.
Remarque :il existe aussi des transformateurs triphasé.
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
2. Les gradateurs : conversion alternatif/alternatif (~ vers ~)
Le gradateur est un convertisseur qui permet, à partir d’une tension alternative, d’obtenir une tension alternative réglable en valeur efficace (la fréquence ne change pas) ! Les gradateurs sont des éléments qui permettent de moduler l'énergie d'une source alternative.
Principe de la conversion:
Schéma de principe d'un gradateur monophasé:
(la charge est ici une résistance)
Les 2 thyristors TH1 et TH2 (ou remplacés par un seul triac) permettent de contrôler la tension que l'on applique sur la charge. Le gradateur permet par exemple de commander le démarrage d’un moteur asynchrone triphasé, de régler la puissance d’un four électrique ou la quantité de lumière d’une lampe à incandescence ou halogène. Il contient aussi un circuit électronique de commande du triac ou des thyristors (que nous n’étudierons pas).
Gradateurs 2,5A pour lampe halogène
Gradateurs modulaire 16A utilisé en variation de lumière
Gradateurs triphasé 50A pour four industriel
Utilisation en variation d’angle (découpage de phase) :
Principe : on va envoyer « périodiquement » des impulsions de commande sur le triac pour faire conduire celui-ci et obtenir des « morceaux » de la sinusoïde de la tension de départ (U).
La valeur efficace obtenue est alors plus faible que la valeur efficace du signal de départ.
α est appelé « retard à l’amorçage ». Il s’agit de l’angle (en radians) entre la tension d’origine et celle réellement présente sur la charge.
La formule de la « nouvelle tension efficace » est :
(avec α en radians)
Utilisation en train d’onde :
Principe : on laisse passer un certain nombre de sinusoïdes complètes puis on en stoppe quelques unes puis on en laisse passer à nouveau …… toujours selon le même rythme (fonctionnement périodique).
L’exemple ci-contre laisse le signal passer les ¾ du temps :
La période de fonctionnement est T. (ici 4 sinusoïdes)
Le rapport cyclique α (alpha) désigne, pour un phénomène périodique, le ratio entre la durée du phénomène et la période du phénomène :
La puissance fournie à la charge est : P = α × Pmax (Pmax = puissance fournie sans le gradateur ou avec α=0)
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
3. Les redresseurs : conversion alternatif vers continu (~ vers – )
Une des principales applications de la diode est le redressement de la tension alternative pour faire des générateurs de tension continue destinés à alimenter les montages électroniques, les moteurs à courant continu (MCC), …. Ces montages redresseurs transforment donc de l’alternatif en continu.
Redressement simple alternance :
Ue=sin 312t
comme w=312=2ΠF
Donc F=50Hz
D conduit de 0 à T/2 car Ue >0
D est bloquée de T/2 à T car Ue<0
Valeur moyenne :
Redressement double alternance :
Nom du montage : Pont de Graetz
Lorsque Ue est >0 (entre 0 et T/2), les diodes D1 et D3 conduisent
Lorsque Ue est <0 (entre T/2 et T), les diodes D2 et D4 conduisent
Valeur moyenne :
A travers ces deux montages on voit que le résultat est loin d’être parfaitement continu. Pour améliorer cela il va falloir soit rajouter un condensateur de filtrage, en parallèle, (la tension sera alors presque continue) soit ajouter une bobine en série et le courant sera alors presque continu.
Exemple avec un condensateur de lissage:
Remarque : plus la valeur du condensateur sera grande, plus le signal sera proche du continu
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
4. Les onduleurs : conversion continu vers alternatif ( – vers ~)
On appelle onduleur un convertisseur statique qui transforme une tension continue en tension alternative généralement sinusoïdale.
Principe général de fonctionnement:
Pour réaliser un onduleur autonome, il suffit de disposer d'interrupteurs et d’une source de tension continue E comme le montre la figure suivante :
Lorsque K1 et K2 fermés on obtient :
Donc : Ud (t) = E
Lorsque K3 et K4 fermés on obtient: Donc : Ud (t) = - E
On obtient donc la forme de Ud(t) sur une période complète de fonctionnement :
Si la charge est inductive (bobine), le signal (courant) commence à ressembler à du sinusoïdal :
Exemple d’onduleur :
Onduleur MLI Les onduleurs à Modulation de Largeur d'Impulsion (MLI ou PWM : Pulse Width Modulation) sont utilisés principalement pour la commande des moteurs asynchrones.
Principe : un programme commande l'envoi d'impulsions de largeur variable ce qui va créer un courant sinusoïdal dans la charge (les bobines du moteur).
Schéma d’un variateur de vitesse de moteur triphasé asynchrone:
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
5. Les hacheurs : conversion continu/continu (– vers –)
Le hacheur est un convertisseur qui permet, à partir d’une tension continue fixe, d’obtenir une tension continue réglable. Il permet par exemple de commander la vitesse d’un moteur à courant continu. Il est composé d’un ou plusieurs « interrupteurs électroniques » (transistors ou thyristors)
Exemple : le hacheur série sur charge résistive :
Définitions
Si le rapport cyclique α désigne le ratio de la durée du phénomène sur la période du phénomène :
Alors la valeur moyenne du signal en sortie du hacheur série est :
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
6. Exercices
Exercice 1: généralités Soit un système de panneaux photovoltaïques. Compléter le cadre vide par le nom du convertisseur manquant:
","title":""},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Exercice 2: généralités Compléter le synoptique d’un chargeur de téléphone portable :
"},{"edit":" "}],[{"text":"
Exercice 3: généralités
1. Compléter le synoptique du transport de l’électricité (convertisseurs)
2. Expliquer où il y a des pertes d’énergie.
"},{"edit":" "}],[{"text":"
Exercice 4: transformateur Soit un transformateur monophasé S=100VA, 230V/24V, branché sur une charge. On mesure I2=1,3A. 1. Calculer le rapport de transformation du transformateur 2. Calculer les courants nominaux (max) primaire (I1N) et secondaire (I2N) du transformateur. 3. Comparer I2N au courant I2 consommé par la charge. Que peut-on conclure ?
"},{"edit":" "}],[{"text":"
Exercice 5: transformateur Un transformateur abaisseur de tension 230V / 12V alimente une lampe halogène 12V – 1,8A. En supposant que le transformateur fonctionne dans les conditions nominales (max), calculez : 1. le rapport de transformation 2. l’intensité efficace du courant dans l’enroulement primaire lorsque la lampe est allumée. 3. la puissance électrique transmise au circuit électrique du secondaire.
"},{"edit":" "}],[{"text":"
Exercice 6: Hacheur On dispose d'une alimentation continue de 12V. On cherche à obtenir une tension moyenne de 6V. 1. Calculer la valeur du rapport cyclique. 2. Tracer la courbe de la tension fournie par le hacheur (fréquence de découpage du hacheur = 25 Hz) On veut maintenant obtenir une tension moyenne de 2,4V. 3. Calculer la valeur du rapport cyclique. 4. Tracer la courbe de la tension fournie par le hacheur (fréquence de découpage du hacheur = 25 Hz)
En poursuivant votre navigation sur mon site,
vous acceptez l’utilisation des Cookies et autres traceurs
pour réaliser des statistiques de visites et enregistrer
sur votre machine vos activités pédagogiques.En savoir plus.