Arduino contrôle water drop

Les cartes Arduino, les platines

Re: Arduino contrôle water drop

Message non lude Follet » Mar 10 Juil 2012 22:49

C'est promis ...si j'y arrive ;)
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude SesechXP » Mer 11 Juil 2012 07:56

Des photos ! C'est pour vérifier que ça fonctionne :D
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Lionel » Mer 11 Juil 2012 08:58

Bonjour, ben non, on veut tout en synthèse,

  • la liste des éléments mis en oeuvre,
  • le code modifié,
  • schéma si il y en a un,
  • photo du montage
  • photos prises grâce au montage.

C'est une manière de remercier l'ensemble des intervenants à ce sujet, d'apporter votre contribution a la communauté en permettant à d'autres utilisateurs de réaliser eux aussi ce montage grâce a vous.

Merci
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Arduino contrôle water drop

Message non lude SesechXP » Mer 11 Juil 2012 09:04

D'accord avec Lionel, et même pour toi Follet ce sera un bon moyen de consigner tes travaux ;)
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Follet » Jeu 12 Juil 2012 17:05

Ca sera avec grand plaisir Lionel, tout fonctionne impec. il ne me reste juste une petite chose à terminer c'est la possibilité d'utiliser les boutons de mon display pour entrée dans le programme de Photoduino donc si tu peux me dire comment faire afin de modifier les codes et de terminer l’ensemble ça serait super je te joins un ex. pour le display et un autre pour le Photoduino.

http://www.dfrobot.com/wiki/index.php?t ... DFR0009%29

Example use of LCD4Bit_mod library

Code: Tout sélectionner
//
#include <LCD4Bit_mod.h>
//create object to control an LCD.
//number of lines in display=1
LCD4Bit_mod lcd = LCD4Bit_mod(2);
//Key message
char msgs[5][15] = {"Right Key OK ",
                    "Up Key OK    ",
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup() {
  pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat
 
  lcd.init();
  //optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()
  //lcd.commandWrite(0x0F);//cursor on, display on, blink on.  (nasty!)
   lcd.clear();
  lcd.printIn("KEYPAD testing... pressing");
}
void loop()
{
adc_key_in = analogRead(0);    // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey) // if keypress is detected
    {
    delay(50);      // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor
    key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey)           
    {         
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  //line=2, x=0
    lcd.printIn(msgs[key]);
      }
    }
  }
  digitalWrite(13, LOW);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{   int k;
    for (k = 0; k < NUM_KEYS; k++)
    {
        if (input < adc_key_val[k])
        {  return k;  }
    }
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    return k;
}






Et voici celui que j'ai modifier de Photoduino

This file is part of Photoduino.
Code: Tout sélectionner
*
 * Photoduino is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Photoduino is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Photoduino.  If not, see <http://www.gnu.org/licenses/>.
 */

/* ------------------------------------------------------------------------------------------------ *
 *                                         CONFIGURATION VALUES:                                    *
 *                                You can set the next configuration values                         *
 *                                 before compile and upload this sketch                            *
 * ------------------------------------------------------------------------------------------------ */

//
// Language of menus:
// - Set the language of menus in LCD
//
// Valid values:
// - "language_EN.h" for (English)
// - "language_ES.h" for (Spanish)
// - "language_IT.h" for (Italian)
// - "language_FR.h" for (Francais)
//
#define LANGUAGE_FILE "language_Fr.h"

//
// Default Camera Shutterlag:
// - The default value for shutterlag to load when you reset config.
// - Also configurable throught menus.
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
// - Check your camera model at: http://www.photoduino.com/documentation/reference/cameras-shutterlag/
//
#define DEFAULT_SHUTTERLAG               100 // ms

//
// Default intercicle time:
// - The default value in miliseconds camera needs to process photo and be ready for the next.
// - Also configurable throught menus.
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
//
#define DEFAULT_INTERCYCLE_TIME          200 // ms

