Cours:ProcessingArduino : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Rouge|Pour aller plus loin}})
({{Bleu|Un bouton ...}})
Ligne 14 : Ligne 14 :
 
{{Question|Créer une fenêtre de taille 700x400}}
 
{{Question|Créer une fenêtre de taille 700x400}}
  
{{Question|Dessiner un disque de diamètre 300, au centre de l'écran :  }}on pourra utiliser '''width''' et '''height'''
+
{{Question|Dessiner un disque de diamètre 300, au centre de l'écran :  }}
  
{{Question|Afficher un message à chaque clic : }} on utilisera '''println'''
+
on pourra utiliser '''width''' et '''height'''
 +
 
 +
{{Question|Afficher un message à chaque clic : }}  
 +
 
 +
on utilisera '''println'''
  
 
{{Question|Modifier pour que ce message ne s'affiche que si la souris est dans le disque}}
 
{{Question|Modifier pour que ce message ne s'affiche que si la souris est dans le disque}}
  
{{Question|Modifier l'état d'un drapeau à chaque clic : }} le drapeau sera réalisé grâce à une variable de nom '''isAllume''' et de type '''boolean'''.
+
{{Question|Modifier l'état d'un drapeau à chaque clic : }}  
 +
 
 +
le drapeau sera réalisé grâce à une variable de nom '''isAllume''' et de type '''boolean'''.
  
 
{{Question|Changer la couleur du disque en fonction de l'état du drapeau (rouge ou noir)}}
 
{{Question|Changer la couleur du disque en fonction de l'état du drapeau (rouge ou noir)}}

Version du 16 octobre 2017 à 14:53

Communication Arduino -- Processing


Exercice 1

Vous allez à l'aide des différentes étapes proposées, commander des sorties de la carte Arduino (des leds), à partir d'une interface graphique écrite en langage Processing.

Un bouton ...

Commençons par créer une interaction avec l'utilisateur. Pour ce faire, on détermine une zone cliquable qui sera représentée par un cercle à l'écran.

Vous vous servirez bien évidemment de la fonction mousePressed()

Question.jpg Créer une fenêtre de taille 700x400

Question.jpg Dessiner un disque de diamètre 300, au centre de l'écran :

on pourra utiliser width et height

Question.jpg Afficher un message à chaque clic :

on utilisera println

Question.jpg Modifier pour que ce message ne s'affiche que si la souris est dans le disque

Question.jpg Modifier l'état d'un drapeau à chaque clic :

le drapeau sera réalisé grâce à une variable de nom isAllume et de type boolean.

Question.jpg Changer la couleur du disque en fonction de l'état du drapeau (rouge ou noir)

Question.jpg Initialiser la liaison série à 9600 bauds/s


// On importe la librairie qui permet de communiquer en série
import processing.serial.*;

Serial myPort; // On crée une instance de la classe Serial

void setup() 
{
  ...
  // A vous de trouver quel port série est utilisé à l'aide de print(Serial.list())
  String portName = Serial.list()[0];
  // On initialise la communication série, à la même vitesse qu'Arduino
  myPort = new Serial(this, portName, 9600);
  ...
}

Question.jpg Envoyer les caractères A ou E (allumer / éteindre), suivant l'état du flag, au clic

Pour envoyer par exemple le caractère A, il suffit d'utiliser la ligne suivante:

myPort.write("A\n");

Le caractère \n représente le caractère émis par la touche Entrée du clavier.

... une action

On modifiera l'état de la led 13 sur une carte Arduino, suivant la valeur du caractère envoyé.

Question.jpg Configurer la liaison arduino à la bonne vitesse

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

Question.jpg Configurer les e/s de la carte arduino pinMode...

Question.jpg Lire l'état de la liaison série, et modifier en conséquence l'état de la led

int incomingByte;

...

void loop() {
  if (Serial.available() > 0) { // Wow, there is some characters to read
    // read the incoming byte:
    incomingByte = Serial.read();
    if (incomingByte == 'A') ...
    ...
  }
}

Exercice 2

Plusieurs boutons

Question.jpg Modifier le programme processing en disposant 2 boutons, l'un pour allumer et l'autre pour ... éteindre !

côté arduino

Question.jpg Quelles modifications devons nous apporter ?


Exercice 3

Todo.jpg En utilisant le shieldArduino, écrire le programme répondant au cahier des charges suivant :

Modifions l'interface en disposant désormais 2 boutons, appelés + et -.

Lors de l'appui sur + (resp. -), une led supplémentaire doit s'allumer (resp. s'éteindre).

Le protocole utilisé ( message envoyé sur la liaison série) sera tout simplement le nombre de led à allumer.


Pour aller plus loin

Nous avons, dans ce TD, travaillé sur la commande d'une carte Arduino à partir d'un programme Processing.

On pourra consulter le lien suivant pour étudier le transfert d'information d'une carte Arduino vers un programme Processing.:

Arduino et Processing