Skip to content

AtelierNum/projet_focus

Repository files navigation

WORK IN PROGRESS

Partie Fab

Vous devriez aussi vous referez aux connexions pour voire comment les composants doivent etre connectes entre eux.

Connexions

MP3V4 Arduino Uno MPR121
RX D2
TX D3
VCC 5V
GND GND
SCL SCL
SDA SDA
5V VIN
GND GND

Note : Pour vos futur circuits, c'est ce genre de tableeu que vous devriez en prendre note. Un dessin comme ci-dessus c'est ideal mais ca prend du temps, une photo c'est instantane mais c'est toujours illisible.

Partie Num

note pour moniteurs technique

Dans l'idee:

- presentation de 20min sur arduino
- 30min pour installer l'ide
- (slot expendable et skippable de 2h20) : apprendre les bases
- 30min pour installer les libs
- 20min pour tout brancher et televerser le bloc final

Télécharger le logiciel

Allez sur https://www.arduino.cc/en/software

Sélectionnez “Win 10 and newer” si vous êtes sur windows,

Ou sélectionnez “MacOS” si vous êtes sur MacOS.

Connecter la carte

Une fois que l’Arduino IDE est téléchargé, installé, et ouvert vous pouvez brancher votre Arduino Uno à votre PC. (Essayez de ne pas passer par un adaptateur si vous pouvez)

Sélectionnez votre Arduino dans le menu déroulant “Select Board”

Projet de base

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Normalement, vous n'avez encore rien fait d'autre que de selectionner votre carte et pourtant vous avez deja ce code dans la fenetre principale.

Tous les projets arduino partent de ce bout de code plutot que d'une page blanche. Si vous avez besoin d'une preuve supplementaire vous pouvez cliquer sur File > New en haut a gauche de la fenetre, et vous ouvrirez une nouvelle fenetre avec un projet tout neuf contenant quand meme ces quelques lignes.

Ce code est le cadre minimum. En echange de GRANDEMENT vous faciliter la tache comparer a un projet d'electronique pur, l'environement arduino vous demande d'avoir au moins ces deux blocs.

Chaque bloc a un nom et son contenu est delimite par ses accolades {} (le "void" on verra plus tard).

Le code qui est dans setup() s'executera au demarrage de l'arduino, et le code qui est dans le bloc loop() se relancera toujours des qu'il se finit.

Quand on avance dans le noir on met au moins les mains devant soi

C'est beaucoup d'informaton d'un coup, donc pratiquons un peu.

On va apprendre a faire l'une des manip' les plus essentielles, on va voir comment afficher des informations dans la console de votre ordinateur depuis le code de l'arduino. L'interet est que si on peut s'afficher des informations depuis l'arduino, on pourra surveiller le comportement du programme pour avoir des indices sur ce qui cloche quand on n'aura pas le resultat qu'on charche.

Si on copie ce code ci-dessous et qu'on l'utilise pour remplacer le code contenu dans votre editeur ...

// put your setup code here, to run once at the start
void setup() {

	//starts a connection between the Arduino and the computer
	Serial.begin(9600);//9600 is the number of times the signal can be updated per second in the wire (you have the absolute permission to not care about that, just put 9600)

	Serial.println("Hello :3");//send whatever is between the () to the computer
}

// put your main code here, to run over and over and over and...
void loop() {


}

... et que vous cliquer sur cette icone pour ouvrir la console ...

//TODO opening console image

... alors vous devriez y voir ce message

//TODO image de la console avec le message dedans

On peut aussi mettre le Serial.println() dans le loop comme ceci

// put your setup code here, to run once at the start
void setup() {
	//starts a connection between the Arduino and the computer
	Serial.begin(9600);//9600 is the number of times the signal can be updated per second in the wire (you have the absolute permission to not care about that, just put 9600)
}

// put your main code here, to run over and over and over and...
void loop() {
  Serial.println("Hello :3");//send whatever is between the () to the computer
}

... et constater que le message se repete bien a l'infini puisque le bloc loop() recommence des qu'il se fini.

//TODO image de la console qui stream hello non stop

D'ailleurs pour mieux se rendre compte du fait que ca defile, je vous propose d'activer l'option qui date les messages

//TODO image de l'option timestamp

Le code s'execute toujours une ligne apres l'autre, de haut en bas. On a d'abord Serial.begin() qui va ouvrir la connexion entre votre arduino et votre ordinateur, puis Serial.println() qui va envoyer un message a votre ordinateur suivi d'un retour a la ligne.

D'ailleurs vous pouvez essayer d'inverser l'ordre des lignes, de mettre l'ouverture de la connexion APRES l'envoi du message pour constater que ca ne marche pas, peut importe combien de fois vous appuierez sur le bouton reset dans le coin de l'arduino, on ne verra pas de nouveau message si les etapes ne sont pas faites dans l'ordre.

Le 9600 correspond au type de connexion qu'on essaye d'etablir, il faut juste que la valeur dans le code et la valeur dans la console correspondent.

//TODO image avec le code a gauche et la console a droite et une fleche qui relie les deux baud rate

Vous pourriez replacer 9600 par 115200 a ces deux endroits, ca marcherait aussi.

Pour ce qui est de Serial.println() vous pouvez changer le texte par ce que vous voulez mais vous remarquerez que si vous retirez les guillemets " le code ne sera plus valide. Et c'est normal parce que Serial.println() affichera la valeur qui est entre ses parantheses et que si vous mettez des guillemets alors c'est litterallement du texte et qui si vous n'en mettez pas c'est du code et Serial.println() affichera le resultat.

Comme ceci :

void setup() {
	Serial.begin(9600);
}

void loop() {
  Serial.println("8 + 3");
  Serial.println(8 + 3);
}

Le premier Serial.println() affichera litteralement 8 + 3 tandis que le deuxieme va executer le code entre les parantheses et le donner a Serial.println() pour affichage.

Variables locales, variables globales, delay(), et arithemitque

  • arithmetique + serial
  • arithmetique + variable + serial
    • pour expliquer la difference entre la declaration et l'utilisation on peut essayer de l'utiliser sans la declarer
  • difference entre global et local

//TODO on fait clignoter une LED de plus en plus lentement en modifiant incrementalement une variable globale

Boutons, LEDs, if, et fonctions arduino

  • global qui drifte et allume eteint une led
  • bouton qui gere cette difference

Fonctions custom

//NOTE ce chapitre est surtout la pour pouvoir cacher des trucs plus tard, comme readMPRPin(pin) par exemple commme ca on peut remplacer la boucle for par une douzaine de lignes

Realiser le circuit

C.f. la partie connexions commune avec la partie fab.

Verifier que les composants fonctionnent

Installer une lib depuis la manageur de librairies

//TODO donner meilleur code d'example que celui venant officiellement avec le MPR121,s sans le BV avec les helpers ci-dessous

Installer une lib depuis un zip

All of it

#include <Wire.h>
#include "Adafruit_MPR121.h"
#include <SoftwareSerial.h>
#include "src/WT2605C_Player.h"

#define MAX_VOLUME 30

SoftwareSerial SSerial(2, 3);  // RX, TX
#define mp3Serial SSerial

WT2605C<SoftwareSerial> Mp3Player;

Adafruit_MPR121 cap = Adafruit_MPR121();
uint16_t lasttouched = 0;
uint16_t currtouched = 0;

void setup() {
  Serial.begin(9600);

  mp3Serial.begin(115200);
  delay(1);
  Mp3Player.init(mp3Serial);

  setVolume(MAX_VOLUME / 4);

  if (!cap.begin(0x5A)) {
    Serial.println("MPR121 not found, check wiring?");
  } else {
    Serial.println("MPR121 found!");
  }
}

void loop() {
  // Get the currently touched pads
  currtouched = cap.touched();

  if (isMprPinTouched(0)) {
    playSong(0);
  }

  if (isMprPinTouched(1)) {
    playSong(1);
  }

  if (isMprPinTouched(2)) {
    playSong(2);
  }

  // reset our state
  lasttouched = currtouched;
}

bool isMprPinTouched(pin) {
  bool pinTouching = currtouched & (1 << pin);
  bool pinWasTouching = lasttouched & (1 << pin);

  if (pinTouching && !pinWasTouching) {
    return true;
  }

  return false;
}

// yeah, these are here just so you can easily tell they're available
// they don't actually add anything
void playSong(int songIndex) {
  Mp3Player.playSDRootSong(songIndex);
  delay(2);
}

void playMode(uint8_t mode) {
  Mp3Player.playMode(mode);
}

void setVolume(uint8_t volume) {
  volume = constrain(volume, 0, MAX_VOLUME);
  Mp3Player.volume(volume);
}

void pausePlay() {
  Mp3Player.pause_or_play();
}

void next() {
  Mp3Player.next();
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages