Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| arduino [2015/08/03 00:48] – antonlanghoff | arduino [2019/05/22 18:08] (Version actuelle) – [Le code de pwmsimple] antonlanghoff | ||
|---|---|---|---|
| Ligne 18: | Ligne 18: | ||
| Et naturellement l’excellent wiki de WhiteCat avec qui j'ai fait mes premiers pas avec l' | Et naturellement l’excellent wiki de WhiteCat avec qui j'ai fait mes premiers pas avec l' | ||
| - | http:// | + | [[http:// |
| ==== Les entrés sorties de l' | ==== Les entrés sorties de l' | ||
| Chaque carte Arduino à un nombre définit d' | Chaque carte Arduino à un nombre définit d' | ||
| === Les entrées === | === Les entrées === | ||
| - | Dans Héphaistos, les entrées peuvent être de trois type. | + | Dans Hephaestos, les entrées peuvent être de trois type. |
| - Analogique: permet de lire un potentiomètre ou un capteur. Elle renvoie une valeur entre 0 et 1023. | - Analogique: permet de lire un potentiomètre ou un capteur. Elle renvoie une valeur entre 0 et 1023. | ||
| - Numérique: permet de lire l' | - Numérique: permet de lire l' | ||
| Ligne 47: | Ligne 47: | ||
| L'on trouve des librairies pour la plupart des fonctions, allant de la communication en dmx, controle des moteurs, hack de l' | L'on trouve des librairies pour la plupart des fonctions, allant de la communication en dmx, controle des moteurs, hack de l' | ||
| - | === installer la librairie | + | === installer la librairie |
| Après plusieurs approche dans le suivit du développement de whitecat (du sketch par défault à réécrire, allant d'un module sans ligne de code permettant de configurer et contrôler l' | Après plusieurs approche dans le suivit du développement de whitecat (du sketch par défault à réécrire, allant d'un module sans ligne de code permettant de configurer et contrôler l' | ||
| - | j'ai finalement choisis l' | + | j'ai finalement choisis l' |
| - | Vous la trouverez dans le dossier /ressources du repertoire d'Héphaïstos. | + | Vous la trouverez dans le dossier /ressources du repertoire d'Hephaestos. |
| Pour installer la libraire dezipper simplement le dossier dans le répertoire /libraries de votre IDE (programme) arduino ou directement depuis l'IDE dans l' | Pour installer la libraire dezipper simplement le dossier dans le répertoire /libraries de votre IDE (programme) arduino ou directement depuis l'IDE dans l' | ||
| - | Au prochain démarrage du logiciel arduino vous devrez trouver dans l' | + | Au prochain démarrage du logiciel arduino vous devrez trouver dans l' |
| - | ==== Le code ==== | + | === Les principales fonction de la librairie HephaestosArduinoLib === |
| + | * HEPHAESTOS heph = HEPHAESTOS(); | ||
| + | Chaque fonction de la librairie font être appelé avec cet objet heph (ex: | ||
| + | * void begin(Stream & | ||
| + | * void setSerial(Stream & | ||
| + | * void checkSerial() doit être appeler régulièrement. Vérifie la communication série et traite les données. | ||
| + | * byte HEPHAESTOS:: | ||
| + | * void setToHephaestos(byte buffer[], int buffersize) permet d' | ||
| + | |||
| + | ==== Le code de pwmsimple | ||
| + | Le code d' | ||
| + | |||
| + | La partie du texte grisé précéder de < | ||
| + | |||
| + | <code c++> | ||
| + | #include < | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | |||
| + | HEPHAESTOS heph = HEPHAESTOS(); | ||
| + | |||
| + | //////////////// | ||
| + | const int BAUDRATE=9600; | ||
| + | // | ||
| + | const int NBR_IN=6; | ||
| + | int input[NBR_IN]={A0, | ||
| + | boolean is_pullup[NBR_IN]={false, | ||
| + | boolean is_analog_in[NBR_IN]={true, | ||
| + | |||
| + | /// | ||
| + | const int NBR_OUT=12; //Nombre de patte en sorties | ||
| + | int output[NBR_OUT]={2, | ||
| + | boolean is_PWM[NBR_OUT]={true, | ||
| + | |||
| + | /////////////////// | ||
| + | |||
| + | |||
| + | ///////////////////// | ||
| + | int threshold_analog=0; | ||
| + | int sensorMin = 1023; // minimum sensor value | ||
| + | int sensorMax = 0; // maximum sensor value | ||
| + | |||
| + | byte buffer_digital[NBR_IN]; | ||
| + | byte old_buffer_digital[NBR_IN]; | ||
| + | boolean buttonState[NBR_IN]; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | { | ||
| + | | ||
| + | } | ||
| + | // | ||
| + | for(int i=0; i< | ||
| + | { | ||
| + | pinMode(input[i], | ||
| + | |||
| + | // | ||
| + | if(is_pullup[i]&& | ||
| + | {digitalWrite(input[i], | ||
| + | else | ||
| + | {digitalWrite(input[i], | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | heph.checkSerial(); | ||
| + | read_input(); | ||
| + | |||
| + | //pour chaque sorties écrit la valeur envoyée par Hephaestos en pwm | ||
| + | for(int i=0; | ||
| + | { | ||
| + | | ||
| + | { | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void read_input() | ||
| + | { | ||
| + | for(int i=0; i< | ||
| + | { | ||
| + | old_buffer_digital[i]=buffer_digital[i]; | ||
| + | |||
| + | if(is_analog_in[i]==false) | ||
| + | { | ||
| + | if(is_pullup[i]) | ||
| + | {buttonState[i]= !digitalRead(input[i]); | ||
| + | if(is_pullup[i]==false) | ||
| + | {buttonState[i]=digitalRead(input[i]); | ||
| + | |||
| + | if(buttonState[i]) | ||
| + | { | ||
| + | buffer_digital[i]=255; | ||
| + | } | ||
| + | if(buttonState[i]==false) | ||
| + | { | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | if(is_analog_in[i]==true) | ||
| + | | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | |||
| + | //envoie a hephaestos le buffer | ||
| + | heph.setToHephaestos(buffer_digital, | ||
| + | } | ||
| + | </ | ||
| + | === analysons les différentes parties du code === | ||
| + | <code c++> | ||
| + | #include < | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | </ | ||
| + | Ajoute la bibliothèque Hephaestos et la bibliothèque softPWM pour que toutes les orties puissent être en PWM. | ||
| + | |||
| + | == La déclaration des variables globales à adapter par l' | ||
| + | Cette partie doit toujours être relue et adapté en fonction du circuit électronique branché à votre arduino. | ||
| + | <code c++> | ||
| + | //////////////// | ||
| + | const int BAUDRATE=9600; | ||
| + | // | ||
| + | const int NBR_IN=6; | ||
| + | int input[NBR_IN]={14, | ||
| + | boolean is_pullup[NBR_IN]={false, | ||
| + | boolean is_analog_in[NBR_IN]={true, | ||
| + | |||
| + | /// | ||
| + | const int NBR_OUT=12; //Nombre de patte en sorties | ||
| + | int output[NBR_OUT]={2, | ||
| + | boolean is_PWM[NBR_OUT]={true, | ||
| + | |||
| + | /////////////////// | ||
| + | </ | ||
| + | * Le baudrate est la vitesse de transition sur le port série. Elle doit être identique dans le sketch et dans la fenêtre de configuration arduino d' | ||
| + | * NBR_IN permet de définir le nombre de pattes de l' | ||
| + | * NBR_OUT permet de définir le nombre de pattes de l' | ||
| + | * int input[NBR_IN] est un tableau de valeur. Il va contenir le numéro de chaque patte de l' | ||
| + | int input[NBR_IN]={3, | ||
| + | * Même chose pour int output[NBR_OUT] mais concernant les sorties (numériques, | ||
| + | * boolean is_pullup[NBR_IN] définit pour chaque entrée si elle est en mode pull-up | ||
| + | * boolean is_analog_in[NBR_IN] définit pour chaque entrée si c'est une entrée analogique | ||
| + | * boolean is_PWM[NBR_OUT] définit pour chaque sortie si c'est une sortie PWM (gradué). | ||
| + | |||
| + | == La fonction void setup()== | ||
| + | Cette fonction est essentiel au langage Arduino. Elle va être effectuer qu'une fois à chaque démarrage de la carte et permet de configurer celle-ci. | ||
| + | Sauf cas exceptionnel, | ||
| + | |||
| + | == La fonction void loop()== | ||
| + | C'est la deuxième fonction primordiale du langage Arduino. A partir du moment ou la carte à démarrer, elle va exécuter cette fonction en boucle (d'ou le nom). C'est ici que vous définirez ce que vous voulez que votre carte fasse concrètement. | ||
| + | Dans l' | ||
| + | |||
| + | < | ||