En ouvrant le fichier "Photoduino.pde", il me semble reconnaitre ce qu'il doit y avoir au début du sketche, à savoir la définition des variables (valeurs par défaut, texte des menus...)
Le voici
Code : Tout sélectionner
/**
*
* - Photoduino
* - http://code.google.com/p/photoduino/
*
* This file is part of Photoduino.
*
* 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_ES for (Spanish)
// - LANGUAGE_EN for (English)
//
#define LANGUAGE_ES
//
// Default Shutterlag:
// - The default value for shutterlag to load when you reset configs
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
// - Check your camera model at: http://code.google.com/p/photoduino/wiki/CameraReference
//
#define DEFAULT_SHUTTERLAG 100
//
// Default intercicle time:
// - The default value in miliseconds camera needs to process photo and be ready for the next
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
//
#define DEFAULT_INTERCICLE_TIME 200
//
// 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 (very rare).
//
// Valid values:
// - Number between 0 and 59999 in microseconds
//
#define DEVICES_FLASHES_SHOOTING_PULSE 1
//
// 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.
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
//
#define DEVICES_CAMERA_MIRROR_LOCKUP_TIMELIMIT 31000
//
// Default sensor tunning mode:
// - When you set the limit of a sensor you have two modes available. Visual and numeric. This is the
// default value but also you can change this preference through the system config menu.
//
// Valid values:
// - SENSORLIMIT_VISUAL
// - SENSORLIMIT_NUMERIC
//
#define DEFAULT_system_interfaceSensorLimit SENSORLIMIT_VISUAL
//
// Arduino board type:
// - Make the firmware compatible with different boards
//
// Valid values:
// - BOARD_ARDUINO_DUEMILANOVE (With Atmega328)
// - BOARD_ARDUINO_MEGA
//
#define BOARD_ARDUINO_DUEMILANOVE
/* ------------------------------------------------------------------------------------------- *
* *
* IMPORTANT NOTE: *
* You don't need to modify the code below this lines *
* *
* ------------------------------------------------------------------------------------------- */
// Import libraries
#include <LiquidCrystal.h>
#include <EEPROM.h>
// Signature and version codes
#define SIGNATURE_CODE1 0x21 // day
#define SIGNATURE_CODE2 0x08 // month
#define SIGNATURE_CODE3 0x20 // century
#define SIGNATURE_CODE4 0x10 // year of century
#define CODE_MAYOR_VERSION 0x00 // mayor version
#define CODE_MINOR_VERSION 0x09 // minor version
// Default system config
#define DEFAULT_system_useBacklight true
#define DEFAULT_system_useSpeaker true
// Default interval mode config
#define DEFAULT_intervalMode_autofocusTime 0
#define DEFAULT_intervalMode_shutterLagTime DEFAULT_SHUTTERLAG
#define DEFAULT_intervalMode_useFlash1 false
#define DEFAULT_intervalMode_preFlash1Time 0
#define DEFAULT_intervalMode_useFlash2 false
#define DEFAULT_intervalMode_preFlash2Time 0
#define DEFAULT_intervalMode_preCloseTime 0
#define DEFAULT_intervalMode_intervalUnits UNITS_SECS
#define DEFAULT_intervalMode_intervalValue 1
#define DEFAULT_intervalMode_numCicles 0
// Audio trigger mode default config
#define DEFAULT_audioTriggerMode_sensorLimit 512
#define DEFAULT_audioTriggerMode_shootingMode SHOOTINGMODE_NORMAL
#define DEFAULT_audioTriggerMode_autofocusTime 0
#define DEFAULT_audioTriggerMode_shutterLagTime DEFAULT_SHUTTERLAG
#define DEFAULT_audioTriggerMode_preCloseTime 0
#define DEFAULT_audioTriggerMode_useFlash1 false
#define DEFAULT_audioTriggerMode_preFlash1Time 0
#define DEFAULT_audioTriggerMode_useFlash2 false
#define DEFAULT_audioTriggerMode_preFlash2Time 0
#define DEFAULT_audioTriggerMode_numCicles 0
#define DEFAULT_audioTriggerMode_interCicleTime DEFAULT_INTERCICLE_TIME
// Shock trigger mode default config
#define DEFAULT_shockTriggerMode_sensorLimit 512
#define DEFAULT_shockTriggerMode_shootingMode SHOOTINGMODE_NORMAL
#define DEFAULT_shockTriggerMode_autofocusTime 0
#define DEFAULT_shockTriggerMode_shutterLagTime DEFAULT_SHUTTERLAG
#define DEFAULT_shockTriggerMode_preCloseTime 0
#define DEFAULT_shockTriggerMode_useFlash1 false
#define DEFAULT_shockTriggerMode_preFlash1Time 0
#define DEFAULT_shockTriggerMode_useFlash2 false
#define DEFAULT_shockTriggerMode_preFlash2Time 0
#define DEFAULT_shockTriggerMode_numCicles 0
#define DEFAULT_shockTriggerMode_interCicleTime DEFAULT_INTERCICLE_TIME
// Barrier mode default config
#define DEFAULT_barrierMode_sensorLimit 512
#define DEFAULT_barrierMode_shootingMode SHOOTINGMODE_NORMAL
#define DEFAULT_barrierMode_autofocusTime 0
#define DEFAULT_barrierMode_shutterLagTime DEFAULT_SHUTTERLAG
#define DEFAULT_barrierMode_preCloseTime 0
#define DEFAULT_barrierMode_useFlash1 false
#define DEFAULT_barrierMode_preFlash1Time 0
#define DEFAULT_barrierMode_useFlash2 false
#define DEFAULT_barrierMode_preFlash2Time 0
#define DEFAULT_barrierMode_numCicles 0
#define DEFAULT_barrierMode_interCicleTime DEFAULT_INTERCICLE_TIME
// Flash slave default config
#define DEFAULT_flashSlave_sensorLimit 512
#define DEFAULT_flashSlave_useFlash1 true
#define DEFAULT_flashSlave_preFlash1Time 0
#define DEFAULT_flashSlave_useFlash2 true
#define DEFAULT_flashSlave_preFlash2Time 0
// 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 12 //(digital pin)
#define PINS_LCD_ENABLE 11 //(digital pin)
#define PINS_LCD_DB4 10 //(digital pin)
#define PINS_LCD_DB5 9 //(digital pin)
#define PINS_LCD_DB6 8 //(digital pin)
#define PINS_LCD_DB7 7 //(digital pin)
#define PINS_BUZZER 6 //(pwm6 pin)
#define PINS_SHUTTER 5 //(digital pin)
#define PINS_AUTOFOCUS 4 //(digital pin)
#ifdef BOARD_ARDUINO_MEGA // For ArduinoMega compatibility
#define PINS_FLASH1 56 // 56 = Mega 16 = Duemilanova //(digital pin)
#define PINS_FLASH2 55 // 55 = Mega 15 = Duemilanova //(digital pin)
#define PINS_RESERVED 54 // 54 = Mega 14 = Duemilanova //(digital pin)
#else
#define PINS_FLASH1 16 //(digital pin)
#define PINS_FLASH2 15 //(digital pin)
#define PINS_RESERVED 14 //(digital pin)
#endif
#define PINS_LASER PINS_RESERVED // alias(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)
// Measure 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_CICLES 10 // cicles
#define UNITS_US 11 // microseconds
// Sensor limit modes
#define SENSOR_MODE_LOWER 0 // for trigg by lower values
#define SENSOR_MODE_HIGHER 1 // for trigg by higher values
// Shooting modes
#define SHOOTINGMODE_NORMAL 0 // Normal mode
#define SHOOTINGMODE_PREBULB 1 // Prebulb mode
#define SHOOTINGMODE_MIRRORLOCKUP 2 // Mirror lookup mode
// Interface modes
#define SENSORLIMIT_VISUAL 0 // Visual
#define SENSORLIMIT_NUMERIC 1 // Visual
// Keycodes
#define NO_KEY 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
// 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
// Characters and symbols addreses on lcd eeprom
#define SYMBOL_DOWN 0x00
#define SYMBOL_UP 0x01
#define SYMBOL_BOX 0xff
// EEPROM size in bytes
#define EEPROM_SIZE 512
// EEPROM Addreses 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_MAYOR_VERSION 0x04 // BYTE
#define EE_ADDR_CODE_MINOR_VERSION 0x05 // BYTE
// EEPROM Addreses for system config
#define EE_ADDR_system_useBacklight 0x10 // BYTE
#define EE_ADDR_system_useSpeaker 0x12 // BYTE
#define EE_ADDR_system_interfaceSensorLimit 0x14 // BYTE
// EEPROM Addreses for interval mode config
#define EE_ADDR_intervalMode_autofocusTime 0x20 // WORD
#define EE_ADDR_intervalMode_shutterLagTime 0x22 // WORD
#define EE_ADDR_intervalMode_useFlash1 0x24 // BYTE
#define EE_ADDR_intervalMode_preFlash1Time 0x26 // WORD
#define EE_ADDR_intervalMode_useFlash2 0x28 // BYTE
#define EE_ADDR_intervalMode_preFlash2Time 0x2A // WORD
#define EE_ADDR_intervalMode_preCloseTime 0x2C // WORD
#define EE_ADDR_intervalMode_intervalUnits 0x2E // BYTE
#define EE_ADDR_intervalMode_intervalValue 0x30 // WORD
#define EE_ADDR_intervalMode_numCicles 0x32 // WORD
// EEPROM Addreses for audio trigger mode config
#define EE_ADDR_audioTriggerMode_sensorLimit 0x40 // WORD
#define EE_ADDR_audioTriggerMode_shootingMode 0x42 // BYTE
#define EE_ADDR_audioTriggerMode_autofocusTime 0x44 // WORD
#define EE_ADDR_audioTriggerMode_shutterLagTime 0x46 // WORD
#define EE_ADDR_audioTriggerMode_preCloseTime 0x48 // WORD
#define EE_ADDR_audioTriggerMode_useFlash1 0x4A // BYTE
#define EE_ADDR_audioTriggerMode_preFlash1Time 0x4C // WORD
#define EE_ADDR_audioTriggerMode_useFlash2 0x4E // BYTE
#define EE_ADDR_audioTriggerMode_preFlash2Time 0x50 // WORD
#define EE_ADDR_audioTriggerMode_numCicles 0x52 // WORD
#define EE_ADDR_audioTriggerMode_interCicleTime 0x54 // WORD
// EEPROM Addreses for shock trigger mode config
#define EE_ADDR_shockTriggerMode_sensorLimit 0x60 // WORD
#define EE_ADDR_shockTriggerMode_shootingMode 0x62 // BYTE
#define EE_ADDR_shockTriggerMode_autofocusTime 0x64 // WORD
#define EE_ADDR_shockTriggerMode_shutterLagTime 0x66 // WORD
#define EE_ADDR_shockTriggerMode_preCloseTime 0x68 // WORD
#define EE_ADDR_shockTriggerMode_useFlash1 0x6A // BYTE
#define EE_ADDR_shockTriggerMode_preFlash1Time 0x6C // WORD
#define EE_ADDR_shockTriggerMode_useFlash2 0x6E // BYTE
#define EE_ADDR_shockTriggerMode_preFlash2Time 0x70 // WORD
#define EE_ADDR_shockTriggerMode_numCicles 0x72 // WORD
#define EE_ADDR_shockTriggerMode_interCicleTime 0x74 // WORD
// EEPROM Addreses for barrier mode config
#define EE_ADDR_barrierMode_sensorLimit 0x80 // WORD
#define EE_ADDR_barrierMode_shootingMode 0x82 // BYTE
#define EE_ADDR_barrierMode_autofocusTime 0x84 // WORD
#define EE_ADDR_barrierMode_shutterLagTime 0x86 // WORD
#define EE_ADDR_barrierMode_preCloseTime 0x88 // WORD
#define EE_ADDR_barrierMode_useFlash1 0x8A // BYTE
#define EE_ADDR_barrierMode_preFlash1Time 0x8C // WORD
#define EE_ADDR_barrierMode_useFlash2 0x8E // BYTE
#define EE_ADDR_barrierMode_preFlash2Time 0x90 // WORD
#define EE_ADDR_barrierMode_numCicles 0x92 // WORD
#define EE_ADDR_barrierMode_interCicleTime 0x94 // WORD
// EEPROM Addreses for flash slave config
#define EE_ADDR_flashSlave_sensorLimit 0xA0 // WORD
#define EE_ADDR_flashSlave_useFlash1 0xA2 // BYTE
#define EE_ADDR_flashSlave_preFlash1Time 0xA4 // WORD
#define EE_ADDR_flashSlave_useFlash2 0xA6 // BYTE
#define EE_ADDR_flashSlave_preFlash2Time 0xA8 // WORD
#ifdef LANGUAGE_ES
// Messages list "123456789012345"
#define MSG_PHOTODUINO_V "Photoduino v"
#define MSG_READY "Listo!"
#define MSG_MAIN_MENU "Menu principal"
#define MSG_SHOCK_TRIGGER "Sensor Choque"
#define MSG_BARRIER_MODE "Sensor Barrera"
#define MSG_INTERVAL_MODE "Intervalometro"
#define MSG_AUDIO_TRIGGER "Sensor Audio"
#define MSG_FLASH_SLAVE "Flash esclavo"
#define MSG_AUDIO_CONFIG "Config Audio"
#define MSG_SHOCK_CONFIG "Config Choque"
#define MSG_BARRIER_CONFIG "Config Barrera"
#define MSG_SYSTEM_CONFIG "Config Sistema"
#define MSG_CONFIG "Configurar"
#define MSG_RUN "Ejecutar"
#define MSG_RUN_AUDIO "Ejecuta audio"
#define MSG_RUN_INTERVAL "Ejecuta intervalo"
#define MSG_RUN_BARRIER "Ejecuta barrera"
#define MSG_RUN_SHOCK "Ejecuta choque"
#define MSG_RUN_FLASH_SLAVE "Ejecuta esclavo"
#define MSG_RESET_CONFIG "Borrar config"
#define MSG_AUTOFOCUS_TIME "Tiempo enfoque"
#define MSG_SHUTTERLAG_TIME "Retardo obturador"
#define MSG_USE_FLASH1 "Usar Flash1"
#define MSG_USE_FLASH2 "Usar Flash2"
#define MSG_FLASH1_PRETIME "Flash1 pretiempo"
#define MSG_FLASH2_PRETIME "Flash2 pretiempo"
#define MSG_CLOSE_PRETIME "Cerrar pretiempo"
#define MSG_INTERVAL_UNITS "Unid. Intervalo"
#define MSG_INTERVAL_VALUE "Valor Intervalo"
#define MSG_CICLES "Ciclos"
#define MSG_SENSOR_LIMIT "Limite sensor"
#define MSG_SENSOR ">Sensor :"
#define MSG_LIMIT ">Limite :"
#define MSG_SHOCK_LIMIT "Limite choque"
#define MSG_BARRIER_LIMIT "Limite barrera"*/
#define MSG_SHOOTING_MODE "Modo de disparo"
#define MSG_INTERCICLE_TIME "Tiempo ciclos"
#define MSG_BACKLIGHT "Luz LCD"
#define MSG_SPEAKER "Pitidos"
#define MSG_RESETTING "Reiniciando.."
#define MSG_ABORTING "Cancelando.."
#define MSG_YES "SI"
#define MSG_NO "NO"
#define MSG_UNITS_US "us"
#define MSG_UNITS_MS "ms"
#define MSG_UNITS_SECS "segundos"
#define MSG_UNITS_MINS "minutos"
#define MSG_UNITS_HOURS "horas"
#define MSG_UNITS_DAYS "dias"
#define MSG_UNITS_CICLES "ciclos"
#define MSG_SHOOTINGMODE_NORMAL "Normal"
#define MSG_SHOOTINGMODE_PREBULB "Bulb previo"
#define MSG_SHOOTINGMODE_MIRRORLOCKUP "Levanta espejo"
#define MSG_VISUAL_MODE "Visual"
#define MSG_NUMERIC_MODE "Numerico"
#define MSG_INTERFACE_SENSOR_MODE "Ajuste Sensores"
#else
// Messages list "123456789012345"
#define MSG_PHOTODUINO_V "Photoduino v"
#define MSG_READY "Ready!"
#define MSG_MAIN_MENU "Main menu"
#define MSG_SHOCK_TRIGGER "Shock trigger"
#define MSG_BARRIER_MODE "Barrier mode"
#define MSG_INTERVAL_MODE "Interval mode"
#define MSG_AUDIO_TRIGGER "Audio trigger"
#define MSG_FLASH_SLAVE "Flash slave"
#define MSG_AUDIO_CONFIG "Audio Config"
#define MSG_SHOCK_CONFIG "Shock Config"
#define MSG_BARRIER_CONFIG "Barrier Config"
#define MSG_SYSTEM_CONFIG "System config"
#define MSG_CONFIG "Config"
#define MSG_RUN "Run"
#define MSG_RUN_AUDIO "Run audio"
#define MSG_RUN_INTERVAL "Run interval"
#define MSG_RUN_BARRIER "Run barrier"
#define MSG_RUN_SHOCK "Run shock"
#define MSG_RUN_FLASH_SLAVE "Run flashslave"
#define MSG_RESET_CONFIG "Reset config"
#define MSG_AUTOFOCUS_TIME "Autofocus time"
#define MSG_SHUTTERLAG_TIME "Shutterlag time"
#define MSG_USE_FLASH1 "Use Flash1"
#define MSG_USE_FLASH2 "Use Flash2"
#define MSG_FLASH1_PRETIME "Flash1 pretime"
#define MSG_FLASH2_PRETIME "Flash2 pretime"
#define MSG_CLOSE_PRETIME "Close pretime"
#define MSG_INTERVAL_UNITS "Interval units"
#define MSG_INTERVAL_VALUE "Interval value"
#define MSG_CICLES "Cicles"
#define MSG_SENSOR_LIMIT "Sensor limit"
#define MSG_SENSOR ">Sensor :"
#define MSG_LIMIT ">Limit :"
#define MSG_SHOOTING_MODE "Shooting mode"
#define MSG_INTERCICLE_TIME "Intercicle time"
#define MSG_BACKLIGHT "Backlight"
#define MSG_SPEAKER "Speaker"
#define MSG_RESETTING "Resetting..."
#define MSG_ABORTING "Aborting..."
#define MSG_YES "YES"
#define MSG_NO "NO"
#define MSG_UNITS_US "us"
#define MSG_UNITS_MS "ms"
#define MSG_UNITS_SECS "seconds"
#define MSG_UNITS_MINS "minutes"
#define MSG_UNITS_HOURS "hours"
#define MSG_UNITS_DAYS "days"
#define MSG_UNITS_CICLES "cicles"
#define MSG_SHOOTINGMODE_NORMAL "Normal"
#define MSG_SHOOTINGMODE_PREBULB "Pre-Bulb Mode"
#define MSG_SHOOTINGMODE_MIRRORLOCKUP "Mirror Lock-up"
#define MSG_VISUAL_MODE "Visual"
#define MSG_NUMERIC_MODE "Numeric"
#define MSG_INTERFACE_SENSOR_MODE "Sensor tunning"
#endif
// 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
// Global variables
byte lastKey = NO_KEY; // Last key pressed
boolean flagHoldKey = false; // Flag to ignore keys after a hold key
// System config in ram
boolean system_useBacklight;
boolean system_useSpeaker;
byte system_interfaceSensorLimit;
// Interval mode config in ram
unsigned int intervalMode_autofocusTime;
unsigned int intervalMode_shutterLagTime;
boolean intervalMode_useFlash1;
unsigned int intervalMode_preFlash1Time;
boolean intervalMode_useFlash2;
unsigned int intervalMode_preFlash2Time;
unsigned int intervalMode_preCloseTime;
byte intervalMode_intervalUnits;
unsigned int intervalMode_intervalValue;
unsigned int intervalMode_numCicles;
// Audio trigger mode config in ram
unsigned int audioTriggerMode_sensorLimit;
byte audioTriggerMode_shootingMode;
unsigned int audioTriggerMode_autofocusTime;
unsigned int audioTriggerMode_shutterLagTime;
unsigned int audioTriggerMode_preCloseTime;
boolean audioTriggerMode_useFlash1;
unsigned int audioTriggerMode_preFlash1Time;
boolean audioTriggerMode_useFlash2;
unsigned int audioTriggerMode_preFlash2Time;
unsigned int audioTriggerMode_numCicles;
unsigned int audioTriggerMode_interCicleTime;
// Shock trigger mode config in ram
unsigned int shockTriggerMode_sensorLimit;
byte shockTriggerMode_shootingMode;
unsigned int shockTriggerMode_autofocusTime;
unsigned int shockTriggerMode_shutterLagTime;
unsigned int shockTriggerMode_preCloseTime;
boolean shockTriggerMode_useFlash1;
unsigned int shockTriggerMode_preFlash1Time;
boolean shockTriggerMode_useFlash2;
unsigned int shockTriggerMode_preFlash2Time;
unsigned int shockTriggerMode_numCicles;
unsigned int shockTriggerMode_interCicleTime;
// Barrier mode config in ram
unsigned int barrierMode_sensorLimit;
byte barrierMode_shootingMode;
unsigned int barrierMode_autofocusTime;
unsigned int barrierMode_shutterLagTime;
unsigned int barrierMode_preCloseTime;
boolean barrierMode_useFlash1;
unsigned int barrierMode_preFlash1Time;
boolean barrierMode_useFlash2;
unsigned int barrierMode_preFlash2Time;
unsigned int barrierMode_numCicles;
unsigned int barrierMode_interCicleTime;
// Flash slave config in ram
unsigned int flashSlave_sensorLimit;
boolean flashSlave_useFlash1;
unsigned int flashSlave_preFlash1Time;
boolean flashSlave_useFlash2;
unsigned int flashSlave_preFlash2Time;
// 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_RESERVED, OUTPUT);
// Initialize config
config_init();
// Init backlight
digitalWrite(PINS_LCD_LED, system_useBacklight);
// Turn off laser
laser_turnOff();
}
// Run manager
void loop(){
controller_run();
}
J'ai viré une bonne partie des trucs qui ne devraient pas servir pour le Stepduino, j'ai modifié des noms de variables, changé le texte des menus... a priori, j'ai défini l'usage des 5 boutons du LCD... etc...
Ca ressemble à ça
Code : Tout sélectionner
/**
*
* - Stepduino
* - code repris sur le projet photoduino
* - http://code.google.com/p/photoduino/
*
* This file is part of Stepduino.
*/
/* ------------------------------------------------------------------------------------------- *
* *
* CONFIGURATION VALUES: *
* You can set the next configuration values *
* before compile and upload this sketch *
* *
* ------------------------------------------------------------------------------------------- */
//
// choix des menus :
//
#define MENUS
//
// Default intercicle time: -> temps de déplacement du chariot et de stabilisation
// - The default value in miliseconds camera needs to process photo and be ready for the next
//
// Valid values:
// - Number between 0 and 59999 in miliseconds
//
#define DEFAULT_INTERCICLE_TIME 5000
//
// taille du pas -> selon les capacités du moteur et de la vis
// Valid values:
// - Number between 0 and 59999 in micrometre
//
#define DEFAULT_TAILLE_PAS 1
/* ------------------------------------------------------------------------------------------- *
* *
* IMPORTANT NOTE: *
* You don't need to modify the code below this lines *
* *
* ------------------------------------------------------------------------------------------- */
// Import libraries
#include <LiquidCrystal.h>
#include <EEPROM.h>
// Default system config
#define DEFAULT_system_useBacklight true
#define DEFAULT_system_useSpeaker false
// Valeur du délai par défaut
#define DEFAULT_intervalMode_numCicles 0
// Valeurs par défaut nombre de pas - mode "empirique" - 10 pas à faire par défaut
#define DEFAULT_nbre_pas_cent 0
#define DEFAULT_nbre_pas_dix 1
#define DEFAULT_nbre_pas_unit 0
// Valeurs par défaut des distances
// Valeurs par défaut taile du pas - mode "empirique" - 10 micromètres par défaut
#define DEFAULT_taille_pas_10_000_0 0
#define DEFAULT_taille_pas_01_000_0 0
#define DEFAULT_taille_pas_00_100_0 0
#define DEFAULT_taille_pas_00_010_0 1
#define DEFAULT_taille_pas_00_001_0 0
#define DEFAULT_taille_pas_00_000_1 0
// Valeurs par défaut épaisseur du sujet (micromètre) - mode "calcul" + 1000 micromètres par défaut
#define DEFAULT_epaisseur_sujet_100_000 0
#define DEFAULT_epaisseur_sujet_010_000 0
#define DEFAULT_epaisseur_sujet_001_000 1
#define DEFAULT_epaisseur_sujet_000_100 0
#define DEFAULT_epaisseur_sujet_000_010 0
#define DEFAULT_epaisseur_sujet_000_001 0
// Valeurs par défaut du rapport - mode "calcul" - rapport de 1 par défaut
#define DEFAULT_rapport_dix 0
#define DEFAULT_rapport_unit 1
#define DEFAULT_rapport_dixieme 0
// Valeurs par défaut du diaphragme - mode "calcul" - f/1 par défaut
#define DEFAULT_diaph_dix 0
#define DEFAULT_diaph_unit 1
#define DEFAULT_diaph_dixieme 0
// Valeurs par défaut du delai (en secondes) - à voir avec numcicle - 5 secondes par défaut
#define DEFAULT_delai_cent 0
#define DEFAULT_delai_dix 0
#define DEFAULT_delai_unit 5
////////// Définir les broches du LCD (pins) /////////////////////////
LiquidCrystal lcd(8, 9, 4, 5, 6, 7, 10);
////////////////// Définition des E/S ////////////////
int PinBouton = 0; // broche analogique (A0) utilisée pour les 5 boutons
int PinMicrorupteur_avant = 1 // broche analogique (A1) utilisée pour le microrupteur à l'avant de la platine
int PinMicrorupteur_arriere = 2 // broche analogique (A2) utilisée pour le microrupteur à l'arrière de la platine
// Pinout settings - cette façon de coder est équivalente à celle juste au-dessus
#define PINS_SHUTTER1 2 //(pwm6 pin)
#define PINS_SHUTTER2 3 //(pwm6 pin - en réserve)
#define PINS_BUZZER 1 //(pwm6 pin)
#define PINS_MOTOR1 11 //(digital pin)
#define PINS_MOTOR2 12 //(digital pin)
#define PINS_MOTOR3 13 //(digital pin)
// Measure units
#define UNITS_MS 0 // miliseconds
#define UNITS_SECS 1 // seconds
#define UNITS_UM 2 // micrometres
#define UNITS_CICLES 3 // cicles
// define some values used by the panel and buttons
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// EEPROM size in bytes
#define EEPROM_SIZE 512
// EEPROM Addreses for system config
#define EE_ADDR_system_useBacklight 0x10 // BYTE
#define EE_ADDR_system_useSpeaker 0x12 // BYTE
// EEPROM Addreses for menu step1
#define EE_ADDR_nbre_pas_cent 0x20 // WORD
#define EE_ADDR_nbre_pas_dix 0x22 // WORD
#define EE_ADDR_nbre_pas_unit 0x24 // WORD
#define EE_ADDR_taille_pas_10_000_0 0x26 // WORD
#define EE_ADDR_taille_pas_01_000_0 0x28 // WORD
#define EE_ADDR_taille_pas_00_100_0 0x2A // WORD
#define EE_ADDR_taille_pas_00_010_0 0x2C // WORD
#define EE_ADDR_taille_pas_00_000_0 0x2E // WORD
#define EE_ADDR_taille_pas_00_000_1 0x30 // WORD
#define EE_ADDR_epaisseur_sujet_100_000 0x32 // WORD
#define EE_ADDR_epaisseur_sujet_010_000 0x34 // WORD
#define EE_ADDR_epaisseur_sujet_001_000 0x36 // WORD
#define EE_ADDR_epaisseur_sujet_000_100 0x38 // WORD
#define EE_ADDR_epaisseur_sujet_000_010 0x3A // WORD
#define EE_ADDR_epaisseur_sujet_000_001 0x3C // WORD
#define EE_ADDR_rapport_dix 0x3E // WORD
#define EE_ADDR_rapport_unit 0x40 // WORD
#define EE_ADDR_rapport_dixieme 0x42 // WORD
#define EE_ADDR_diaph_dix 0x44 // WORD
#define EE_ADDR_diaph_unit 0x46 // WORD
#define EE_ADDR_diaph_dixieme 0x48 // WORD
#define EE_ADDR_delai_cent 0x4A // WORD
#define EE_ADDR_delai_dix 0x4C // WORD
#define EE_ADDR_delai_unit 0x4E // WORD
/////// textes des menus "123456789012345"/////
#define MSG_CONFIG "<MENU CONFIG>"
// items du menu config
#define MSG_RETRO "<RETROECLAIRAGE>"
#define MSG_BIP "<BIP>"
#define MSG_YES "<OUI>"
#define MSG_NO "<NON>"
// Messages menu step1
#define MSG_STEP1 "<MENU STEP1>"
// Messages calculs empiriques
#define MSG_EMPIR "<EMPIRIQUE>"
#define MSG_NBRPAS "<NBRE PAS>"
#define MSG_TAILLE_PAS "<TAILLE PAS>"
#define MSG_DELAI_EMPIR "<DELAI>"
// Unités entrées empiriques - ajouter les variables avant
#define MSG_UNITE_PAS_virgule ","
#define MSG_UNITE_PAS " um"
#define MSG_UNITE_DELAI_EMPIR " sec"
// Messages calculs empiriques
#define MSG_CALCUL "<CALCUL>"
#define MSG_RAPPORT "<RAPPORT>"
#define MSG_DIAPH "<DIAPHRAGME>"
#define MSG_EPAIS "<EPAISSEUR>"
#define MSG_DELAI_CALC "<DELAI>"
// Unités entrées pour calculs - ajouter les variables avant
#define MSG_UNITE_DIAPH "f/ "
#define MSG_UNITE_DIAPH_virgule ","
#define MSG_UNITE_EPAIS " um"
#define MSG_UNITE_DELAI_CALC " sec"
// Messages "run" pour "step1"
#define MSG_RUNEMPIR "<RUN EMPIR>"
#define MSG_RUNCALC "<RUN CALC>"
#define MSG_OK "OK"
// Messages menu step2
#define MSG_STEP2 "<MENU STEP2>"
// Messages menu step3
#define MSG_STEP3 "<MENU STEP3>"
// Messages menu reset
#define MSG_RESET "<RESET>"
// Messages menu reset - avance et retour rapide automatique de la platine - utilisation des microrupteurs
#define MSG_AVANCE "<AVANCE AUTO>"
#define MSG_RETOUR "<RETOUR AUTO>"
// Variables used on interrupt mode
volatile boolean cancelFlag = false; // Flag used to abort interrupt mode
// Global variables
byte lastKey = NO_KEY; // Last key pressed
boolean flagHoldKey = false; // Flag to ignore keys after a hold key
// System config in ram
boolean system_useBacklight;
boolean system_useSpeaker;
byte system_interfaceSensorLimit;
// Interval mode config in ram
unsigned int nbre_pas_cent;
unsigned int nbre_pas_dix;
unsigned int nbre_pas_unit;
unsigned int taille_pas_10_000_0;
unsigned int taille_pas_01_000_0;
unsigned int taille_pas_00_100_0;
unsigned int taille_pas_00_010_0;
unsigned int taille_pas_00_001_0;
unsigned int taille_pas_00_000_1;
unsigned int epaisseur_sujet_100_000;
unsigned int epaisseur_sujet_010_000;
unsigned int epaisseur_sujet_001_000;
unsigned int epaisseur_sujet_000_100;
unsigned int epaisseur_sujet_000_010;
unsigned int epaisseur_sujet_000_001;
unsigned int rapport_dix;
unsigned int rapport_unit;
unsigned int rapport_dixieme;
unsigned int diaph_dix;
unsigned int diaph_unit;
unsigned int diaph_dixieme;
unsigned int delai_cent;
unsigned int delai_dix;
unsigned int delai_unit;
///////// SETUP ////////////////
// Setups at startup
void setup()
{
lcd.begin(16, 2); // initialiser la LCD library, 16 caractères, 2 lignes
// LCD initialize
lcd.setCursor(0,0); // placer le curseur à la première ligne, première position
// Pinmode inputs
pinMode(PINS_BTN_A, INPUT);
pinMode(PINS_BTN_B, INPUT);
pinMode(PinBouton, INPUT);
pinMode(PinMicrorupteur_avant, INPUT);
pinMode(PinMicrorupteur_arriere, INPUT);
// Pinmode outputs
pinMode(PINS_SHUTTER1, OUTPUT);
pinMode(PINS_SHUTTER2, OUTPUT);
pinMode(PINS_MOTOR1, OUTPUT);
pinMode(PINS_MOTOR2, OUTPUT);
pinMode(PINS_MOTOR3, OUTPUT);
pinMode(PINS_BUZZER, OUTPUT);
// Initialize config
config_init();
// Init backlight
digitalWrite(10, system_useBacklight);
}
// Run manager
void loop(){
controller_run();
}
///////////////// FONCTIONS ////////////////////
// Lire la valeur A/D retournée selon le bouton choisi
int read_LCD_buttons()
{
adc_key_in = analogRead(PinBouton);
// Mes boutons me donnent ces résultats :
// Gauche = 500
// Droite = 0
// Haut = 140-141
// Bas = 323-324
// Select = 736-737
// ** Code source : my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// ** we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // On commence par la valeur la plus probable : Aucun appui sur bouton !
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // si aucun appui sur bouton, on retoune la constante btnNONE ...
}
De ce que j'en ai compris, il va y avoir des trucs stockés dans l'EEPROM.
J'ai cru voir dans d'autres partie du programmes que ces données étaient récupérées puis écrites en RAM.
Autrement, il me semble que le fichier qui irait après correspond à "controller_manager.pde"
La planète peut pourvoir aux besoins de tous, mais non pas satisfaire la cupidité de certains (Gandhi)