samedi 23 mars 2013

Préparation du système paramétrable

Le principe de la double goutte d'eau est le suivant :
  • On ouvre la vanne pour produire la première goutte
  • On fait une pause
  • On ouvre la vanne pour faire la seconde goutte
  • On refait une pause
  • On déclenche l'appareil photo
  • On déclenche le flash 
Voici un schéma rapide de la timeline :

Pour commencer, les deux gouttes feront la même taille, donc le temps d'ouverture de l'électrovanne sera le même : t1. Le temps séparant les deux gouttes est t2. La dernière pause, t3, va jusqu'au déclenchement du flash. Comme la prise de vue se fait dans le noir, on déclenchera l'appareil photo juste avant le flash, la vitesse d'obturation faisant durer la prise de vue jusqu'après le flash (sinon, ça ne servirait pas à grand chose...)

Plutôt que de faire des essais-erreurs et de réalimenter à chaque fois le micro-controller, je pense paramétrer le système avec trois potentiomètres pour régler les trois durées : t1, tet t3. Et pour pouvoir recréer les conditions, on va les afficher sur un écran LCD. Il nous faudra aussi deux boutons poussoir, un pour lancer le mécanisme, et un autre pour vidanger la vanne.

Vue que la taille de ma plaque de montage sans soudure est un peu petite, j'ai juste fait le montage avec trois potentiomètres et un seul interrupteur.

Voilà ce que ça donne :

J'ai réorganisé le câblage de l'écran LCD (par rapport aux tutoriaux Arduino) histoire de ne pas croiser les connexions inutilement. En outre pour éviter d'utiliser un potentiomètre pour le contraste, je l'ai remplacé par une resistance 1 kΩ, après avoir fait un test avec un potentiomètre. La deuxième resistance est une 220 Ω pour le rétro-éclairage de l'écran LCD. La résistance du bouton poussoir est une 10 kΩ.

Et voici le code qui affiche les valeurs des entrées analogiques et l'état du switch :

#include <LiquidCrystal.h>

// Instanciation de l'écran LCD
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

// Connexions des trois potentionmètres et du bouton poussoir
const int p1Pin = A2;
const int p2Pin = A1;
const int p3Pin = A0;
const int switchPin = 12;

void setup() {
  // Initialisation de l'écran (16 caractères sur 2 lignes)
  lcd.begin(16, 2);

  // Le switch est une entrée
  pinMode(switchPin, INPUT);
}

void loop() {
  // On lit les valeurs des trois potentiomètres
  int p1 = analogRead(p1Pin);
  int p2 = analogRead(p2Pin);
  int p3 = analogRead(p3Pin);

  // On efface l'écran
  lcd.clear();

  // Affichage des valeurs des trois potentiomètres
  lcd.setCursor(0, 0);
  lcd.print("P1:");
  lcd.print(p1);

  lcd.setCursor(8, 0);
  lcd.print("P2:");
  lcd.print(p2);

  lcd.setCursor(0, 1);
  lcd.print("P3:");
  lcd.print(p3);

  // Affichage de l'état du bouton poussoir
  lcd.setCursor(8, 1);
  if (digitalRead(switchPin) == HIGH) {
    lcd.print("ON");
  }
  else {
    lcd.print("OFF");
  }

  // Petite pause
  delay(10);
}



  

Aucun commentaire:

Enregistrer un commentaire