========== Parcours Arduino débutant ==========

===== Que peut on faire avec un Arduino =====

[[https://www.geeek.org/domotique-5-idees-de-montages-avec-l-arduino-772/|Domotique ]]

[[https://www.maison-et-domotique.com/72194-devriez-utiliser-cartes-arduino-vos-projets-domotique/|Autres Idées 001]]

[[https://www.arduino-france.com/projets/3-projets-simples-que-vous-pouvez-realiser-avec-arduino/| Idées 002]]

[[https://www.locoduino.org/|Modélisme Ferroviaire ]]

[[https://www.firediy.fr/article/realisation-d-un-drone-a-base-d-arduino-chapitre-1|Fabriquer un Drone avec un Arduino]]

[[http://f4cvm.free.fr/arduino/projet/modelisme/recepteur_rc/recepteur_rc.htm|Modelisme 001]]

[[http://bateaux.trucs.free.fr/ageneral.html| Programmes pour modelisme ]]

[[https://gladysassistant.com/fr/blog/connecter-un-arduino-au-raspberry-pi/|Arduino et Raspberry 001 ]]

[[https://www.aranacorp.com/fr/communication-i2c-entre-raspberry-pi-et-arduino/|Arduino et Raspberry 002 ]]

[[https://www.raspberry-lab.fr/Tutoriels-Arduino/Communication-serie-entre-Raspberry-Pi-et-Arduino-Uno/|Arduino et Raspberry 003 ]]

[[https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjV-7LGprHsAhUNzIUKHc1_DmA4ChAWMAR6BAgGEAI&url=http%3A%2F%2Fwww.multimedialab.be%2Fdoc%2Ferg%2F2018-2019%2FArduino%2FMouvement_lumiere_et_son_avec_Arduino_et_Raspberry_Pi_Simon_Monk_Eyrolles_2016.pdf&usg=AOvVaw13_jH6FogQ5d_7r1I5c8Ux| Un Livre qui étudie des projets avec le Raspberry et/ou  L'Arduino]]

[[https://www.tubefr.com/feu-d-artifice-electronique-programmable-arduino_7.html#title| On fini en beauté : avec un Feu d'artifice ]]

===== Toutes les cartes arduino =====

[[https://www.arduino.cc/en/Main/Products| les cartes arduino actuelles ]]


===== Les cartes Arduino que l'on va utiliser =====

{{ :start:arduino:uno_a000066_featured_1_2.jpg?520x330 |Arduino UNO}}

{{ :start:arduino:mega_4784333051_7e90eaa383_b-e1561212488602.jpg?512x288 |Arduino Mega}}

{{ :start:arduino:nano_a000005_featured_2.jpg |Arduino Nano}}


Arduino Nano Connect RP2040
[[https://store.arduino.cc/products/arduino-nano-rp2040-connect-with-headers ]]


==== Les logiciels utiliser ====

== A télécharger sur votre ordinateur :==

La version **IDE Arduino** au 15/10/2022 est la 2.0.0 , mais on peut bien sur utiliser une version plus ancienne 1.8.19 ou [[https://login.arduino.cc/login?state=hKFo2SA1RTJfeXBkZ053bXJYQjZjZGpTU1o4VVNERzlGQ0dQWKFupWxvZ2luo3RpZNkgcWxZanZvdlpXMFJKcVBVenhieWNNWkM3RF8wdDBSMGujY2lk2SBycjZMU09TejU3aDdmdnNIZFJYWFBrWkczRVJvWFRmWg&client=rr6LSOSz57h7fvsHdRXXPkZG3ERoXTfZ&protocol=oauth2&authorizeTimeoutInSeconds=5&redirect_uri=https%3A%2F%2Fcreate.arduino.cc%2Feditor&logout_uri=https%3A%2F%2Fcreate.arduino.cc&audience=https%3A%2F%2Fapi.arduino.cc&scope=openid+profile+email&response_type=code&response_mode=query&nonce=bi5jN2NGLW1pOS5TbER4dklJd3hlY0JsNFlXRUI3Y1E0cGhHb2ZKT0hGcQ%3D%3D&code_challenge=tFaT2ogiqAOB0De9K8tZ6z7ro0Ceg1wUHWtltFcfpwU&code_challenge_method=S256&auth0Client=eyJuYW1lIjoiYXV0aDAtc3BhLWpzIiwidmVyc2lvbiI6IjEuMTIuMSJ9#/sso/login|une version en ligne 
]]


*[[https://www.arduino.cc/en/Main/Software| IDE Arduino ]]



Interface graphique d'utilisation de l'utilitaire **"avrdude"** de Atmel (celui qui est utilisé, notamment, par Arduino IDE pour téléverser le firmware ou fichier .hex sur la carte mère de votre imprimante préférée, dès lors qu'elle est à base de microcontroleur Atmel (comme l'ATmega 2560,  UNO, ou ATiny ). Cet outil est développé et entretenu par Zak Kemble (cf. http://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/).  *[[https://github.com/zkemble/AVRDUDESS|AVRDUDESS]]

**PlateformIO** est un éco système open source conçu pour le développement IOS supportant le framework Arduino. Celui-ci est accessible depuis tout type de systèmes d’exploitation puis qu’il est programmé en python.  *[[https://platformio.org/|platformio pour programmer un arduino]]


 
== Pour tester en ligne ==

[[https://www.tinkercad.com/| Tinkercad]]

Après avoir creer un compte gratuit ou utiliser votre compte Google , vous pourrez tester vos montage Arduino et aussi faire de modélisation ( Simplifiée )  pour des pieces 3D .

[[https://www.tinkercad.com/things/giPzFKw4x5v-copy-of-6ledschenillard/editel?sharecode=gYGOnM5FtS1G1TyKFkYsWSuQaWjJpeSeTYVL-3A2RjQ|Un exemple de montage arduino]] 

==== Le materiel dont on va avoir besoin ====

=== Comparaison des caractéristiques  des principales cartes Arduino et autres cartes ===

^ Cartes^ MControleurs ^ (bits)  ^ Mhz^ V^ Flash(KB)^Boot(KB)^SRam(KB)^EEprom^DigitalI/O^PWM^AnalogI/O^int^
|** Uno** |ATmega328P    |8  |16 |5 |32 |0.5 |2 |1 |14 |6 |6|2|
| **Nano **| ATmega328P    |8  |16 |5 |32 |2 |2 |1 |14 |6 |8|2|
|** Mega** |ATmega2560    |8  |16 |5 |256 |8 |8 |4 |54 |15 |16|6|
|Micro |ATmega32U4    |8  |16 |5 |32 |4 |2.5 |1 |20 |7 |12|5|
| Leonardo | ATmega32U4    |8 |16 |5 |32 |4 |2.5 |1 |20 |7 |12|5|
| Nano RP2040 |ARM Cortex M0+ |32|133|3.3|16M|--|264|--|20|20|8|20|
| MKR ZERO| SAMD21 Cortex-M0   |32  |48 |3.3 |256 | --| 32| no| 22|12 |8|10|
| [[https://www.gotronic.fr/art-carte-arduino-due-18742.htm#complte_desc|DUE]] |  AT91SAM3X8E  | 32 | 84| 3.3|512 |-- |96 |-- |54 |12 |14|54|
| MKR WIFI 1010|SAMD21 Cortex-M0 |32| 48 |3.3 | 256|-- | 32|no |8 |12 |8 |10|
| [[https://store.arduino.cc/arduino-mkr-vidor-4000|MKR Vidor 4000]]] | Intel® Cyclone® 10CL016 FPGA-SAMD21 Cortex®-M0   |32  |48/200 | 3.3| 2000| --|8000 |no | 22|tout |8|8|
| [[http://wiki.jelectronique.com/doku.php?id=esp32|ESP32]] |  Xtensa® single-/dual-core   | 32 |240 |2.7 ~ 3.6 | 64000| --|520 | 448 ROM|28 |tout |18|--|
| [[https://wiki.mchobby.be/index.php?title=PYBStick-Arduino|PYBStick26]] |  STM32F411   | 32 |100 |1.7 V to 3.6 | 512|-- |128 | --|17 |17 |6|--|
| [[https://www.sla99.fr/2019/12/01/prise-en-main-attiny85/|Doc]][[https://www.cachem.fr/fabriquer-programmateur-attiny-85/|Atiny85]] | ATINY85  | 8 |1-20 |5 | 8| -| 512o|512o | 6| 2|2|-|
|  |    |  | | | | | | | | |||
{{ :start:arduino:liste_des_composants_et_du_materiel_pour_le_mooc_t.pdf | Materiels }}

=== Des liens pour des kits arduino ===

[[https://www.arduino-france.com/review/quel-est-le-meilleur-kit-arduino-pour-debuter/| Arduino France : Kits 001  Arduino]]

[[https://www.cdiscount.com/search/10/kits+arduino.html#_his_| Cdiscount : Kits 002  Arduino]]

[[https://www.kubii.fr/29-kits-arduino| Kubii : Kits 003  Arduino]]

[[https://www.lextronic.fr/starter-kit-arduino-en-francais-k020007-27117.html| Lextronic : Kits 004  Arduino]]

[[https://boutique.semageek.com/fr/16-pack-et-starter-kits-arduino| Semageek :Kits 005  Arduino]]

[[https://store.arduino.cc/genuino-starter-kit| Arduino cc :Kits 006 Arduino]]

[[https://www.gotronic.fr/art-kit-de-base-pour-uno-12429.htm| Gotronic :Kits 007 Arduino]] 

[[https://www.ebay.fr/sch/i.html?_nkw=kit+arduino+uno| eBay : Kits 008 Arduino]] 

[[https://www.adafruit.com/product/3588|Adafruit : Kits 009 Arduino]] 

[[https://www.sainsmart.com/products/sainsmart-mega2560-r3-1602lcd-starter-kit-with-17-basic-arduino-projects| SainSmart :  Kits 010 Arduino]]


.......

==== Pour apprendre à utiliser un Arduino ====

[[https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04017+session09/about|Un MOOC pour s initier à l'Arduino (fin inscription 12/2020) ]]

[[http://wiki.funlab.fr/index.php/Fil_rouge|Des cours donner au Funlab de Tours il y a quelques temps ...]]


[[http://wiki.funlab.fr/index.php/Arduino#Quizz_pour_d.C3.A9buter_avec_l.27Arduino|Des Quiz pour mieux connaître l'Arduino]]

[[http://fablab37110.ovh/doku.php?id=start:arduino:langage_c| Le langage C ]]

[[https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c| Le Langage C++]][[http://casteyde.christian.free.fr/cpp/cours/online/book1.html| Le C++ en Ligne ]]

[[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceEtendue| Reference Langage Arduino FR]]

[[https://www.hwlibre.com/fr/attiny85/|ATtiny 85]]


{{ :start:arduino:arduinosram.tar.bz2 |Doc : SRAM Arduino}}

[[http://www.juggling.ch/gisin/microcontroleur/code_exemples.html|Des programmes Arduino ...]]

[[https://eskimon.fr/|Arduino : le blog d'Eskimon]]


=== Des Livres ===

*{{ :start:arduino_le-guide-complet.pdf |Arduino : le guide complet  pdf FR}}

*{{ :start:arduino:arduino_pour_les_nuls.pdf |Arduino pour les nuls}}

{{ :start:arduino:le_grand_livre_d_arduino.pdf | Arduino le grand Livre}}

{{ :start:arduino:arduino_-_reference-1.pdf | Arduino Reference EN}}

==== On apprend de nos erreurs ====

[[http://diwo.bq.com/fr/les-variables-sur-arduino/|les variables globales]] et la fonction  void setup  [[https://bentek.fr/5-arduino-types-donnees/| Les variables ]]

[[https://www.robot-maker.com/shop/img/cms/tuto-led/ledwiring.jpg|le sens des LEDS]] : cathode = -,  anode = +, le meplat = -

[[https://curtiszone.files.wordpress.com/2016/05/58490-resistance5bands.png?w=353&h=392|la valeur d une résistance]] : 220 ohms n'est pas 10k ohms [[https://www.ma-calculatrice.fr/calculer-valeur-resistance-couleur.php|mesure des resistances et anneaux]] [[https://www.dcode.fr/code-couleur-resistance| Calcul resistances ]][[http://www.electronique-3d.fr/Photo_des_schemas/Les_diodes_LED/Caracteristique_des_Leds.jpg|Tension de seuil]]

la connexion à la carte Arduino : [[https://www.robot-maker.com/ouvrages/tuto-arduino/installer-configurer-ide-arduino/|les ports USB sur windows 10]]

La syntaxe du langage Arduino : [[https://eskimon.fr/tuto-arduino-105-le-langage-arduino-12#les-points-virgules|les ; et les { et }
]]

**Non détection des cartes Arduino :**

Nano : soit mettre ancien bootloader,  soit mettre Uno comme carte dans --> outils --> type de cartes --> UNO 

Mega ou nano : le port COM non reconnu sous W10 , mettre à jour pilote dans gestion des périphériques,  clic droit sur port COM  et MAJ pilotes
==== Les programmes pour commencer ====

=== Pour tester la carte : Blink ===

Voir dans les programmes exemples de l IDE arduino
{{ :start:arduino:le_grand_livre_d_arduino.pdf | Arduino le grand Livre p221}}{{ :start:arduino:grand-livre-arduino_montages_.zip |Programmes des montages N°1}}

<code c Blink.ino>
int led = 13;

void setup() {
  pinMode(led, OUTPUT);      // Définit la pin 13 comme pin de sortie
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // Allume la LED
  delay(1000);               // Attend une seconde
  digitalWrite(led, LOW);    // Eteint la LED
  delay(1000);               // Attend une seconde
}

</code>

=== Le chenillard avec des LEDS Programme 1 ===

{{ :start:arduino:chenillards001.resized2.jpg?direct&400 |}}

<code c  Chenillard001.ino>
int led1 = 3; // Déclaration de la variable
int led2 = 5; // Déclaration de la variable
int led3 = 6; // Déclaration de la variable
int led4 = 9; // Déclaration de la variable
int led5 = 10; // Déclaration de la variable
int led6 = 11; // Déclaration de la variable


void setup() {
  pinMode(led1,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
  pinMode(led2,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
  pinMode(led3,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
  pinMode(led4,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
  pinMode(led5,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
  pinMode(led6,OUTPUT); // Défini la variable en tant que sortie (OUTPUT)
 
}

void loop() {

    digitalWrite(led1, HIGH);
    delay(200);
    digitalWrite(led1, LOW);
    delay(200);
    
    digitalWrite(led2, HIGH);
    delay(200);
    digitalWrite(led2, LOW);
    delay(200);
    
    digitalWrite(led3, HIGH);
    delay(200);
    digitalWrite(led3, LOW);
    delay(200);
    
    digitalWrite(led4, HIGH);
    delay(200);
    digitalWrite(led4, LOW);
    delay(200);
    
    digitalWrite(led5, HIGH);
    delay(200);
    digitalWrite(led5, LOW);
    delay(200);
    
    digitalWrite(led6, HIGH);
    delay(200);
    digitalWrite(led6, LOW);
    delay(200);
    
    
}
</code>

=== Chenillard programme2 ===



<code c Chenillard002.ino >
// ce programme allume les leds une par une
int pin[6]={3,5,6,9,10,11};
int temp0=50; //tempo pour allumer les leds
int temp1=50; // tempo pour eteindre

void setup(){
for (int i = 0 ; i<=5 ; i++){
pinMode(pin[i], OUTPUT);
}
}

void loop(){
for (int i = 0 ; i<=5 ; i++){ // boucle for pour allumer les leds une par une
digitalWrite(pin[i], HIGH);
delay(temp0);
digitalWrite(pin[i], LOW);
delay(temp0);
}
for (int i = 5 ; i>=0 ; i--){
digitalWrite(pin[i], LOW);
delay(temp1);
digitalWrite(pin[i], HIGH);
delay(temp0);
  
}

}

</code>

===  Chenillard Programme 3 en utilisant une fonction sinus ===
<code c Chenillard003.ino>
// les sorties avec PWM
#define LED1 11
#define LED2 10
#define LED3 9
#define LED4 6
#define LED5 5
#define LED6 3

// Valeur pour decaler le sinus
#define DECAL PI*2/6

// configuration des sorties
void setup(){
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    pinMode(LED4, OUTPUT);
    pinMode(LED5, OUTPUT);
    pinMode(LED6, OUTPUT);
}    

void loop() {
  for (float i=0; i<PI*2; i=i+PI*2/1000) {
    analogWrite(LED1,sin(i)*127.5+127.5);
    analogWrite(LED2,sin(i+DECAL)*127.5+127.5);
    analogWrite(LED3,sin(i+DECAL*2)*127.5+127.5);
    analogWrite(LED4,sin(i+DECAL*3)*127.5+127.5);
    analogWrite(LED5,sin(i+DECAL*4)*127.5+127.5);
    analogWrite(LED6,sin(i+DECAL*5)*127.5+127.5);
  }
}

</code>


===  Chenillard Programme 4 avec moins de ligne de code toujours  en utilisant une fonction sinus ===



<code c ChenillardSinus4>
// ce programme allume les leds une par une
int pin[6]={3,5,6,9,10,11};



// Valeur pour decaler le sinus
#define DECAL PI*2/6


void setup(){
for (int i = 0 ; i<=5 ; i++){
pinMode(pin[i], OUTPUT);
}
}

void loop() {
  for (float i=0; i<PI*2; i=i+PI*2/300) { 
    analogWrite(LED6,sin(i+DECAL*5)*127.5+127.5);   
    // ATTENTION ce programme ne fonctionne pas il faut ajouter une boucle for ...
    // A vous de chercher une solution pour remplacer 6 lignes par une seule....
    // Indices : boucle for imbriquée dans la première  avec une valeur de 0 à 5 ....
     }
  }
}
</code>

{{ :start:arduino:pwm_sinus001.pdf |Correction}}{{ :start:arduino:tp001_correction_pwm_sinus.ino.zip |programme correction}}


=== Des Électronique 1 avec Bouton poussoir  ===


[[http://78.204.53.180:16557/share/xtF3D58vrLiOiKWC/008_Le%20grand%20livre%20d_Arduino_Des_electroniques.pdf |Des électronique 2 ]]

[[https://eskimon.fr/tuto-arduino-105-le-langage-arduino-12#la-condition-ternaire-ou-condens%C3%A9e|La condition ternaire en langage C]]

{{ :start:arduino:capture_du_2020-10-06_16-04-31.resized.png?600 |}}

{{  :start:arduino:progdes..jpg?600  |}}


=== Le des électronique 2  avec capteur Lumière ===

{{ :start:arduino:capture_du_2020-10-07_11-20-57.resized.jpg?direct&600 |}}

[[http://sciences-du-numerique.fr/projet-arduino-pour-la-specialite-isn/de-electronique/41|Des électronique]]

<code c Des_electronique.ino>
const int ECART=100;
const int TEMPO=2000;

void setup(){

	randomSeed(analogRead(1));

	for(int i=2;i<=8;i++){
		pinMode(i,OUTPUT);
	} 
}

void loop(){

	int luminosite1=analogRead(0);
	delay(100);
	int luminosite2=analogRead(0);

	if(luminosite2-luminosite1>ECART){

  
		afficheDe(random(1,7));

		delay(TEMPO);
		eteintDe();
	}
}

void afficheDe(int nombre){

	if(nombre==1){
		digitalWrite(5,HIGH);
	}
	
	if(nombre==2){
		digitalWrite(2,HIGH);
		digitalWrite(8,HIGH);
	}

	if(nombre==3){
		digitalWrite(2,HIGH);
		digitalWrite(5,HIGH);
		digitalWrite(8,HIGH);
	}

	if(nombre==4){
		digitalWrite(2,HIGH);
		digitalWrite(4,HIGH);
		digitalWrite(6,HIGH);
		digitalWrite(8,HIGH);
	}
	if(nombre==5){
		digitalWrite(2,HIGH);
		digitalWrite(4,HIGH);
		digitalWrite(6,HIGH);
		digitalWrite(8,HIGH);
		digitalWrite(5,HIGH);
	}

	if(nombre==6){
		digitalWrite(2,HIGH);
		digitalWrite(3,HIGH);
		digitalWrite(4,HIGH);
		digitalWrite(6,HIGH);
		digitalWrite(7,HIGH);
		digitalWrite(8,HIGH);
	}
}

void eteintDe(){
	for(int i=2;i<=8;i++){
		digitalWrite(i,LOW);
	}
}
</code>




=== TP ===

{{ :start:arduino:tp_corrections_arduino.tar.gz |TP et corrections cours Arduino}}

[[https://www.tinkercad.com/things/hoX5BPVijd9-com-serie-entre-2-arduino/editel?sharecode=mN9YN9AKYj05K_Vn993QQigvkYpEUxvlzyIOPvBrWBE|Correction3]]

[[https://www.tinkercad.com/things/0wMSg8CVXDO-potentiometreledserie/editel?sharecode=F8MCRlWMe-vUD8eFmoCWfn2CZ3WCHStapKdmwWOoiQk|Correction_2]]
[[https://www.aranacorp.com/fr/gerer-un-ecran-lcd-par-la-connexion-i2c-dune-arduino-nano/|Corrections LCD I2C]][[https://youtu.be/R_LxirJ5R4A|Créer des caractères sur un LCD]][[start:arduino:LCD |---page doc LCD]]
 
 [[https://www.robot-maker.com/forum/blog/62/entry-54-les-potentiometres-et-les-servomoteurs/|Correction]]
[[https://eskimon.fr/tuto-arduino-901-ajouter-des-sorties-num%C3%A9riques-%C3%A0-larduino-le-74hc595|Corrections et Doc]]----[[start:arduino:74hc595|Doc 74HC595]]----[[start:arduino:mcp23017|Autre Alternative MCP23017]]



=== Autres Cours ===

{{ :start:arduino:autrfes_cours_arduino.tar.gz | Autres Cours sur arduino}}

[[http://www.juggling.ch/gisin/microcontroleur/code_exemples.html|Des programmes Arduino ...]]




