Pages: [1] 2 3 ... 5   Go Down
Author Topic: besoin d'un guide  (Read 2882 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
J'ai depuis quelque temps un besoin que je n'arrive pas a résoudre avec des interrupteurs (et oui la veille école), et j'ai découverts Arduino. qui pourrait me semble t il résoudre mon problème.
J'ai donc un récupérer un NANO V3, et j'ai installé le soft qui va bien., j'ai uploader un prog fourni avec le soft, ca charge, j'ai donc fait un grand pas....
Mon objectif n'étant pas d'apprendre le langage d'ARDUINO, c'est pas trop ma tasse de thé, mais juste résoudre un besoin ponctuel.
Je pense que des bouts de codes doivent trainer ca et là, il suffirait de les couper/coller.

Explication du besoin:
J'ai besoin de faire 5 fonctions  (F1, F2....F5), et chaque fonction va  piloter 8 relais suivant une table de vérités que j'ai établie:
F1 > 11000011
F2 > 00110011
F3 > 00110000  .....etc quand je serai faire pour un , la suite je devrai m'en sortir.

Je souhaite dans un premier temps, faire defiler les fonctions simplement avec deux touches UP/DW, et dans un second temps, cerise sur le gâteau, j'ai vu qu'on pouvait mettre un LCD, et là, je voudrais pouvoir afficher: Fonction 1, Fonction 2.......

Si vous pouviez m'aider svp, pour me donner les librairies sur lesquelles je dois travailler pour gérer ces fonctions, si du code existe déjà, sa m'éviterai de partir dans tous les sens.

Merci pour votre support, et qui sait, j'y prendrai peut être gout  smiley-roll-sweat
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

gogole est ton ami, et des codes d'exemple, il y en a des tonnes! ne serait-ce que dans l'IDE, fichier/exemples, tu vas trouver de quoi t'amuser!

Le langage arduino n'est en fait que du langage C / C++. donc il faut apprendre le langage C!
Logged

Offline Offline
God Member
*****
Karma: 6
Posts: 534
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je le mets là: smiley-razz
Le début doit être bon; l'idée générale est bonne.
Mais quand les experts vont débarquer ici, il va y avoir des cris, et même des coups de feu. smiley-evil smiley-twist
Je suis vraiment curieuse de voir en quoi ils vont transformer les goto. smiley-razz
Code:
byte pins[8] = {  2, 3, 4, 5, 6, 7, 8, 9};  // declare les 8 pins de sortie
byte i=0;
byte index=0;
// Ici il faudrait déclarer les labels "moins"; "plus" et "F1"; "F2"...EXT
// Mais quand les experts vont débarquer ici les labels vont voooler cui cui cui....
// Et les "goto" aussiiiii!
// iLs vont te transformer tout ça en fonctions, et ça va être bô.

void setup()
{
  for( i=0; i<8; i++) pinMode(pins[i], OUTPUT); //pins mise en sortie
  for( i=0; i<8; i++) pinMode(pins[i], LOW);
   pinMode (10, INPUT_PULLUP); // pin mise en entree
   pinMode(11, INPUT_PULLUP); //
    pinMode(10, HIGH); // pin d'entree mise à "1"
   pinMode(11, HIGH);   
}
void loop(){
    if (digitalRead(10) == 0){ goto moins;} //tant que pin(10) ou pin(11) pas =0 ça tourne
    if (digitalRead(11) == 0){ goto plus;}
    delay(100);
}
  moins:
  if (index==0){
    index=5
  }
  index=index-1
  if (index==1){ goto F1;}
  if (index==2){ goto F2;}
  if (index==3){ goto F3;}
  if (index==4){ goto F4;}
  if (index==5){ goto F5;}
  //
  plus:
  if (index==6){
    index=1
  }
  index=index+1
  if (index==1){ goto F1;}
  if (index==2){ goto F2;}
  if (index==3){ goto F3;}
  if (index==4){ goto F4;}
  if (index==5){ goto F5;}
  //
  F1: // fonction N°1
  pinMode(pins(2), HIGH); // F1
  pinMode(pins(2), HIGH);
  pinMode(pins(2), LOW);
  pinMode(pins(2), LOW);
  pinMode(pins(2), LOW);
  pinMode(pins(2), LOW);
  pinMode(pins(2), HIGH);
  pinMode(pins(2), HIGH);
//F2:
........excétéra...téra...
}
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je me suis amusé à programmer un petit truc , je sais pas si c'est ce que tu veux, en plus je ne suis pas un expert en prog et ça fait même pas une semaine que je joue avec une arduino uno ...

Code:
const byte tb=5; // nombre de "fonction"
const int up = 10; // numéro de la broche du bp up
const int down=11; // numéro de la broche du bp down
const int pin=2; // numéro de la première sortie

byte F[tb+1]; // tableau qui contiendra la programation des "fonctions"
int pos; // numéro de la "fonction" à envoyer sur les sorties
boolean arup; // bit pour l'anti rebond de la touche up
boolean ardown; // bit pour l'anti rebond de la touche down

void setup() {

  // on configure les 8 broches de 0 à 7 en sortie
  for (int p = pin; p < pin+8; p++)  {
    pinMode(p, OUTPUT);      
  }
  pinMode(up, INPUT);  // la broche 10 pour Up
  pinMode(down, INPUT);  // la broche 11 pour down
  // programmation des "fonctions" :
  // il suffit de changer les 1 et les 0 pour chaque "fonction"
  F[1]=0b11000011 ;  // 0b est obligatoire pour écrire en binaire
  F[2]=0b00110011 ;  // le bit de gauche à droite du b est relié à la broche 7
  F[3]=0b00110000 ;  // le bit de droite à la fin est relié à la broche 0
  F[4]=0b00001111 ;
  F[5]=0b11111111 ;
 
  pos=1; // la "fonction 1" sera active au démarage
}

void loop() {
 
  // on passe en revue les 8 sorties et on active la sortie suivant le tableau
   for (int p = 0; p < 8; p++) digitalWrite(p+pin,bitRead(F[pos], p));
    
  // si on appuis sur up on change de "fonction" en incrémentant pos
  if (digitalRead(up) and pos < tb) {if (!arup){ pos++; arup=1;}
  } else arup=0; // arup bloque le changement tant qu'on n'a pas relaché le bouton up
  
  // si on appuis sur duwn on change de "fonction" en décrémentant pos
  if (digitalRead(down) and pos > 1) {if (!ardown){ pos--; ardown=1;}
  } else ardown=0;// ardonw bloque le changement tant qu'on n'a pas relaché le bouton down
 
}    
    

j'ai mis "fonction" entre guillemets dans les com car setup() ou loop() sont elles de vraie fonctions

 
« Last Edit: December 10, 2013, 02:53:53 am by fifi82 » Logged

Belgium
Offline Offline
Full Member
***
Karma: 1
Posts: 146
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Il serait intéressant d'utiliser un registre à décalage 74HC595 (pour sortir les 8 bits) suivi ULN2003 (pour commander des relais ). Surtout si on veut plus tard ajouter un afficheur LCD: on risque d'être à court de pins de sorties de l'Arduino.
A+
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis vraiment curieuse de voir en quoi ils vont transformer les goto. smiley-razz

Tu es vraiment incurable. Avec toi c'est "le Basic ou la mort".
Les goto se remplacent par des appels de fonctions. tu remplaces goto F1 par funcF1().
Et tu mets le code des fonctions dans une fonction. Même en Basic quand on ne code pas avec les pieds c'est ce que l'on fait.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3648
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il serait intéressant d'utiliser un registre à décalage 74HC595 (pour sortir les 8 bits) suivi ULN2003 (pour commander des relais ). Surtout si on veut plus tard ajouter un afficheur LCD: on risque d'être à court de pins de sorties de l'Arduino.

8 relais + 2 bouton + un LCD ça rentre (16 pins)

pour la prog :

Code:
#define BoutonUP 11
#define BoutonDOWN 12

const byte Fonction[] ={0b00000011,0b00001100,0b001100000,0b11000000,0b10000001}; //arbitraire
const byte Pins[] = {3,4,5,6,7,8,9,10}; // à adapter suivant branchement des relais

int i,x;

void setup() {

for(i=0;i<8;i++){
pinMode(Pins[i],OUTPUT);
}

pinMode(BoutonUP,INPUT_PULLUP);
pinMode(BoutonDOWN,INPUT_PULLUP);

}

void loop() {

if(digitalRead(BoutonUP)==LOW || digitalRead(BoutonDOWN)==LOW) {

digitalRead(BoutonUP)==LOW?x++:x--;
if(x>5)x=0;
if(x<0)x=5;

for(i=0;i<8;i++) {

digitalWrite(Pins[i],(1&Fonction[x]>>i));

}

while(digitalRead(BoutonUP)==LOW || digitalRead(BoutonDOWN)==LOW); //tant qu'un bouton est appuyé

delay(50); // suppression des effets de rebond
}

}
« Last Edit: December 11, 2013, 02:11:48 am by B@tto » Logged


Offline Offline
God Member
*****
Karma: 6
Posts: 534
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

à: fdufnews. Merci, c'est tout ce que je voulais savoir. smiley-razz
Mais tu vois, ce qui manque, pour  vulgariser le "C"; c'est un tuto, qui serait toutes les erreurs de syntaxe les plus courantes, et ce qu'elles génère comme message.
Parce que perso, le débuggeur me sort des fois des trucs qui me laissent perplexe.
Comme "constructor/destructor"... Je m'attends à me prendre un "Terminator" dans la face  un de ces quatre.
Il y a aussi les "types" qui ne sont pas de la bonne "ethnie";  il faut alors faire une analyse du génome; et va trouver un labo ouvert un Dimanche...
à: B@tto. C'est beau !!! smiley-razz
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

à: fdufnews. Merci, c'est tout ce que je voulais savoir. smiley-razz
Mais tu vois, ce qui manque, pour  vulgariser le "C"; c'est un tuto, qui serait toutes les erreurs de syntaxe les plus courantes, et ce qu'elles génère comme message.
Parce que perso, le débuggeur me sort des fois des trucs qui me laissent perplexe.
Comme "constructor/destructor"... Je m'attends à me prendre un "Terminator" dans la face  un de ces quatre.
Il y a aussi les "types" qui ne sont pas de la bonne "ethnie";  il faut alors faire une analyse du génome; et va trouver un labo ouvert un Dimanche...
Un peu de lecture pour toi (et d'autres)
http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c
https://www.rocq.inria.fr/secret/Matthieu.Finiasz/teaching/ENSTA/IN101%20-%20poly%20C.pdf
Evidemment c'est "cours" sont orientés C (le vrai). Le "langage arduino" repose sur un sous-ensemble du C (et du C++) et il prend quelques libertés avec le standard dans le but de simplifier son l'utilisation par les profanes.

Concernant les messages retournés par le compilateur. Il n'y a qu'une règle à connaitre:
L'erreur est sur la ligne indiquée OU SUR LES LIGNES PRECEDENTES.
Ensuite faut chercher.
Logged

Offline Offline
God Member
*****
Karma: 6
Posts: 534
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un lien...Du lien...Des liens...Thank you man !
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir tous,
Merci pour vos reponses respectives et vos exemples.
Je vais interfacer tout ca ce weekend, essayer ce que vous m avez passe, et vous tiendrai au ju.
Je retiens que ca tient dans le uno, c est deja pas mal.
Pour super cinci, cest quoi le IDE?... et pour le C ca va une autre paire de manches, car a part ce besoin, j ai rien d autre, et de plus je ne suis pas un softeux...
@@@@+++++
Logged

Offline Offline
God Member
*****
Karma: 6
Posts: 534
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'IDE, c'est la fenêtre qui s'ouvre quand tu double clique sur l'icone "Arduino.exe" (faut pas être préssé); fenêtre dans laquelle tu va coller  le code l'orfèvrerie de B@tto. Que tu "téléversera" dans la carte; après l'avoir "sauver sous". Le fichier sera dans un dossier du même nom dans le dossier "Arduino" qui a été crée dans "tes documents" (Windoze), à l'installation.
Note: Dans la fenêtre  (IDE) d'Arduino, ( "Outils/portSérie") tu peux contôler que ton port est le même que dans: Clic droit sur poste de travail/Propriétés/Matériel/Gestionaire des périphériques/Ports(Com et LPT).(pour Windoze.)
Note: Que si tu a autre chose de branché sur ton USB (ex: clé 3G ou autre qui tourne en tâche de fond, c'est à dire débranchée mais application non "quittée") tu peux avoir un pb de conflit.(c'est du vécu.)
Logged

Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1250
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
Pour super cinci, cest quoi le IDE?... et pour le C ca va une autre paire de manches, car a part ce besoin, j ai rien d autre, et de plus je ne suis pas un softeux...
@@@@+++++
IDE pour integrated development environment.
Ou si tu préfères c'est arduino qui te permet d'écrire tes programmes.
@+
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Offline Offline
God Member
*****
Karma: 6
Posts: 534
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il me semble que dans le code de B@tto:
Dans la while le: (bouton) doit être: (boutonUp). Ou me trompe-je ?
« Last Edit: December 10, 2013, 05:57:13 pm by Carolyne » Logged

Moselle (FR)
Offline Offline
Edison Member
*
Karma: 16
Posts: 1250
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
Il me semble que dans le code de B@tto:
Dans la while le: (bouton) doit être: (boutonUp). Ou me trompe-je ?
Oui et non, tu as le choix  smiley-mr-green
Si ton BP est câblé entre la pin et gnd alors actif à LOW
Si ton BP est câblé entre la pin et +5V alors actif à HIGH
Tout est une question de référentiel
@+
 
Logged

2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

Pages: [1] 2 3 ... 5   Go Up
Jump to: