Introduction: 5 Mini Projets Arduino À Réaliser Avec Le Starter Kit Elegoo

About: Passionné d'électronique numérique et de nouvelle technologie ! https://www.youtube.com/channel/UCl9vi6y04pBl-RajOrFJI8g?view_as=subscriber

Bonjour à tous dans cet Instructables nous allons voir comment réaliser 5 projets Arduino facile et idéal pour débuter en électronique ou découvrir de nouveau circuit électronique grâce au Starter kit Arduino de cher Elegoo je les remercie de m'avoir fait parvenir un de leur kit pour le tester !

Dans cet Instructables je vais vous fournir les codes et câblage, je ne pourrais pas détailler tous les projets en un seul instructables de ce fait je resterais bref sur certains projets et par la suite nous allons approfondir certains projets sur de futur Instructables à venir.

Bonne lecture !

Step 1: Chenillard À Led Avec Un Registre À Décalage 74HC595

Quoi de mieux que d'introduire l'électronique avec un circuit intégré 74HC595, un peu de résistance et de Led et un peu de code, mais au fait qu'est ce qu'un registre à décalage ?

Un registre à décalage est un assemblage de bascules commandées par une horloge commune. Il est destiné à mémoriser momentanément une donnée binaire, dans notre cas de figure l'horloge commune sera cadencé par l'Arduino par le biais de delay() et nos données binaire seront visualisées via 8 Led rouge.

Concrètement les registres à décalage sont utilisés dans les circuits numériques pour le transfert et le traitement des données binaires dans la technologie TTL notamment.

Matériel:

  • Arduino Uno
  • 74HC959
  • Breadboard
  • 8 Led
  • 8 résistance de 220Ω
  • Quelque câble

Code :

int latchPin = 5; // Broche de bascule du 74HC595
int clockPin = 6; // Broche d'horloge du 74HC595
int dataPin = 4; // Broche Data du 74HC595

byte leds = 0;


void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}

void loop()
{
leds = 0; // initialise l'état des led à 0 donc éteinte
updateShiftRegister();
delay(500);
for (int i = 0; i < 8; i++) // allume les led une par une
{
bitSet(leds, i); // initialise le bit qui controle la led
updateShiftRegister();
delay(500);
}
}


void updateShiftRegister()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, leds);
digitalWrite(latchPin, HIGH);
}

Step 2: Commander Un Moteur Avec Le L293D Et Un Joystick

Ce coup ci je vous présente comment commander votre moteur à courant continue avec variation de vitesse avec le circuit intégré L293D et un Joystick, comme vous le savez il est impossible de faire fonctionner un moteur à courant continue (CC) en branchant ce dernier directement à votre Arduino sous peine que votre petit moteur arrête de fonctionner prématurément ^^ et également du fait que l'Arduino ne fournit pas assez de courant pour pouvoir supporter le fonctionnement du moteur CC de ce fait il faut un intermédiaire pour pouvoir gérer la partie commande (Arduino) et alimentation externe du moteur, le L293D est là .

Sans trop rentrer dans les détail technique d'après la Datasheet du L293D (cf. lien hypertexte si cela vous intéresse), ce circuit intégré permet de commander deux moteur à courant continue dans les deux sens de rotation en usant du principe du pont en H qui repose tout bonnement sur la gestion de transistor commandé pour pouvoir faire changer le sens de rotation du rotor, et également par la même occasion faire moduler la vitesse en PWM ou Modulation de largeur d'impulsion.

Le moteur fourni dans le starter kit Elegoo opère à une très faible tension qui est de 5v de ce fait l'Arduino peut gérer l'alimentation externe (Vcc2) du circuit c'est pour cela qu'aucune alimentation externe n'est nécessaire.

Pour ce qui est du Joystick ce dernier va permettre de contrôler la vitesse de rotation du moteur avec le fameux signal PWM, une seule voie est câbler puisqu'une seule nous intéresse .

Matériel :

  • Arduino Uno
  • L293D
  • Joystick
  • Moteur CC 5
  • Quelque câble
  • Breadboard

Code :

int una = 6; /*broche 1A du l293d permet de gérer la vitesse en PWM*/
int deuxa = 5; /*broche 2A du l293d permet de gérer la vitesse en PWM*/
int potar = 0; /*joystick voie X seulement utilisé*/

void setup(){
pinMode(potar, INPUT);
pinMode(una, OUTPUT);
pinMode(deuxa, OUTPUT);
Serial.begin(9600);
}

void loop(){
int ret = analogRead(potar); /* lit la valeur du joystick */

ret = map(ret, 0, 1024, 0, 255); /* adapate la plage de valeur initiale qui va de 0-1024 à 0-255*/
/* turn right */
Serial.println(ret);
digitalWrite(una, LOW);
analogWrite(deuxa, ret); /*écrit la vitesse du moteur grâce au joystick*/
delay(125);
}

Step 3: Mesurer Une Distance Avec Un Capteur À Ultrason

Ce coup ci nous allons mesurer une distance avec un capteur à Ultrason et afficher directement la mesure via un écran LCD 16x2pixel.

Le principe de fonctionnement du capteur à Ultrason HC-SR04 est très simple : une impulsion de 10µs est envoyée et le capteur envoie une impulsion d'une durée proportionnelle à la distance qu'a parcouru le signal.

Ce capteur est très utile pour des petits projets à portée inférieure à 4 mètres, il est notamment utilisé dans les parkings sous terrain de certains centres commerciaux pour comptabiliser l'affluence et signaler le nombre de places disponible dans le parking.


Matériel :

  • Arduino Uno
  • Capteur à Ultrason HC-SR04
  • Afficheur Lcd 1602
  • Potentiomètre (pour gérer le rétro-éclairage)
  • Breadboard
  • Quelque câble

Code :

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const byte TRIGGER_PIN = 6; // Broche TRIGGER
const byte ECHO_PIN = 9; // Broche ECHO


const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

const float SOUND_SPEED = 340.0 / 1000;


const int var= 22;
void setup(){
lcd.begin(16,2);
Serial.begin(115200);
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
}

void loop(){
/***************************************/
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);

/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

/* 3. Calcul la distance à partir du temps mesuré */
float distance_mm = measure / 2.0 * SOUND_SPEED;

/* Affiche les résultats en mm, cm et m */
Serial.print(F("Distance: "));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F("cm, "));
Serial.print(distance_mm / 1000.0, 2);
Serial.println(F("m"));

/***************************************/
lcd.setCursor(0,0);
lcd.print("Distance:");
lcd.setCursor(9,0);
lcd.print(distance_mm / 10,1);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print(distance_mm / 1000.0, 2);
lcd.setCursor(4,1);
lcd.print("m");
delay(2000);
}

Step 4: Capteur D'humidité Et De Température Avec Le DHT11

Un petit projet utile qui peut être directement utilisé chez vous pour monitorer la température et l'humidité de votre domicile, une humidité comprise entre 40%-60% atteste d'une bonne ventilation et qualité de l'air de votre domicile, si le taux est supérieur à 70% régulièrement cela est susceptible de provoquer des troubles respiratoire chez la personne, ce projet peut éventuellement vous aider à visualiser cela en temps réel même si cela ne remplacera en rien des solutions proposé par des professionnels.

La température sera directement affiché sur un afficheur Lcd 16x2pixel, la sonde de température et d'humidité est le DHT11, sur le schéma de câblage je n'ai pas pu trouver le bon capteur DHT11 de ce fait c'est normal qu'une des broches ne soit pas câbler puisqu'il n'y en à seulement trois (cf. datasheet DHT11)

Matériel :

  • Arduino Uno
  • DHT11
  • Potentiomètre
  • écran Lcd 1602
  • Breadboard
  • Quelque câble

Code :

#include <dht11.h><br>#define DHT11PIN 7 // broche DATA -> broche 4<br>#include <LiquidCrystal.h><br><br>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);<br>  <br>dht11 DHT11;<br> <br>void setup()<br>{<br>  lcd.begin(16,2);<br>  Serial.begin(9600);<br>  while (!Serial) {<br>  }<br>  Serial.println(F("DHT11 programme d'essai "));<br>  Serial.print(F("Version librairie: "));<br>  Serial.println(DHT11LIB_VERSION);<br>  Serial.println();<br>}<br> <br>void loop()<br>{<br>  DHT11.read(DHT11PIN);<br> <br>  Serial.print(F("Humidité (%): "));<br>  Serial.print((float)DHT11.humidity, 2);<br>  Serial.print(F("\t"));<br>  Serial.print(F("Température (°C): "));<br>  Serial.println((float)DHT11.temperature, 2);<br>  lcd.setCursor(0,0);<br>  lcd.print("Humidite:");<br>  lcd.setCursor(9,0);<br>  lcd.print((float)DHT11.humidity, 0);<br>  lcd.setCursor(11,0);<br>  lcd.print("%");<br>  lcd.setCursor(0,1);<br>  lcd.print("Temp:");<br>  lcd.setCursor(5,1);<br>  lcd.print((float)DHT11.temperature, 0);<br>  lcd.setCursor(7,1);<br>  lcd.print(" Celsius");<br>  delay(1000);<br>  <br>}

Step 5: Piloter Une Led RGB Avec Un Capteur Infrarouge IR À Distance

Un petit projet Chill qui met en oeuvre des solutions utilisé de tous, la fameuse télécommande infrarouge qui commande une led RGB, dans ce tutoriel je montre comment piloter cette simple Led RGB mais le projet peut être utiliser pour commandes des Rubans de Led bien plus conséquent en terme d'allumage ou bien une lampe RGB.

Je sais que nous en sommes pas encore au Code mais il faut préciser une petite chose, mon code est adapté au clé hexadécimale de ma télécommande IR fournie par Elegoo ce qui veut dire que votre télécommande peut être susceptible d'avoir un code hexadécimale différent de ma télécommande, à adapter.

J'utilise seulements six boutons sur ma télécommande, qui va de 1 à 5 qui allume différente couleur, pour le bouton 4 un mode RGB qui parcourt toutes les couleurs et le bouton 5 avec un mode stroboscope et enfin le bouton Off pour éteindre la Led.

Matériel :

  • Arduino Uno
  • Led RGB
  • Trois résistances de 220 Ω
  • Récepteur IR
  • Télécommande IR
  • Câble

Code :

#include <IRremote.h><br><br>int RECV_PIN = 11; /*Sorti Arduino du recépteur IR*/<br>int red= 6;<br>int green= 10;<br>int blue= 9;<br>IRrecv irrecv(RECV_PIN); <br>decode_results results; // decode_results class is defined in IRremote.h<br><br>void setup() {<br>  pinMode(red, OUTPUT);<br>  pinMode(green, OUTPUT);<br>  pinMode(blue, OUTPUT); <br>  Serial.begin(9600); <br>  irrecv.enableIRIn(); // Start the receiver <br>} <br><br>void loop() { <br><br>  if (irrecv.decode(&results)) {<br>    if ((results.value) == 0xFF6897){<br>       Serial.println("0"); /* Bouton 0 */<br>       RGB_color(255,0,0); /*Red*/<br>    }<br>    else if ((results.value) == 0xFF30CF){<br>       Serial.println("1"); /* Bouton 1 */<br>         RGB_color(0,255,0); /*GREEN*/<br>    }<br>    else if ((results.value) == 0xFF18E7){<br>       Serial.println("2");/* Bouton 2 */<br>       RGB_color(0,0,255); /*Blue*/    <br>    }<br>    else if ((results.value) == 0xFF7A85){<br>       Serial.println("3"); /* White */<br>       RGB_color(255,255,255);<br>    }<br>    else if ((results.value) == 0xFF10EF){<br>      Serial.println("4");<br>      rainbow();<br>    }<br>    else if ((results.value) == 0xFF38C7){<br>      Serial.println("5");<br>      strobe();<br>    }<br>    else if ((results.value) == 0xFFA25D){<br>      Serial.println("OFF");<br>      RGB_color(0,0,0);<br>    }<br>    Serial.print(results.value, HEX); <br>    irrecv.resume(); // Receive the next value <br>  }<br>  delay (100); // small delay to prevent reading errors<br><br><br>}<br><br>void strobe(){<br>  int  var = 255;<br>  for(int i=0;i<=100;i++){<br>    if(var == 255){<br>      var = 0;<br>      RGB_color(var,var,var);<br>    }<br>    else{<br>      var = 255;<br>      RGB_color(var,var,var);<br>    }<br>    delay(50);<br>  }<br>}<br><br>void rainbow(){<br>  int green = 255,red = 255,blue = 255;<br>  for(int i=0;i<=255;i++){<br>    RGB_color(i,green,0);  <br>    Serial.println(i);<br>    green--; <br>    delay(15);<br>  }<br>  for(int i=0;i<=255;i++){<br>    RGB_color(red,0,i);  <br>    Serial.println(i);<br>    red--; <br>    delay(15);<br>  }<br>   for(int i=0;i<=255;i++){<br>    RGB_color(0,i,blue);  <br>    Serial.println(i);<br>    blue--; <br>    delay(15);<br>  }<br>  <br>  <br>}<br>void RGB_color(int red_value, int green_value, int blue_value)<br> {<br>  analogWrite(red, red_value);<br>  analogWrite(green, green_value);<br>  analogWrite(blue, blue_value);<br>}