En 1989, le hollandais Guido van Rossum commence le développement du langage de programmation Python.
Python est un langage multiplateforme, c'est-à-dire disponible sur plusieurs architectures (compatible PC, tablettes, smartphones, ordinateur low cost Raspberry Pi...) et systèmes d'exploitation (Windows, Linux, Mac, Android...).
Le langage Python est gratuit, sous licence libre.
C'est un des langages informatiques les plus populaires avec C, C++, C#, Objective-C, Java, PHP, JavaScript, Delphi, Visual Basic, Ruby et Perl (liste non exhaustive).
Actuellement, Python en est à sa version 3.
Cependant, la version 2 est encore utilisée. Attention : Python 2 n'est pas compatible avec Python 3 !
communiquer avec des ports série RS232 (librairie PySerial), en Bluetooth (librairie pybluez)...
...
Ils existent des dizaines de milliers de librairies qui sont disponibles sur le site officiel PyPI pour nous aider à réaliser des milliards de choses.
Mon premier programme en Python
Lorsque l'on apprend un nouveau langage de programmation. il est coutumiar d'écrire son premier programme pour afficher Hello world.
L'instruction en python qui affiche hello word est
print(\"Hello world\")
Exécuter le programme ci-dessous et regarder le résultat dans la fenêtre de sortie Output.
"},{"code":"print(\"Hello world\")"},{"text":"Si vous avez réalisé l'activité demandée, le bouton suivant apparaîtra en bas à droite pour réaliser l'étape d'après."}],[{"text":"Regarder attentivement ia vidéo :
"}],[{"quiz":"696"}],[{"title":"Exercice"},{"text":"Modifier le programme pour qu'il affiche la traduction en français de \"Hello world\"."},{"code":"print(\"Hello world\")"},{"solution":"print(\"Bonjour le monde\")"}],[{"text":"
Maintenant, vous allez utiliser l'éditeur de Python sur votre machine.
Aller dans Démarrer → Programmes → Python → IDLE (Python GUI)
La fenêtre Pyrhon :
Tester le code précédent dans lDLE.
>>> print(\"Hello world\")
","title":"Python sur Pc"},{"edit":"
Ecrire ici le résultat.
"}],[{"text":"
Python est un langage de programmation, où l'indentation horizontale du texte est importante. Vous apprendrez tous à ce sujet dans les activités suivantes. Mais pour l'instant il faut garder à l'esprit que placer des espaces ou des tabulations avant toute ligne de code Python peut provoquer une erreur inattendue.
Tester le code ci-dessous.
Vous pouvez vérifier comment python va se plaindre!
Corriger le bug dans le programme.
","title":"Indentation"},{"code":"print(\"Hello world\")\n print(\"Bonjour le monse\")"},{"text":"Exécuter le programme et corriger le bug."}],[{"title":"La planche à dessin de Python","posi":0},{"text":"
\"Turtle\" est une librairie de python. Celle-ci permet de commander une tortue qui dessine!
Vous pouvez utiliser des fonctions comme turtle.forward(...) et turtle.left(...) qui peuvent se déplacer autour de la tortue.
Avant de pouvoir utiliser la tortue, vous devez l'importer. Nous vous recommandons de jouer avec elle dans l'interpréteur interactif d'abord, comme il y a un peu de travail supplémentaire nécessaire pour le faire fonctionner à partir de fichiers. Il suffit d'aller à votre terminal et tapez:
>>> import turtle
>>> turtle.forward(20)
Remarque :
Bien qu'il puisse être tentant de simplement copier et coller ce qui est écrit sur cette page dans votre terminal, nous je vous encourageons à taper chaque commande. En effet de cette manière, vous retiendrez mieux les syntaxes.
turtle.forward(25)\n
turtle.left(30)\n
La fonction turtle.forward(...) indique à la tortue à aller en avant sur une distance donnée. turtle.left(...) prend un certain nombre de degrés que vous souhaitez faire pivoter vers la gauche. Il est également turtle.backward(...) et turtle.right(...) , aussi.
Remarque :
Vous voulez un nouveau départ? Vous pouvez taper turtle.reset() pour effacer le dessin que votre turtle à réalisé. Nous reviendrons plus en détail sur turtle.reset() dans la suite de la séquence.
La tortue est juste représenté par un triangle. Ce n'est pas amusant! Mettons une tortue à la place avec l'instruction turtle.shape() :
turtle.shape(\"turtle\")
Tellement mignon!
Si vous mettez les instructions dans un fichier, vous pourriez avoir remarqué que la fenêtre de la turtle disparaît après la fin du mouvement de la tortue. C'est parce que Python la ferme quand votre tortue a fini de bouger. Pour éviter cela, il suffit de mettre turtle.exitonclick() au bas de votre fichier.
Maintenant, la fenêtre reste ouverte jusqu'à ce que vous cliquez dessus:
Python est un langage de programmation, où l'indentation horizontale du texte est importante. Vous apprendrez tous à ce sujet dans le chapitre sur les fonctions. Mais pour l'instant il faut garder à l'esprit que placer des espaces ou des tabulations avant toute ligne de code Python peut provoquer une erreur inattendue. Vous pouvez essayer d'en ajouter pour vérifier comment python va se plaindre!
"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"title":"Application 1 : Dessin d' un carré"},{"text":"
Vous n'êtes pas toujours censé connaître immédiatement la réponse. Apprendre par essais et erreurs est constructif
Dessinez un carré comme dans l'image suivante:
Pour les coins, vous aurez probablement besoin d'un angle droit.
"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Si vous voulez faire preuve de créativité, vous pouvez modifier votre forme avec les fonctions turtle.width(...) et turtle.color(...). Avant de pouvoir les utiliser, vous avez besoin de connaître sa syntaxe (par exemple ce qu'il faut mettre entre les parenthèses et ce que cela rendra).
Pour le savoir , vous pouvez taper help(turtle.color) dans le shell Python. S'il y a beaucoup de texte, Python le met dans un pager. Appuyez sur la q pour quitter la pager.
Pointe
Avez-vous vu une erreur comme ceci:
NameError: name 'turtle' is not defined
en essayant d'afficher l'aide? En Python , vous devez importer les librairies avant de pouvoir se référer à eux. Donc dans un nouveau shell Python , vous aurez besoin d'import turtle pour utiliser help(turtle.color).
Une autre façon de découvrir les fonctions est de parcourir ladocumentationenligne.
","title":"Bonus"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Si vous vous trompez, vous pouvez dire à la tortue d'effacer ses traces avec turtle.reset(), ou annuler l'étape la plus récente avec turtle.undo() .
Remarque
Comme vous avez pu lire dans l'aide, vous pouvez modifier la couleur avec turtle.color( colorstring ) . Ceux - ci ne se limite pas à \"red\", \"green\" et \"violet\". Regarderr ce manuel des couleurs pour avoir une liste plus exhaustive.
Si vous souhaitez définir une valeur RGB, assurez - vous d'exécuter turtle.colormode(255) en premier. Ensuite , par exemple , vous pouvez exécuter turtle.color(215, 100,170) pour définir la couleur rose.
","title":"Prudence"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"title":"Application 2 ; dessin d' un rectangle","text":"
Pouvez-vous dessiner un rectangle aussi?
"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Dessinez un triangle équilatéral
","title":"Bonus : Que diriez-vous d'un triangle? "},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Maintenant, dessinez un carré incliné. Et un autre, et un autre. Vous pouvez expérimenter les angles entre les carrés.
La photo montre trois carrés inclinés de 20 degré. Mais vous pouvez essayer 20, 30 et 40 degré, par exemple.
","title":"Plus de places "},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Voir ici un article de Wikipédia traitant de certaines illusions d'optique
Les commandes que l'on peut demander d'exécuter pour la tortue sont:
turtle.reset():efface tout
turtle.goto(x,y): le robot va au point de coordonnées (x,y)
turtle.forward(d): le robot avance dans sa direction de d pixels
turtle.backward(d): le robot recule dans sa direction de d pixels
turtle.left(angle): tourne sur la gauche d'un angle donné en degrés
turtle.right(angle): tourne sur la droite d'un angle donné en degrés
turtle.up():relever le crayon pour pouvoir avancer sans dessiner
turtle.down():abaisser le crayon pour dessiner
Le but est de faire tracer à la tortue l'illusion suivante
","title":"Illusions d'optique"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Faire un programme qui dessine deux segments perpendiculaires, de même longueur et tel que l'extrémité de l'un soit le milieu de l'autre
","title":"Exercice 1"},{"edit":"
Mettre le résultat ici (code et figure).
"}],[{"text":"
Faire un programme qui tracent deux segments de même longueur, l'un proche de l'intersection de deux droites se coupant comme sur le dessin suivant.
https://formations-vendee.com/phare/formations-inter-entreprise/commercial-vente-inter/
A1.1.T1.Analyse du marché amont ou aval à travers la recherche d’informations techniques, financières, réglementaires et commerciales
https://bpifrance-creation.fr/encyclopedie/letude-marche/comment-faire-son-etude-marche/trouver-informations-faire-son-etude
https://www.editions-ellipses.fr/index.php?controller=attachment&id_attachment=44170
ddg
https://www.mucbts.fr/2013/09/
https://www.icrowdfr.com/2019/04/11/rapport-du-marche-2019-a-2024-tendances-analyse-principaux-fournisseurs-dynamique-du-marche-en-amont-et-en-aval-de-raccords-a-compression/
A1.1.T2. Repérage des contraintes et opportunités du marché amont ou aval
https://ics.utc.fr/innovent-e/documentations/auteur/description/res/res_lemarche.pdf
https://pastel.archives-ouvertes.fr/pastel-00994956/file/1990_EHEC_0010.pdf
https://www.men.gov.ma/Ar/Documents/TECHNICO-COMMERCIAL.pdf
https://www.furet.com/media/pdf/feuilletage/9/7/8/2/3/1/1/4/9782311403459.pdf
ddg
http://www.frederic-chartier.com/ressources-en-ligne/index.php?2012/11/26/156-bts-technico-commercial
https://www.ladissertation.com/Politique-et-International/Militaire/Rep%C3%A9rage-des-opportunit%C3%A9s-et-de-menaces-pour-lexportation-93994.html
A1.1.T3. Analyse des besoins et comportements d’achat
https://pascalkermarrec.com/2018/11/02/le-comportement-du-consommateur/#:~:text=Tout%20%C3%A9change%20%C3%A9conomique%20est%20bas%C3%A9,entreprise%20%C3%A0%20ce%20besoin%20d%C3%A9sirable.
https://junto.fr/blog/comportement-achat/
https://www.univ-montp3.fr/fr/file/18898/download?token=GR3ApkPl
TD4: comportement du consommateur et le processus achat ...https://www.univ-montp3.fr › file › download
ddg
https://tsccours.blogspot.com/2011/09/3-besoins-et-comportement-dachat.html
https://fr.surveymonkey.com/mp/buying-behavior/
http://pfrproduea.cluster020.hosting.ovh.net/wp-content/uploads/comportement-et-segmentation.pdf
https://www.ipsos.com/fr-fr/etude-des-comportements-dachat
A1.1.T4. Repérage du positionnement de l’offre du vendeur par rapport au contexte client
https://www.e-marketing.fr/Thematique/academie-1078/fiche-outils-10154/Le-positionnement-324633.htm
https://my.dauphine.fr/sites/my.dauphine.fr/files/d-start-kit-etudedemarche-2015.pdf
https://my.dauphine.fr/sites/my.dauphine.fr/files/d-start-kit-etudedemarche-2015.pdf
Livre professeur
http://heloo.fr/wp-content/uploads/2020/08/corrige-delagrave-2020-Mercatique.pdf
ddg
https://www.ladissertation.com/Monde-du-Travail/%C3%89tudes-de-Cas/Analyse-des-contextes-de-lactivit%C3%A9-de-lunit%C3%A9-commerciale-280928.html
https://www.mucbts.fr/2014/03/chapitre-9-la-mise-en-valeur-de-loffre.html
https://s6f167993a263ec2f.jimcontent.com/download/version/1605265319/module/13786943189/name/Merchandising.pdf
http://www.alain-moroni.fr/telechargement/btsmco/Exemples%20de%20CRA/D1-1%20PRESENTATION%20%20UC.pdf
A1.2 Élaboration de solutions technico-commerciales
A1.2.T1. Maîtrise de l’offre technique et commerciale proposée par l’entreprise du vendeur
http://miageprojet2.unice.fr/@api/deki/files/426/=Technilog.pdf
https://qrocimt.fr/m03_-_uv_de_specialisation_management/macs/Offre-technico-commerciale-MaxiERP.pdf
https://uptoo.fr/blog/cycle-de-vente-tout-savoir-pour-le-construire-et-le-maitriser/
ddg
https://uptoo.fr/blog/comment-reussir-vos-negociations-avec-la-technique-des-4-c/
A1.2.T2. Préparation des outils de négociation et des outils d’aide à la vente
https://go.sellsy.com/blog/outils-daide-a-la-vente-renforcez-votre-strategie-commerciale
https://www.appvizer.fr/magazine/relation-client/activation-ventes/outils-aide-a-vente
https://www.booster-academy.fr/blog-booster-academy/outils-aide-vente-strategie-commerciale/
https://www.technique-de-vente.com/wp-content/uploads/2015/12/Technique-de-Vente-pdf.pdf
A1.2.T3. Définition des objectifs de l’entretien adaptés au contexte
https://openclassrooms.com/fr/courses/4890946-gerez-la-performance-de-vos-collaborateurs/5101441-determinez-des-objectifs-et-des-indicateurs-de-performance
https://www.eurecia.com/logiciel-entretien-individuel/dossier-entretiens/entretiens-individuels-quelles-obligations
A1.2.T4. Élaboration d’une démarche de négociation personnalisée
https://salesdorado.com/negociation-commerciale/preparer-negociation-commerciale/
https://influence-web.com/comment-reussir-negociation/
A1.3 Conseil et prescription de solutions technico-commerciales
A1.3.T1. Recherche et analyse des attentes techniques et commerciales pour conseiller et prescrire des solutions en fonction du cahier des charges du client
https://www.qualtrics.com/fr/gestion-de-l-experience/etude-marche/besoin-client/
https://www.codeur.com/blog/decouvrir-besoins-clients/
A1.3.T2. Présentation argumentée d’une proposition technique, commerciale et financière en utilisant
l’expertise sur les solutions proposées
http://miageprojet2.unice.fr/@api/deki/files/426/=Technilog.pdf
https://uptoo.fr/blog/rediger-une-proposition-commerciale/
A1.4 Négociation, vente et suivi des affaires
A1.4T1. Négociation et adaptation de la solution proposée dans toutes ses composantes
https://tel.archives-ouvertes.fr/tel-00782493/document
https://www.cairn.info/revue-interdisciplinaire-d-etudes-juridiques-1994-1-page-129.htm
A1.4T2. Formalisation de la solution complète négociée
https://www.economie.gouv.fr/daj/procedure-avec-negociation-2019
https://www.demarches.interieur.gouv.fr/professionnels/procedures-marches-publics
A1.4T3. Mise en œuvre de la solution contractuelle dans ses différentes dimensions
https://www.legal-suite.fr/articles/la-gestion-des-contrats-3-etapes-pour-etre-plus-efficace-940.htm
https://www.cnil.fr/fr/les-bases-legales/choisir-base-legale
A1.4T4. Accompagnement technique du client, prise en compte de l’expérience client, évaluation et contrôle de la satisfaction du client, proposition d’amélioration de la solution le cas échéant
https://tealium.com/fr/lp/customer-data-platform-definitive-guide/?utm_source=google&utm_medium=cpc&utm_campaign=0722-PG6620A1-emea-s-search&utm_content=definitive-guide&utm_term=cdp&gclid=Cj0KCQjwuuKXBhCRARIsAC-gM0h5BDP-CJyGFVx1DVOco2QoqH-bAPM3OYXHnHmbvK3RiIe6RL62IOQaAjo6EALw_wcB
https://tel.archives-ouvertes.fr/tel-00880325/document
A1.4T5. Identification des opportunités commerciales dans une logique de partenariat durable
https://www2.deloitte.com/content/dam/Deloitte/fr/Documents/sustainability-services/deloitte_developpement-durable-au-coeur-strategies-entreprises.pdf
A1.4T6. Mise à jour de la base de données client et remontée d’informations en interne et en externe
https://tealium.com/fr/lp/customer-data-platform-definitive-guide/?utm_source=google&utm_medium=cpc&utm_campaign=0722-PG6620A1-emea-s-search&utm_content=definitive-guide&utm_term=cdp&gclid=Cj0KCQjwuuKXBhCRARIsAC-gM0ikTKziO0qh5RuO-nJqut9p_2_uL-NXO7yHuBKTClOKS4mTQO1I6GQaAs-NEALw_wcB
A1.5 Analyse financière d’une relation d’affaire et gestion du risque client
A1.5T1. Analyse du risque client et couverture du risque client
https://www.aigassurance.fr/content/dam/aig/emea/france/documents/brochure/assurance-credit/gerer-son-risque-clients.pdf
https://www.allianz-trade.fr/blog/evaluation-risque-client.html
A1.5T2. Analyse comptable, financière et commerciale d’une affaire
https://www.lecoindesentrepreneurs.fr/lanalyse-dune-entreprise/
A1.5T3. Analyse de la valeur client et du risque affaire
https://www.furet.com/media/pdf/feuilletage/9/7/8/2/8/0/7/3/9782807306172.pdf
https://www.mcours.net/cours/pdf/compta/Principes_comptables_et_analyse_financiere.pdf
A1.5T4. Gestion des litiges
https://publications.polymtl.ca/5269/1/2020_MarineEchternach-Jaubert.pdf
https://www.clearnox.com/fr/gestion-litiges-anticiper-prevenir-risques/
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.
","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 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.
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.
","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 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.
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
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.