//
// Default camera mirror lock-up time limit:
// - When use the mirror lock-up shooting mode, all cameras has a limit time (about 30 seconds) to
//   make the photo while the mirror is locked up. After that time, the mirror is automaticaly unlocked
//   by the camera without taking photo. The next value is this time in miliseconds to say to photoduino
//   when to re-lock-up the mirror if no photo has taken.  Also configurable throught menus.
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
//
#define DEFAULT_CAMERA_MIRROR_LOCKUP_TIMEOUT         31000 //ms

//
// Default device port type:
// - You can set the default device connected to DEVICE port.  Also configurable throught menus.
//
// Valid values:
// - DEVICE_PORT_TYPE_NONE
// - DEVICE_PORT_TYPE_LASER
//
#define DEFAULT_DEVICE_PORT_TYPE                DEVICE_PORT_TYPE_NONE   

//
// Default sensor type:
// - You can set the default sensor type.  Also configurable throught menus.
//
// Valid values:
// - SENSOR_TYPE_BARRIER
// - SENSOR_TYPE_AUDIO
// - SENSOR_TYPE_LIGHT
// - SENSOR_TYPE_SHOCK
//
#define DEFAULT_SENSOR_TYPE                     SENSOR_TYPE_BARRIER

//
// Default sensor tunning mode:
// - You can set the default sensor tunning mode.  Also configurable throught menus.
//
// Valid values:
// - SENSOR_TUNNING_VISUAL
// - SENSOR_TUNNING_NUMERIC
//
#define DEFAULT_SENSOR_TUNING_MODE              SENSOR_TUNING_VISUAL

//
// Pulse width for shooting flashes:
// - Time in microseconds of the pulse to shoot the flashes.
// - Increase this value if you have problems with your flash model.
//
// Valid values:
// - Number between 0 and 59999 in microseconds
//
#define DEVICES_FLASHES_SHOOTING_PULSE     4000 // us


//
// Arduino board type:
// - Make the firmware compatible with different boards
//
// Valid values:
// - BOARD_ARDUINO_DUEMILANOVE_OR_UNO
// - BOARD_ARDUINO_MEGA
//
#define BOARD_ARDUINO_DUEMILANOVE_OR_UNO

/* ------------------------------------------------------------------------------------------- *
 *                                     IMPORTANT NOTE:                                         *
 *                        You don't need to modify the code below this lines                   *
 * ------------------------------------------------------------------------------------------- */

// Signature and version codes
#define SIGNATURE_CODE1             29 // day
#define SIGNATURE_CODE2             5  // month
#define SIGNATURE_CODE3             20 // century
#define SIGNATURE_CODE4             12 // year of century
#define CODE_MAJOR_VERSION          1  // major version
#define CODE_MINOR_VERSION          1  // minor version

// Default system config
#define DEFAULT_system_useBacklight                   true
#define DEFAULT_system_useSpeaker                     true
#define DEFAULT_system_useFlash1                      true
#define DEFAULT_system_useFlash2                      true
#define DEFAULT_system_sensorTuningMode               DEFAULT_SENSOR_TUNING_MODE
#define DEFAULT_system_cameraShutterLag               DEFAULT_SHUTTERLAG
#define DEFAULT_system_cameraMirrorLockUpTimeout      DEFAULT_CAMERA_MIRROR_LOCKUP_TIMEOUT
#define DEFAULT_system_devicePortType                 DEFAULT_DEVICE_PORT_TYPE

// Default interval mode config
#define DEFAULT_intervalometerMode_autofocusTime      0
#define DEFAULT_intervalometerMode_preFlash1Time      0
#define DEFAULT_intervalometerMode_preFlash2Time      0
#define DEFAULT_intervalometerMode_preCloseTime       0
#define DEFAULT_intervalometerMode_intervalUnits      UNITS_SECS
#define DEFAULT_intervalometerMode_intervalValue      1
#define DEFAULT_intervalometerMode_numCycles          0

// Audio trigger mode default config
#define DEFAULT_sensorTriggerMode_sensorType          DEFAULT_SENSOR_TYPE
#define DEFAULT_sensorTriggerMode_sensorAudioLimit    500
#define DEFAULT_sensorTriggerMode_sensorBarrierLimit  500
#define DEFAULT_sensorTriggerMode_sensorLightLimit    500
#define DEFAULT_sensorTriggerMode_sensorShockLimit    500
#define DEFAULT_sensorTriggerMode_shootingMode        SHOOTINGMODE_NORMAL
#define DEFAULT_sensorTriggerMode_autofocusTime       0
#define DEFAULT_sensorTriggerMode_preFlash1Time       0
#define DEFAULT_sensorTriggerMode_preFlash2Time       0
#define DEFAULT_sensorTriggerMode_preCloseTime        0
#define DEFAULT_sensorTriggerMode_numCycles           0
#define DEFAULT_sensorTriggerMode_interCycleTime      DEFAULT_INTERCYCLE_TIME
#define DEFAULT_sensorTriggerMode_dropsCount          3
#define DEFAULT_sensorTriggerMode_dropsDuration       20
#define DEFAULT_sensorTriggerMode_dropsInterval       1000

// LCD settings
#define LCD_COLS             16 // columns
#define LCD_ROWS             2  // rows

// Pinout settings
#define PINS_LCD_LED         13 //(digital pin)
#define PINS_LCD_RS          8 //(digital pin)
#define PINS_LCD_ENABLE      9 //(digital pin)
#define PINS_LCD_DB4         4 //(digital pin)
#define PINS_LCD_DB5         5  //(digital pin)
#define PINS_LCD_DB6         6  //(digital pin)
#define PINS_LCD_DB7         7  //(digital pin)
#define PINS_BUZZER          6  //(digital pin with pwm)
#define PINS_SHUTTER         5  //(digital pin)
#define PINS_AUTOFOCUS       4  //(digital pin)
#define PINS_BTN_A           3  //(digital pin)
#define PINS_BTN_B           2  //(digital pin)

#define PINS_SENSOR_SHOCK    5  //(analog pin)
#define PINS_SENSOR_BARRIER  4  //(analog pin)
#define PINS_SENSOR_MIC      3  //(analog pin)

#ifdef BOARD_ARDUINO_MEGA    // For ArduinoMega compatibility
  #define PINS_FLASH1        56 // Mega pin 56 = Duemilanove 16 (digital pin)
  #define PINS_FLASH2        55 // Mega pin 55 = Duemilanove 15 (digital pin)
  #define PINS_DEVICE        54 // Mega pin 54 = Duemilanove 14 (digital pin)
#else 
  #define PINS_FLASH1        16 //(digital pin)
  #define PINS_FLASH2        15 //(digital pin)
  #define PINS_DEVICE        14 //(digital pin)
#endif

#define PINS_LASER           PINS_DEVICE  // alias(digital pin)
#define PINS_SOLENOID_VALVE  PINS_DEVICE  // alias(digital pin)

// Sensor types
#define SENSOR_TYPE_NONE                 0 // None sensor
#define SENSOR_TYPE_AUDIO                1 // Audio sensor
#define SENSOR_TYPE_BARRIER              2 // Barrier sensor
#define SENSOR_TYPE_LIGHT                3 // Light sensor
#define SENSOR_TYPE_SHOCK                4 // Shock sensor

// Sensor tunning modes
#define SENSOR_TUNING_VISUAL             0 // Visual
#define SENSOR_TUNING_NUMERIC            1 // Numeric

// Sensor limit modes
#define SENSOR_MODE_LOWER                0 // for triggering by lower values
#define SENSOR_MODE_HIGHER               1 // for triggering by higher values

// Shooting modes
#define SHOOTINGMODE_NORMAL              0 // Normal mode
#define SHOOTINGMODE_PREBULB             1 // Prebulb mode
#define SHOOTINGMODE_MIRRORLOCKUP        2 // Mirror lookup mode

// Device types
#define DEVICE_PORT_TYPE_NONE            0 // None device connected
#define DEVICE_PORT_TYPE_LASER           1 // Laser connected for laser barrier
#define DEVICE_PORT_TYPE_SOLENOID_VALVE  2 // Solenoid valve connected for liquid drops

// Measurement units
#define UNITS_MS             0  // miliseconds
#define UNITS_SECS           1  // seconds
#define UNITS_MINS           2  // minutes
#define UNITS_HOURS          3  // hours
#define UNITS_DAYS           4  // days
#define UNITS_CYCLES         10 // cycles
#define UNITS_US             11 // microseconds
#define UNITS_DROPS          12 // drops

// Keycodes
#define KEY_NONE             0 // No keys pressed
#define KEY_A                1 // Button A was pressed
#define KEY_B                2 // Button B was pressed
#define KEY_AH               3 // Button A was pressed and holded (KEY_HOLD_TIME) milisecons
#define KEY_BH               4 // Button B was pressed and holded (KEY_HOLD_TIME) milisecons
#define KEY_ABH              5 // Buttons A+B was pressed and holded (KEY_HOLD_TIME) milisecons

// Keyboard times
#define KEY_DEBOUNCE_TIME    30 // debounce time (ms) to prevent flickering when pressing or releasing the button
#define KEY_HOLD_TIME       400 // holding period (ms) how long to wait for press+hold event
#define KEY_HOLD_TIME_WAIT  100 // Used for double key holding

// Characters and symbols addresses on lcd eeprom
#define SYMBOL_DOWN         0x00 // Down arrow
#define SYMBOL_UP           0x01 // Up arrow
#define SYMBOL_BOX          0xff // Black box

// EEPROM size in bytes
#define EEPROM_SIZE         0x200 

// EEPROM Addresses for signature code and version of firmware
#define EE_ADDR_SIGNATURE_CODE1                      0x00 // BYTE
#define EE_ADDR_SIGNATURE_CODE2                      0x01 // BYTE
#define EE_ADDR_SIGNATURE_CODE3                      0x02 // BYTE
#define EE_ADDR_SIGNATURE_CODE4                      0x03 // BYTE
#define EE_ADDR_CODE_MAJOR_VERSION                   0x04 // BYTE
#define EE_ADDR_CODE_MINOR_VERSION                   0x05 // BYTE

// EEPROM Addresses for system config
#define EE_ADDR_system_useBacklight                  0x10 // BYTE
#define EE_ADDR_system_useSpeaker                    0x12 // BYTE
#define EE_ADDR_system_sensorTuningMode              0x14 // BYTE
#define EE_ADDR_system_cameraShutterLag              0x16 // WORD
#define EE_ADDR_system_cameraMirrorLockUpTimeout     0x18 // WORD
#define EE_ADDR_system_useFlash1                     0x1A // BYTE
#define EE_ADDR_system_useFlash2                     0x1C // BYTE
#define EE_ADDR_system_devicePortType                0x1E // BYTE

// EEPROM Addresses for interval mode config
#define EE_ADDR_intervalometerMode_autofocusTime     0x30 // WORD
#define EE_ADDR_intervalometerMode_preFlash1Time     0x32 // WORD
#define EE_ADDR_intervalometerMode_preFlash2Time     0x34 // WORD
#define EE_ADDR_intervalometerMode_preCloseTime      0x36 // WORD
#define EE_ADDR_intervalometerMode_intervalUnits     0x38 // BYTE
#define EE_ADDR_intervalometerMode_intervalValue     0x3A // WORD
#define EE_ADDR_intervalometerMode_numCycles         0x3C // WORD

// EEPROM Addresses for sensor trigger mode config
#define EE_ADDR_sensorTriggerMode_sensorType         0x50 // BYTE
#define EE_ADDR_sensorTriggerMode_sensorAudioLimit   0x52 // WORD
#define EE_ADDR_sensorTriggerMode_sensorBarrierLimit 0x54 // WORD
#define EE_ADDR_sensorTriggerMode_sensorLightLimit   0x56 // WORD
#define EE_ADDR_sensorTriggerMode_sensorShockLimit   0x58 // WORD
#define EE_ADDR_sensorTriggerMode_shootingMode       0x5A // BYTE
#define EE_ADDR_sensorTriggerMode_autofocusTime      0x5C // WORD
#define EE_ADDR_sensorTriggerMode_preFlash1Time      0x5E // WORD
#define EE_ADDR_sensorTriggerMode_preFlash2Time      0x60 // WORD
#define EE_ADDR_sensorTriggerMode_preCloseTime       0x62 // WORD
#define EE_ADDR_sensorTriggerMode_numCycles          0x64 // WORD
#define EE_ADDR_sensorTriggerMode_interCycleTime     0x66 // WORD
#define EE_ADDR_sensorTriggerMode_dropsCount         0x68 // WORD
#define EE_ADDR_sensorTriggerMode_dropsDuration      0x6A // WORD
#define EE_ADDR_sensorTriggerMode_dropsInterval      0x6C // WORD

// Import libraries
#include <avr/pgmspace.h>  // For messages in flash memory
#include <LiquidCrystal.h> // For LCD Display use
#include <EEPROM.h>        // For persistent config
#include "FirmataLite.h"   // For remote control throught USB
#include LANGUAGE_FILE     // Messages

// LiquidCrystal LCD control object instance
LiquidCrystal lcd(PINS_LCD_RS, PINS_LCD_ENABLE, PINS_LCD_DB4, PINS_LCD_DB5, PINS_LCD_DB6, PINS_LCD_DB7);

// Variables used on interrupt mode
volatile boolean cancelFlag = false;    // Flag used to abort interrupt mode

// Remote mode variables
boolean remoteMode = false;
boolean remoteSensorBroadcasting = false;
boolean remoteSensorBroadcastingBeepOnLimit = false;

// Global variables
byte         lastKey = KEY_NONE;        // Last key pressed
boolean      flagHoldKey = false;       // Flag to ignore keys after a hold key
byte         lastProgressBarValue = 0;  // Last value of progress bar

// System config in ram
boolean      system_useBacklight;   
boolean      system_useSpeaker;
byte         system_sensorTuningMode;
unsigned int system_cameraShutterLag;
unsigned int system_cameraMirrorLockUpTimeout;
boolean      system_useFlash1;
boolean      system_useFlash2;
byte         system_devicePortType;

// Interval mode config in ram
unsigned int intervalometerMode_autofocusTime;
unsigned int intervalometerMode_preFlash1Time;
unsigned int intervalometerMode_preFlash2Time;
unsigned int intervalometerMode_preCloseTime;
byte         intervalometerMode_intervalUnits;
unsigned int intervalometerMode_intervalValue;
unsigned int intervalometerMode_numCycles;

// Sensor trigger mode config in ram
byte         sensorTriggerMode_sensorType;
unsigned int sensorTriggerMode_sensorAudioLimit;
unsigned int sensorTriggerMode_sensorBarrierLimit;
unsigned int sensorTriggerMode_sensorLightLimit;
unsigned int sensorTriggerMode_sensorShockLimit;
byte         sensorTriggerMode_shootingMode;
unsigned int sensorTriggerMode_autofocusTime;
unsigned int sensorTriggerMode_preFlash1Time;
unsigned int sensorTriggerMode_preCloseTime;
unsigned int sensorTriggerMode_preFlash2Time;
unsigned int sensorTriggerMode_numCycles;
unsigned int sensorTriggerMode_interCycleTime;
unsigned int sensorTriggerMode_dropsCount;
unsigned int sensorTriggerMode_dropsDuration;
unsigned int sensorTriggerMode_dropsInterval;

// Setups at startup
void setup()
{   
  // Create custom LCD symbols
  byte char_arrow_down[8] = {B00000, B00100, B00100, B00100, B00100, B10101, B01110, B00100};
  byte char_arrow_up[8]   = {B00100, B01110, B10101, B00100, B00100, B00100, B00100, B00000};

  // LCD initialize
  lcd.begin( LCD_COLS,  LCD_ROWS);
  lcd.createChar(SYMBOL_DOWN, char_arrow_down);
  lcd.createChar(SYMBOL_UP, char_arrow_up);

  // Pinmode inputs
  pinMode(PINS_BTN_A,          INPUT);     
  pinMode(PINS_BTN_B,          INPUT);   
  pinMode(PINS_SENSOR_SHOCK,   INPUT);
  pinMode(PINS_SENSOR_BARRIER, INPUT);
  pinMode(PINS_SENSOR_MIC,     INPUT); 

  // Pinmode outputs
  pinMode(PINS_SHUTTER,        OUTPUT);
  pinMode(PINS_AUTOFOCUS,      OUTPUT);
  pinMode(PINS_FLASH1,         OUTPUT);
  pinMode(PINS_FLASH2,         OUTPUT);
  pinMode(PINS_LCD_LED,        OUTPUT);
  pinMode(PINS_LCD_RS,         OUTPUT);
  pinMode(PINS_LCD_ENABLE,     OUTPUT);
  pinMode(PINS_LCD_DB4,        OUTPUT);
  pinMode(PINS_LCD_DB5,        OUTPUT);
  pinMode(PINS_LCD_DB6,        OUTPUT);
  pinMode(PINS_LCD_DB7,        OUTPUT);
  pinMode(PINS_BUZZER,         OUTPUT);
  pinMode(PINS_DEVICE,         OUTPUT);
 
  // Init Firmata
  FirmataLite.attach(START_SYSEX, sysexCallback);
  FirmataLite.begin();
}

// Run controller
void loop(){
 
  // Initialize config
  config_init();

  // Init backlight
  backlight_init();

  // Init device connected to device port
  device_init();
 
  // Run main controller
  controller_run();
 
}
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude SesechXP » Jeu 12 Juil 2012 18:00

Follet, n'oublie pas d'utiliser les balises "code" pour insérer du code source dans tes messages, c'est nettement plus lisible ;)

Pour ton clavier, il faut :
- initialiser l'entrée analogique sur laquelle sont connectées les touches du clavier (voir dans LCD4Bit_mod.cpp) ;
- modifier la fonction de lecture du clavier keyboard_scan (fichier device_manager.ino, ligne 128).

++
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Follet » Jeu 12 Juil 2012 21:28

Merci pour ta réponse j'ai trouvé la deuxième ligne "modifier la fonction de lecture du clavier keyboard_scan (fichier device_manager.ino, ligne 128)." mais la je ne sais pas quoi faire ...une piste ? par contre le "LCD4Bit_mod.cpp" je n'ai pas trouvé.
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude SesechXP » Ven 13 Juil 2012 08:28

Oups, oublie le fichier "LCD4Bit_mod.cpp", il ne concerne pas le clavier mais uniquement l'écran :oops:

Tout ce dont tu as besoin est dans le sketch d'exemple d'utilisation de ton LCD, celui que tu collé juste au dessus. Il faut isoler ce qui concerne la lecture de l'entrée analogique 0 et intégrer ça dans le Photoduino, à l'endroit indiqué dans mon précédent message.

A toi de jouer Follet !
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Follet » Ven 13 Juil 2012 12:01

Je ne comprend pas :
- "n'oublie pas d'utiliser les balises "code" pour insérer du code source dans tes messages" veux-tu m'expliquer comment je dois procéder.
- "Il faut isoler ce qui concerne la lecture de l'entrée analogique 0 " tu parles de ce que j'ai mis ci-dessous ?

Code: Tout sélectionner
void loop()
{
adc_key_in = analogRead(0);    // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey) // if keypress is detected
    {
    delay(50);      // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor
    key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey)           
    {         
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  //line=2, x=0
    lcd.printIn(msgs[key]);
      }
    }
  }
  digitalWrite(13, LOW);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{   int k;
    for (k = 0; k < NUM_KEYS; k++)
    {
        if (input < adc_key_val[k])
        {  return k;  }
    }
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    return k;
}


- "intégrer ça dans le Photoduino" je fais un copié collé et ne dois rien supprimer dans le Photyoduino.?
Dernière édition par Follet le Ven 13 Juil 2012 14:56, édité 1 fois.
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude Lionel » Ven 13 Juil 2012 13:28

Follet a écrit:Je ne comprend pas :
- "n'oublie pas d'utiliser les balises "code" pour insérer du code source dans tes messages" veux-tu m'expliquer comment je dois procéder.


Bonjour,

vous éditez votre message, vous selectionnez le code de votre texte, vous cliquez sur le bouton "code" situé au dessus de la zone de saisie, entre "quote" et "List".

j'ai édité votre dernier message pour le faire la fois précédente, je vous laisse faire celui ci ?
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Arduino contrôle water drop

Message non lude Cassiope34 » Ven 13 Juil 2012 13:32

Comme je te le disais dans mon post du Sam 30 Juin 2012 16:12, la gestion des 2 touches et donc des menus est dans l'onglet 'controller_manager' et est assez conséquent... je crains qu'il ne te soit pas si simple de tout réécrire pour te servir des 5 touches dont tu disposes... ou bien n'utiliser que 2 des boutons du LCD et les raccorder sur les PINs digitales 3 (BTN A) et 2 (BTN B)...

Ceci dit quand je vois ça dans le premier onglet (Photoduino)
// Keycodes
#define KEY_NONE             0 // No keys pressed
#define KEY_A                1 // Button A was pressed
#define KEY_B                2 // Button B was pressed
#define KEY_AH               3 // Button A was pressed and holded (KEY_HOLD_TIME) milisecons
#define KEY_BH               4 // Button B was pressed and holded (KEY_HOLD_TIME) milisecons
#define KEY_ABH              5 // Buttons A+B was pressed and holded (KEY_HOLD_TIME) milisecons

je me dis qu'il y a peut-être moyen d'utiliser les 5 touches de ton LCD ...!!


Bon courage Follet.

@+
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Arduino contrôle water drop

Message non lude SesechXP » Ven 13 Juil 2012 17:54

Follet a écrit:Je ne comprend pas :
- "n'oublie pas d'utiliser les balises "code" pour insérer du code source dans tes messages" veux-tu m'expliquer comment je dois procéder.

Voir réponse de Lionel...

Follet a écrit: - "Il faut isoler ce qui concerne la lecture de l'entrée analogique 0 " tu parles de ce que j'ai mis ci-dessous ?

Code: Tout sélectionner
void loop()
{
adc_key_in = analogRead(0);    // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey) // if keypress is detected
    {
    delay(50);      // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor
    key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey)           
    {         
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  //line=2, x=0
    lcd.printIn(msgs[key]);
      }
    }
  }
  digitalWrite(13, LOW);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{   int k;
    for (k = 0; k < NUM_KEYS; k++)
    {
        if (input < adc_key_val[k])
        {  return k;  }
    }
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    return k;
}


Tout à fait, en enlevant ce qui concerne le LCD et la sortie numérique n°13.

Follet a écrit:- "intégrer ça dans le Photoduino" je fais un copié collé et ne dois rien supprimer dans le Photyoduino.?

Il faut modifier toute la fonction keyboard_scan citée ci-avant. En effet le clavier n'est plus du tout le même...
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Follet » Sam 14 Juil 2012 09:38

Désolé je n'y arrive pas j'y ai passé toute la soirée.
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude Cassiope34 » Sam 14 Juil 2012 09:53

Je viens de regarder le schéma de ton LCD pour les boutons et j'ai bien peur que l'appui sur un bouton ne retourne une valeur ANALOGIQUE (selon le bouton pressé) et dans le Photoduino les Boutons sont sur des PIN DIGITALE 3 & 2.
Donc à moins d'utiliser une des entrées ANALOGIQUES donc tu n'aurais pas besoin (car elles sont toutes affectées à différents capteurs ou au FLASH) puis modifier le soft en conséquence (y dédier la PIN_DEVICE (A0) par exemple), ou bien de dessouder les boutons du shield LCD et d'en cabler 2 tout simplement comme les boutons du Photoduino d'origine...( le plus simple des choix ! )

Je ne sais pas comment est utilisée PIN_DEVICE (A0) dans Photoduino mais elle n'est pas utilisée pour affecter les variables de boutons... key_A, key_B etc...
Il te faudrait revoir sans doute tout ça dans plusieurs endroits du soft !

@+
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Arduino contrôle water drop

Message non lude SesechXP » Sam 14 Juil 2012 10:05

Salut,

J'ai téléchargé le projet Photoduino et ai commencé les modifications. Affaire à suivre...
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Cassiope34 » Sam 14 Juil 2012 10:16

c'est vrai qu'en utilisant A0 pour lire le clavier du shield LCD de Follet (en sacrifiant la sortie DEVICE bien sûr) on peut disposer de 2 entrées/sorties DIGITALEs supplémentaires du coup, pour déclancher 2 "trucs" en tout-ou-rien par exemples ou bien recevoir l'info d'autre type de capteur on/off !

Super pour lui SesechXP :)

@+
Cassiope34
 
Messages: 102
Inscription: Lun 16 Avr 2012 14:35

Re: Arduino contrôle water drop

Message non lude Follet » Sam 14 Juil 2012 10:21

Merci à vous tous car pour moi ça devient trop compliqué avec mes connaissances...un merci en particulier à SesechXP en espérant que tu y arriveras.

A bientôt
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude SesechXP » Sam 14 Juil 2012 15:10

Des nouvelles du front...

Tout d'abord, n'ayant pas le matériel pour tester, je ne saurais être tenu pour responsable des éventuels problèmes qui pourraient survenir.

J'ai été obligé de modifier assez lourdement le câblage pour prendre en charge le LCD Keypad Shield qui impose pas mal de contraintes. On perd notamment la gestion du clavier par interruption.

Code: Tout sélectionner
#define PINS_LCD_LED        10  //(digital pin)
#define PINS_LCD_RS         8   //(digital pin)
#define PINS_LCD_ENABLE     9   //(digital pin)
#define PINS_LCD_DB4        4   //(digital pin)
#define PINS_LCD_DB5        5   //(digital pin)
#define PINS_LCD_DB6        6   //(digital pin)
#define PINS_LCD_DB7        7   //(digital pin)
#define PINS_BUZZER         11  //(digital pin with pwm)
#define PINS_SHUTTER        13  //(digital pin)
#define PINS_AUTOFOCUS      12  //(digital pin)

Code: Tout sélectionner
  #define PINS_FLASH1        3 //(digital pin)
  #define PINS_FLASH2        2 //(digital pin)
  #define PINS_DEVICE        15 //(digital pin)

Suppression des broches PINS_BTN_A et PINS_BTN_B.

Création de la broche PINS_BTN qui sera utilisée en entrée analogique pour gérer le clavier du shield :
Code: Tout sélectionner
#define PINS_BTN            0 //(analog pin)


La principale autre modification concerne la fonction keyboard_scan du fichier devices_manager.ino qui est chargée de lire le clavier.

Je joins à ce message une archive contenant tout le projet modifié, même si les modifications se concentrent dans les fichiers :
- devices_manager.ino ;
- Photoduino.ino ;
- runmode_intervalometer.ino ;
- runmode_sensor_trigger.ino.

Ne connaissant pas suffisamment le principe de fonctionnement de Photoduino, j'ai peut-être loupé des trucs...

++
Fichiers joints
Photoduino.zip
(29.9 Kio) Téléchargé 1008 fois
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: Arduino contrôle water drop

Message non lude Follet » Sam 14 Juil 2012 15:58

Un grand merci pour ton firmware SesechXP, J'ai téléchargé ton firmware mais j'ai mon display qui clignote continuellement je dois maintenant modifier mes entrées comme tu as redéfini les pins, je te tiens au courant et te donnerai dès que possible des nouvelles "nouvelles du front".
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

Re: Arduino contrôle water drop

Message non lude Follet » Sam 14 Juil 2012 16:25

Dans un premier temps j'ai tout débranché de la carte Uno et ça semble fonctionner je peux rentrer dans les menus à l'aide des boutons du display... je revois tout ça et te donnerai des nouvelles.

@ bientôt
Follet
 
Messages: 67
Inscription: Ven 22 Juin 2012 21:37

PrécédenteSuivante

Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités