Pages: [1] 2   Go Down
Author Topic: dessine moi un m0u10n  (Read 1524 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

amis du duino bonjour,

ce post aurait pu être à la suite de mon post sur les led mais il peut aussi tout a fait faire l'objet d'un fil de discussion.

si tu veux pas tout lire, vas au fond
voici du code destiné à allumer et éteindre une led

Code:
void setup()


         
  // initialize the digital pin as an output.
 
  pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);


}


void loop()

{
//allume eteins led 13


  digitalWrite(13, HIGH);   // set the LED on
  delay(50);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(50);              // wait for a second


}


je prends ce code, admetons que je copie colles et que je le modifie avec les valeurs pour la led 12


Code:

//allume eteins led 12

digitalWrite(12, HIGH);   // set the LED on
  delay(50);              // wait for a second
  digitalWrite(12, LOW);    // set the LED off
  delay(50);              // wait for a second


super ma question est la suivante:

comment fait on pour creer un bout de code et le mettre dans une """"function""" ou qqch comme ça, de manière à pouvoir l'appeller quand bon me semble



si par exemple je créé une fonction qui sappelle led 13 qui a pour action allume eteint led 13, puis une autre fonction led 12 (allume etein led 12), puis je ferai pareil pour les autres, 11, 10 ,9 etc...

comment juste l'apeller, comme ça je peux plus facilement creer des combinaisons.


j'espere que ma question est claire.







en gros si tu veux pas lire =====> comment creer une fonction qui execute du code lorsqu'on l'apelle.

 
merki



« Last Edit: July 06, 2011, 08:28:44 am by vj_muddy » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
void setup() { 
   pinMode(13, OUTPUT);
   pinMode(12, OUTPUT);
}

void loop() {
  led12();
  led13();
}

void led13() {
  digitalWrite(13, HIGH); 
  delay(50);
  digitalWrite(13, LOW);
  delay(50);
}

void led12() {
  digitalWrite(12, HIGH);
  delay(50);       
  digitalWrite(12, LOW);   
  delay(50);
}

http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
God Member
*****
Karma: 5
Posts: 687
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut
J'aurai pas fait mieux  smiley-wink

@+
Logged

The truth is elsewhere !!

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-roll-blue ben oauis logique et simple smiley

merci

cool... maintenant attention niveau 2 de difficulté!

if j'appuies sur un bouton poussoir alors led 1
if j'appuies sur bouton poussoir a nouveau alors led 2
if j'appuies one again sur bouton poussoir, alors eteint.

ça s'ecrit betement

if (){

led1()}

if (){
led2()
}

bon il faut aussi venir seter la fonction btn poussoir
????
« Last Edit: July 06, 2011, 09:03:45 am by vj_muddy » Logged

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

Il te faut un flag comme on dit, ça donne un truc genre :

int flag=0;

void loop(){
if (digitalread(9)==HIGH && flag ==0) {
led1();
flag++;
}

if (digitalread(9)==HIGH && flag ==1) {
led2();
flag++;
}

if (digitalread(9)==HIGH && flag ==2) {
ledoff();
flag=0;
}
}
Logged


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

J'oubliais : faudra surement mettre des delay() après chaque appuie, pour éviter de balayer les 3 fonctions en même temps
Logged


Offline Offline
God Member
*****
Karma: 5
Posts: 687
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir
personnellement je ferai une interruption sur appui d'un bouton ==> increment d'un compteur et un switch case !

@+
Logged

The truth is elsewhere !!

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir
personnellement je ferai une interruption sur appui d'un bouton ==> increment d'un compteur et un switch case !

Les grands esprits se rencontrent ^^

Code:
byte cmp =0; // compteur d'index

void setup(){
pinMode(9,INPUT); // bouton poussoir
pinMode(10,OUTPUT); // led 1
pinMode(11,OUTPUT); // led 2
}

void loop(){
if(digitalRead(9) == HIGH){
switch(cmp){
case 0:
led1();
cmp++;
break;
case 1:
led2();
cmp++;
break;
case 2:
cmp =0;
break;
}
}
delay(500); // anti rebond
}

void led1(){
  digitalWrite(10, HIGH);  
  delay(50);
  digitalWrite(10, LOW);
  delay(50);
}

void led1(){
  digitalWrite(11, HIGH);  
  delay(50);
  digitalWrite(11, LOW);
  delay(50);
}

ou pour les fou du c++

Code:
byte cmp =0; // compteur d'index

void setup(){
pinMode(2,INPUT); // bouton poussoir
             digitalWrite(2,HIGH); // pull-up
pinMode(10,OUTPUT); // led 1
pinMode(11,OUTPUT); // led 2
             attachInterrupt(0,trigger, FALLING);
}

void loop(){

}

void trigger(){
if(digitalRead(9) == HIGH){
switch(cmp){
case 0:
led1();
cmp++;
break;
case 1:
led2();
cmp++;
break;
case 2:
cmp =0;
break;
}
}
delay(500); // anti rebond
}

void led1(){
  digitalWrite(10, HIGH);  
  delay(50);
  digitalWrite(10, LOW);
  delay(50);
}

void led1(){
  digitalWrite(11, HIGH);  
  delay(50);
  digitalWrite(11, LOW);
  delay(50);
}
« Last Edit: July 06, 2011, 10:00:40 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

yéééééééééé, alors super phase finale avant finalisation du projet...
j'ai placé un  piezzo sur ma paroi, et j'aimerais éventuellement un micro....

priorité piezzo....

alors comme vous m'avez expliqués, je peux changer mes sequences avec un bouton poussoir mais là ce serait cool avec un piezzo.

quand je frappe sur mon piezzo, hop ça changerais de séquence.

j'ai lu un peu de doc sur le sujet, j'ai vu qu'il fallait régler un threshold...

niveau brochage le fil rouge de mon piezzo (+)... sur un pin en analog in
et le noir (-) sur le gnd de mon arduino... non de mon supeeeeer arduino




ensuite micro


ce serait hyper cool d'avoir ma voix, ou un son en entrée micro qui fais vu metre avec mes leds...

plus y a de son plus j'augmente l'intensité de mes leds... qq à un exemple de ça.


sumarize...

comment parametrer piezzo pour switch de sequence.

comment micro in ===> vu metre


j'ai bien trouvé ça mais ça balance un string via un port... moi juste lancer une sequence me convient


http://www.arduino.cc/en/Tutorial/KnockSensor
« Last Edit: July 10, 2011, 01:41:54 pm by vj_muddy » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

priorité piezzo....

alors comme vous m'avez expliqués, je peux changer mes sequences avec un bouton poussoir mais là ce serait cool avec un piezzo.

quand je frappe sur mon piezzo, hop ça changerais de séquence.

j'ai lu un peu de doc sur le sujet, j'ai vu qu'il fallait régler un threshold...

niveau brochage le fil rouge de mon piezzo (+)... sur un pin en analog in
et le noir (-) sur le gnd de mon arduino... non de mon supeeeeer arduino
http://www.arduino.cc/en/Tutorial/Knock
http://www.arduino.cc/en/Tutorial/KnockSensor
Tu trouvera ton bonheur avec ces deux liens.

ensuite micro

ce serait hyper cool d'avoir ma voix, ou un son en entrée micro qui fais vu metre avec mes leds...

plus y a de son plus j'augmente l'intensité de mes leds... qq à un exemple de ça.
La réponse à tout les projets: sonelec-musique.com !
http://www.sonelec-musique.com/electronique_realisations_vumetre_007.html


comment parametrer piezzo pour switch de sequence.
tu utilise l'exemple knock pour détecter l'impact sur le piezo puis tu lance une fonction (if(knock == blabla) faireQuelquechose()smiley-wink comme si c'etait un bouton en fait.
L'utilisation d'un micro directement avec un arduino n'est pas vraiment possible (sauf FFT et encore).

j'ai bien trouvé ça mais ça balance un string via un port... moi juste lancer une sequence me convient

http://www.arduino.cc/en/Tutorial/KnockSensor
Code:
#define THRESHOLD 100
#define SENSOR A0

void setup() {
}

void loop() {
  if (analogRead(SENSOR) >= THRESHOLD) {
    faireQuelqueChose();
  }
}

faireQuelqueChose(){
  // TODO
}
C'était pourtant pas compliquer smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci à toi, j'ai essayé de compiller le code, il me dit que je dois typer le fairequelquechose...

du coup j'ai fais ça :

Code:
#define THRESHOLD 100
#define SENSOR A0




void setup() {
 
  pinMode(12, OUTPUT);
}

void loop() {
  if (analogRead(SENSOR) >= THRESHOLD) {
   digitalWrite(12, HIGH);
  }
}


mais ma led reste allumée quoi qu'il arrive...
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

merci à toi, j'ai essayé de compiller le code, il me dit que je dois typer le fairequelquechose...

du coup j'ai fais ça :

Code:
#define THRESHOLD 100
#define SENSOR A0

void setup() {
  
  pinMode(12, OUTPUT);
}

void loop() {
  if (analogRead(SENSOR) >= THRESHOLD) {
   digitalWrite(12, HIGH);
  }
}


mais ma led reste allumée quoi qu'il arrive...

Normal smiley-wink la fonction fairequelquechose c'est toi qui doit la crée smiley-wink et pour ton code il fait ce qu'on lui dis, si il detecte un knock il alume la led point, rien ne lui dit de l'eteindre donc elle reste alumé.

Code:
#define THRESHOLD 100
#define SENSOR A0

void setup() {
}

void loop() {
  if (analogRead(SENSOR) >= THRESHOLD) {
    faireQuelqueChose();
  }
}
 
/* exemple */
void faireQuelqueChose(){
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(12, LOW);
}
« Last Edit: July 11, 2011, 01:37:26 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thks,

mais dans l'exemple que tu cite :

/* exemple */
void faireQuelqueChose(){
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(12, HIGH);


c''est pas plutot delay 500 puis digital write (12, LOW)?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

thks,

mais dans l'exemple que tu cite :

/* exemple */
void faireQuelqueChose(){
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(12, HIGH);


c''est pas plutot delay 500 puis digital write (12, LOW)?
DOH! oui smiley-red

Edit : j'ai fait la modif smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hey hey heyyyyy, salut à tous, alors me revoilà moi, mon pc et mon duino  smiley-mr-green


grace à votre aide, j'ai pu réaliser mon super interrupteur piezzo.

avec ce code :


Code:
#define THRESHOLD 100
#define SENSOR A0

void setup() {
}

void loop() {
  if (analogRead(SENSOR) >= THRESHOLD) {
    faireQuelqueChose();
  }
}
 
/* exemple */
void faireQuelqueChose(){
  digitalWrite(12, HIGH);
  delay(500);
  digitalWrite(12, LOW);
}



bien maintenant j'aimerais combiner ceci avec l'explication qui m'a été donné sur l'interrupteur avec compteur d'index, dans l'exemple si la pin d'entrée 9 est en position high, alors executer le reste de la commande.


Code:
byte cmp =0; // compteur d'index

void setup(){
pinMode(9,INPUT); // bouton poussoir
pinMode(10,OUTPUT); // led 1
pinMode(11,OUTPUT); // led 2
}

void loop(){
if(digitalRead(9) == HIGH){
switch(cmp){
case 0:
led1();
cmp++;
break;
case 1:
led2();
cmp++;
break;
case 2:
cmp =0;
break;
}
}
delay(500); // anti rebond
}

void led1(){
  digitalWrite(10, HIGH); 
  delay(50);
  digitalWrite(10, LOW);
  delay(50);
}

void led1(){
  digitalWrite(11, HIGH); 
  delay(50);
  digitalWrite(11, LOW);
  delay(50);
}

mais etant donné qu'ici, si le thersold est supérieur ou = à 100, alors il effectue """faire quelquechose"""; j'aimerais remplacer le code qui dit if digital read = high alors blabla bla, est ce que je peux dire, if fairequelquechose == true, alors blabla bmla?



en gros je veux qu'a chaque hit de piezzo, lancer une fonction diferente,


à bientot!
Logged

Pages: [1] 2   Go Up
Jump to: